ACM模式基础输入-python

文章介绍了在牛客竞赛中的编程练习,主要涉及不同输入格式的处理(如整数加法、字符串排序),以及如何在Python中使用sort和sorted函数进行就地排序和创建新列表排序。
摘要由CSDN通过智能技术生成

基于:牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ

输出一般print

数组输入以 a+b 为例

1不给输入行数,每行以字符串形式

import sys
if __name__ == '__main__':
    for line in sys.stdin:
        # 分割每行输入的两个数字
        a, b = line.split()
        # 计算和并输出
        output = int(a) + int(b)
        print(output)

2第一行给输入行数(输入数组数),每行以字符串形式

if __name__ == '__main__':
    # 先读行数参数,后面循环用
    t = int(input())
    for i in range(t):
        #每行直接input()
        nums = input().split(" ")
        res = int(nums[0]) + int(nums[1])
        print(res)

3不给输入行数,但给终止条件

思路:需要设置终止条件作为跳出循环的条件,其余同上

if __name__ == "__main__":
    # 循环,为终止条件服务
    while True:
        nums = input().split(" ")
        # 终止条件,防止死循环 (此处 0 0 终止)
        if int(nums[0]) == 0 and int(nums[1]) == 0:
            break
        print(int(nums[0]) + int(nums[1]))
    

4 不给行数,每行第一个数为该行整数数目,给终止条件

import sys
if __name__ == '__main__':
    for line in sys.stdin:
        data = line.split()
        if data[0] == "0" :
            break
        res = 0
        for i in range(1, int(data[0])+ 1):
            res += int(data[i])
        print(res)
                

5给行数,每行第一个数为该行整数数目,无终止条件

if __name__ == "__main__":
    n = int(input())
    for i in range(n):
        res = 0
        # 字符串转化数组通式
        nums = list(map(int, input().split()))
        for j in range(1, nums[0]+ 1):
            res += nums[j]
        print(res)

6不给行数,每行第一个数为该行整数数目,无终止条件

主要解决 出现EOFError

if __name__ == '__main__':
    while True:
        try:
            tmp = list(map(int, input().split()))
            print(sum(tmp[1:tmp[0] + 1]))
        except EOFError:
            break

7 不给行数 字符串传入 不给终止条件

if __name__ == '__main__':
    while True:
        try:
            tmp = list(map(int, input().split()))
            res = 0
            for i in range(len(tmp)):
                res += tmp[i]
            print(res)
        except EOFError:
            break

字符串输入以字符串排序题为例

插入:

在Python中,sortsorted都是用于对序列进行排序的,但它们之间有一些关键的区别:

sort

  • sort 是列表(list)类型的一个方法,它会就地(in-place)对列表进行排序,也就是说它直接修改了原列表,不返回任何值(准确地说,它返回None)。
  • 使用例子:
    my_list = [3, 1, 4, 1, 5, 9, 2] 
    my_list.sort() 
    print(my_list) # 输出已排序的列表 

sorted

  • sorted 是一个内置函数,可以对任何可迭代的对象进行排序,包括列表、元组、字典等,它不会修改原对象,而是返回一个新的排好序的列表。
  • sorted 对原有数据没有影响,适合用于不想改变原来数据顺序的场景。
  • 使用例子:
    my_tuple = (3, 1, 4, 1, 5, 9, 2) 
    sorted_tuple = sorted(my_tuple) 
    print(sorted_tuple) # 输出新的排序列表,原元组不变 

关键区别总结

  • 修改原数据 vs 返回新数据sort 会修改原列表,而 sorted 会创建一个新的排序后的列表,原数据结构不变。
  • 方法 vs 函数sort 是列表的一个方法,只能用于列表;而 sorted 是Python的内置函数,可以对任何可迭代对象进行排序。
  • 返回值sort 方法没有返回值(或者说返回None),因为它修改的是原列表;sorted 函数返回一个新的排序后的列表。

1 输入有两行,第一行n,第二行n个字符串,空格隔开;输出空格隔开

if __name__ == "__main__":
    a = int(input())
    a_str = input().split()
    a_str = sorted(a_str)  
    # 空格输出通式
    print(" ".join(a_str).strip())

2无行数,每行n个字符串,空格隔开;输出空格隔开

if __name__ == '__main__':
    while True:
        try:
            a_str = input().split(" ")
            a_str = sorted(a_str)
            print(" ".join(a_str).strip())
        except EOFError:
            break

3 同2,但都用‘,’隔开

if __name__ == '__main__':
    while True:
        try:
            a_str = input().split(",")
            a_str = sorted(a_str)
            print(",".join(a_str).strip(","))
        except EOFError:
            break

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值