2016-09-29 58 views
1

我想插入一个数字,如果我放入除4以外的任何数字,它会告诉我这是错误的,但如果它是假的,它会告诉我“gg you win,noob。”。但是,当我插入4时,它告诉我这是不正确的。Python输入永远不会等于一个整数

x = input("Insert a numer: ") 

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

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

Python 2或Python 3? –

+0

他正在谈论3的公平假设,因为这个工作在2. – brianpck

+1

@brianpck这是一个公平的假设,但我不会说它确切地说是_“作品”_在2.代码是错误的任何一种方式,但有一个不同的问题。 – zvone

回答

3

在Python 3+,input返回一个字符串,4不等于'4'。你将不得不修改到:

while x != '4': 

或选择使用int,小心翼翼地检查一个ValueError如果输入的是不是一个int。

+1

Python 2 vs 3:http://stackoverflow.com/questions/3800846/differences-between-input-and-raw-input – brianpck

1

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

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

这将引发ValueError如果输入是不是数字。

0

这里,if x == 4是没有必要的。因为直到x等于4while循环将不会通过。你可以尝试这样的:

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

print("gg you win, noob") 
0

Python 2和3的功能input()不同。

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

你的情况:

  • 在Python 2,input()给你4int类型,所以你的程序工作。
  • 在Python 3中,input()给你'4'的类型str,所以你的程序是越野车。

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

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循环将从头开始重复您的脚本,而不是产生错误。