基于:牛客竞赛_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中,sort
和sorted
都是用于对序列进行排序的,但它们之间有一些关键的区别:
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