我知道这是一个非常基本的程序,但我收到的列表错误超出范围。这是程序将两个数字作为命令行参数(在调用脚本时)和显示总和(使用python):
import sys
a= sys.argv[1]
b= sys.argv[2]
sum=str( a+b)
print " sum is", sum
答案 0 :(得分:5)
你应该这样做:
import sys
a, b = sys.argv[1:2]
summ = int(a) + int(b)
print "sum is", summ
打印整数时不需要str()。但是如果要将a和b添加为整数,则应使用int()。
答案 1 :(得分:3)
错误list index out of range
表示您正在尝试访问超出列表范围的列表项。
示例:
>>> mylist = ['hello', 'world']
>>> print mylist[2]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
在您的情况下,错误来自sys.argv[1]
或sys.argv[2]
。
确保从命令行实际传递给程序。
答案 2 :(得分:3)
假设您的输入是整数:
import sys
summ = sum(map(int,sys.argv[1:])
print "sum is ", summ
或
import sys
summ = sum(int(i) for i in sys.argv[1:])
print "sum is ", summ
如果没有,请将int更改为float。
第二种方法可能更加pythonic,但第一种方法在这种情况下要快一点。
>>>import timeit
>>>t1 = timeit.Timer("sum(map(int,['3','5','7','9']))")
>>>t2 = timeit.Timer("sum(int(i) for i in ['3','5','7','9'])")
>>>print t1.timeit()
3.0187220573425293
>>>print t2.timeit()
3.4699549674987793
答案 3 :(得分:0)
su = int(a) + int(b)
print("sum is %d" % su)
你应该小心你的变量命名。 sum
影响内置函数,这样做不是一个好习惯(也就是说,不要将变量命名为内置函数或任何全局定义的名称)。
答案 4 :(得分:0)
如果您的错误“列表索引超出范围”,则问题是您的列表没有足够的项目。哪个清单?您使用的唯一列表是 sys.argv
,因此要填充它,您需要在命令行上传递更多项目。
或者,使用len(sys.argv)
检查参数列表的长度,并以交互方式提示(例如,使用raw_input()
)获取值,如果它们不在sys.argv
中。
答案 5 :(得分:0)
如果您希望将数字相加为浮点数,请使用“float”而不是“int”,如下面的代码段所示。
import sys
try:
a, b = sys.argv[1:3]
print "sum is ", float(a) + float(b)
except ValueError:
print "please give me two numbers to sum"
请注意浮点数与实数不同,这样您就可以获得看似“奇怪”的结果,网上有大量文档。
答案 6 :(得分:0)
感谢每一个人。我得到了答案
for i in range(1,51): 如果我%5 == 0: 打印我,“\ n” 其他: 打印我,