Raw_input()& input()在python 2.7中有不同的反应?

时间:2018-03-12 02:52:34

标签: python python-2.7 input

我已经尝试了这个代码的两个版本,最终都给了我不同的结果。有原因吗?

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)

3 个答案:

答案 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或输入列表,其类型也只是字符串。