Answers:
使用raw_input()
代替input()
:
testVar = raw_input("Ask user for something.")
input()
实际上将输入评估为Python代码。我建议不要使用它。 raw_input()
返回用户输入的逐字字符串。
input
现在都可以这样工作,并且raw_input消失了。
input()
有用的功能,因此不建议使用它。
我们可以raw_input()
在Python 2和input()
Python 3中使用该函数。默认情况下,输入函数采用字符串格式的输入。对于其他数据类型,您必须强制转换用户输入。
在Python 2中,我们使用raw_input()
函数。它等待用户键入一些输入并按下,return
然后我们需要通过将其强制转换为所需的数据类型来将值存储在变量中。使用类型转换时要小心
x = raw_input("Enter a number: ") #String input
x = int(raw_input("Enter a number: ")) #integer input
x = float(raw_input("Enter a float number: ")) #float input
x = eval(raw_input("Enter a float number: ")) #eval input
在Python 3中,我们使用input()函数返回用户输入值。
x = input("Enter a number: ") #String input
如果输入字符串,则为int,float,eval,它将作为字符串输入
x = int(input("Enter a number: ")) #integer input
如果输入用于int cast的字符串 ValueError: invalid literal for int() with base 10:
x = float(input("Enter a float number: ")) #float input
如果输入用于float转换的字符串 ValueError: could not convert string to float
x = eval(input("Enter a float number: ")) #eval input
如果输入用于eval cast的字符串,那么NameError: name ' ' is not defined
这些错误也适用于Python 2。
testVar = raw_input("Ask user for something.")
我的修正工作代码:
import random
import math
print "Welcome to Sam's Math Test"
num1= random.randint(1, 10)
num2= random.randint(1, 10)
num3= random.randint(1, 10)
list=[num1, num2, num3]
maxNum= max(list)
minNum= min(list)
sqrtOne= math.sqrt(num1)
correct= False
while(correct == False):
guess1= input("Which number is the highest? "+ str(list) + ": ")
if maxNum == guess1:
print("Correct!")
correct = True
else:
print("Incorrect, try again")
correct= False
while(correct == False):
guess2= input("Which number is the lowest? " + str(list) +": ")
if minNum == guess2:
print("Correct!")
correct = True
else:
print("Incorrect, try again")
correct= False
while(correct == False):
guess3= raw_input("Is the square root of " + str(num1) + " greater than or equal to 2? (y/n): ")
if sqrtOne >= 2.0 and str(guess3) == "y":
print("Correct!")
correct = True
elif sqrtOne < 2.0 and str(guess3) == "n":
print("Correct!")
correct = True
else:
print("Incorrect, try again")
print("Thanks for playing!")
该问题似乎在Python 3.4.2版中已解决。
testVar = input("Ask user for something.")
将正常工作。
input
等同于Python 2.x raw_input
(请参阅docs.python.org/3.0/whatsnew/3.0.html#builtins);这是2.x特有的问题。
input
自动调用eval()