Python输入永远不会等于整数

时间:2016-09-29 16:14:20

标签: python

我想插入一个号码,如果我输入除4以外的任何号码,它会告诉我这是错的,但如果它是假的,它会告诉我“gg你赢了,noob。”。但是,当我插入4时,它告诉我这是不正确的。

x = input("Insert a numer: ")

while x != 4:
   print("incorrect")
    x =input("Insert another number: ")

if x == 4:
    print("gg you win, noob")

5 个答案:

答案 0 :(得分:3)

在Python 3+中,input返回一个字符串,4不等于'4'。你必须修改为:

while x != '4':

或者使用int,如果输入不是int,请小心检查ValueError

答案 1 :(得分:1)

input()的结果将是一个字符串,您需要在比较它之前将其转换为整数:

x = int(input("Insert another number: ")

如果您的输入不是数字,则会引发ValueError

答案 2 :(得分:0)

此处,if x == 4不是必需的。因为在x等于4之前,while循环才会被传递。你可以尝试这样:

x = int(input("Insert a numer: "))
while x != 4:
    print("incorrect")
    x = int(input("Insert another number: "))

print("gg you win, noob")

答案 3 :(得分:0)

Python 2和3在函数input()中有所不同。

  • 在Python 2中,input()相当于eval(raw_input())
  • 在Python 3中,没有raw_input(),但input()的工作方式与Python 2 raw_input()类似。

在你的情况下:

  • 在Python 2中,input()4提供了int类型,因此您的程序可以运行。
  • 在Python 3中,input()'4'提供了str类型,因此您的程序存在错误。

在Python 3中,解决此问题的一种方法是使用eval(input())。但是对不受信任的字符串使用eval是非常危险的(是的,你的程序在Python 2中危险地工作)。所以你应该先验证输入。

答案 4 :(得分:0)

试试这个:

    z = 0
while z != "gg you win, noob":
    try:
       x = int(input("Insert a numer: "))
       while x != 4:
           print("incorrect")
           x =int(input("Insert another number: "))

       if x == 4:
            z = "gg you win, noob"
            print(z)

    except:
        print('Only input numbers')

这会将您的所有输入值转换为整数。如果您不输入整数,except语句将提示您仅输入数字,while True循环将从头开始重复您的脚本,而不是引发错误。