为什么我的脚本需要int()?

时间:2015-09-11 17:05:40

标签: python string shell python-2.7 integer

我创建了一个作为计数器的基本功能。但是,对于我通过脚本传递的每个参数,需要使用int()将变量转换为整数。

" fun_loop(n,b)" require int()。

r = requests.get('http://github.com/', allow_redirects=False)
r.status_code  # 302
r.url  # http://github.com, not https.
r.headers['Location']  # https://github.com/ -- the redirect destination

如果我在变量上运行没有int()的代码,那么我要么......

无限循环 - 如果我在没有from sys import argv script, max_number, increment = argv def fun_loop(n, b): i = 0 numbers = [] while i < int(n): print "At the top i is %d" % i numbers.append(i) i = i + int(b) print "Numbers now: ", numbers print "At the bottom i is %d" % i print "The numbers: " for num in numbers: print num print "We can just give the numbers directly" fun_loop(6, 1) print "Or we can use variables from our script" fun_loop(max_number, increment)

的情况下传递变量n

int() - 如果我在没有TypeError: unsupported operand的情况下传递变量b

如何在传递每个变量时不必使用int()来使此脚本正常工作?

1 个答案:

答案 0 :(得分:4)

因为sys.argv列表的元素都是字符串,所以

你可以在将它们传递给函数之前将它们转换为整数

max_number, increment = map(int, argv[1:])
fun_loop(max_number, increment)

具体来说,你得到一个无限循环,因为整数在Python 2中的其他所有内容之前排序:

>>> 1 < '1'
True

你获得TypeError,因为在整数上使用+并且字符串在Python中不是有效的操作:

>>> 0 + '1'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'