我有一个练习,输入数据将包含第一行中要处理的对的总数。 以下行将包含自身对 - 每行一对。 答案应包含以空格分隔的结果。 我的代码:
n = int(raw_input())
sum = 0
for i in range(n):
y = raw_input().split(" ")
for i in y:
sum = sum + int(i)
print sum
使用我的代码,我将Sum一起来,但我会将结果以空格分隔。谢谢你的帮助。
答案 0 :(得分:0)
哦,看起来你在内循环中重复使用相同的变量i
作为外循环 - 这是不好的做法,可能会导致错误。
您目前正在做的是在每对中添加两个元素进行求和,然后在最后打印,您可以通过两种不同的方式解决此问题。
您可以对每一对求和,将和转换为字符串,然后将其余的和作为字符串连接,或者
您可以在使用print sum,
对它们进行求和后立即打印每对的总和,这将打印不带换行符的数字,以便您可以在一行上打印所有结果。
答案 1 :(得分:0)
使用您当前的代码得到的是所有给定数字的总和,得到在外循环中初始化计数器所需的每行总和,然后打印它,并且因为您想要打印所有它在同一行中有几种方法可以执行此操作,例如将其保存在列表中或告诉print不要打印新的行,该行通过在末尾添加,
来完成与print x,
一样,考虑到这一点,所需的更改是
n = int(raw_input())
for i in range(n):
pairs = raw_input().split() #by default split use spaces
pair_sum = 0
for p in pairs:
pair_sum += int(p) # a += b is the same as a = a + b
print pair_sum,
print "" # to print a new line so any future print is not done in the same line as the previous one
这是每行打印的版本,接下来是使用列表的版本
n = int(raw_input())
resul_per_line = []
for i in range(n):
pairs = raw_input().split() #by default split use spaces
pair_sum = 0
for p in pairs:
pair_sum += int(p) # a += b is the same as a = a + b
resul_per_line.append( str(pair_sum) ) #conver each number to a string to use with join bellow
print " ".join(resul_per_line)
使用上述任何一个,例如说输入数据是
3
1 2
40 50
600 700
然后结果将是
3 90 1300
使用built in和map
之类的sum
函数可以简化上述代码的某些部分,例如此部分
pair_sum = 0
for p in pairs:
pair_sum += int(p)
可以成为
pair_sum = sum( map(int,pairs) )