为什么这个python while循环缺少逻辑运算符?

gon*_*nzo 1 python while-loop

我正在通过艰难的方式学习python,并在练习33中获得额外的功劳2我试图利用其中一个raw_inputargv设置一个将在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_numargv和/或设定从变量raw_input增量向上导致环形整数.后两种设置变量的形式有什么不同,它们的行为与同一变量的硬编码设置完全不同?

Gre*_*ill 5

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().

这是Python文档相关段落(强调我的):

运算符<,>,==,> =,<=和!=比较两个对象的值.对象不必具有相同的类型.如果两者都是数字,则将它们转换为通用类型.否则,不同类型的对象总是比较不相等,并且一致但是任意地排序.

在您的情况下,数字和字符串是任意排序的,在您的情况下,<比较总是计算为True.程序员有责任确保这种比较的类型是兼容的.