我正在通过艰难的方式学习python,并在练习33中获得额外的功劳2我试图利用其中一个raw_input或argv设置一个将在while循环中使用的变量:
# from sys import argv
# script, my_num = argv
def all_the_numbers(n):
"""increment by 1 up to limit n"""
i = 0
numbers = []
while i < n:
print "At the top i is %d" % i
numbers.append(i)
i = i + 1
print "Numbers now: ", numbers
print "At the bottom i is %d" % i
# print "Please enter an integer: "
# n = raw_input("#")
# n = my_num
n = 10
all_the_numbers(n)
Run Code Online (Sandbox Code Playgroud)
硬编码n = 10按预期工作; 打印线到10.但传递一个值作为my_num从argv和/或设定从变量raw_input增量向上导致环形整数.后两种设置变量的形式有什么不同,它们的行为与同一变量的硬编码设置完全不同?
该raw_input()函数返回一个字符串,而不是整数.尝试:
n = int(raw_input("#"))
Run Code Online (Sandbox Code Playgroud)
要么
n = int(my_num)
Run Code Online (Sandbox Code Playgroud)
这会将返回的字符串转换为函数所需raw_input()的整数all_the_numbers().
运算符<,>,==,> =,<=和!=比较两个对象的值.对象不必具有相同的类型.如果两者都是数字,则将它们转换为通用类型.否则,不同类型的对象总是比较不相等,并且一致但是任意地排序.
在您的情况下,数字和字符串是任意排序的,在您的情况下,<比较总是计算为True.程序员有责任确保这种比较的类型是兼容的.