我已经尝试了这个代码的两个版本,最终都给了我不同的结果。有原因吗?
Raw_input()使程序进入无限循环; input()正常工作
numbers = []
increments = 1
def loop(i, dial):
while i < dial:
print "At the top i is %d" % i
numbers.append(i)
i += increments
print "Numbers now: ", numbers
print "At the bottom i is %d" % i
return
dial = raw_input('What is dial? ') # -Code goes berserck
#OR **dial = input('What is dial? ') -Code acts normal
loop(0, dial)
答案 0 :(得分:3)
BLUF :请求用户输入时,请勿在Python 2.7中使用input
。在存储用户输入的变量上使用raw_input
然后适当的强制转换(int()
,float()
等...)。
Python 2.7中的最新动态:
raw_input()
返回str
(即“hello world”)input()
是eval(raw_input())
的包装器,它试图找出str
代表的内容。 请勿使用它来解决您的问题。 如果我输入24
:
dial = raw_input('Dial: ') # '24'
dial = input('Dial: ') # 24
后者对eval
是“int
- uated”,因此您的while
将终止。否则,前者会尝试比较int
,看它是否小于永不终止的str
。
您需要做什么:dial = int(raw_input('Dial: '))
。
答案 1 :(得分:0)
input()
将评估用户的输入。因此,如果我输入5作为用户输入,input()
将让python知道用户输入5
实际上是一个整数。
raw_input()
不会这样做。它将接受用户输入的任何内容并将其变为字符串。因此,如果您使用5
,则用户输入"5"
将会raw_input()
。
答案 2 :(得分:-2)
input()
:解释和评估输入,这意味着如果用户输入整数,将返回一个整数,如果用户输入字符串,则返回字符串。
raw_input()
: raw_input()
完全接受用户输入的内容并将其作为字符串传回。它不解释用户输入。即使输入整数值10或输入列表,其类型也只是字符串。