我创建了一个作为计数器的基本功能。但是,对于我通过脚本传递的每个参数,需要使用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()
来使此脚本正常工作?
答案 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'