x2 = (randint(0, 1000000))
y2 = (randint(0, 1000000))
ans2 = input("2. Answer to " + str(x2) + "-" + str(y2))
if ans2 == x2 - y2:
print("Correct!")
CorrectAns = CorrectAns + 1
else:
print("Wrong!")我的目标是:在没有用户输入2-2的情况下,提出问题I. 1-1,并使其正确。
如果被问到的人写的是2-2,这也是1-1的答案,那么计算机就会认为它是正确的。我怎么才能防止这件事?
发布于 2018-02-15 19:15:11
input(...)等同于Python2中的eval(raw_input(...)),因此您正在计算用户输入的内容。例如,输入'10 - 3'在评估后变成7。
使用raw_input将用户输入作为字符串,使用int内置的字符串将字符串转换为整数,然后检查是否为x2 - y2。
发布于 2018-02-15 19:17:40
获取输入作为原始输入,并将其与结果的字符串版本进行比较:
from random import randint
x2 = (randint(0, 1000000))
y2 = (randint(0, 1000000))
ans2 = raw_input("2. Answer to " + str(x2) + "-" + str(y2))
if ans2 == str(x2 - y2):
print("Correct!")
CorrectAns = CorrectAns + 1
else:
print("Wrong!")这样他们仍然可以输入你给他们的计算,但是它不会再被计算成一个数字了。通过将str与str进行比较,它们必须匹配确切的结果,如果您将输入转换为一个数字进行比较,您就可以绕过try: except:,防止文本输入。
而转换则比较宽容:
from random import randint
CorrectAns = 0
x2 = (randint(0, 1000000))
y2 = (randint(0, 1000000))
ans2 = raw_input("2. Answer to " + str(x2) + "-" + str(y2)+"\n")
try:
ansNum = int(ans2)
if ansNum == x2 - y2:
print("Correct!")
CorrectAns = CorrectAns + 1
else:
print("Wrong!")
except ValueError: # catch conversion errors if other things than int inputted
print("Wrong")https://stackoverflow.com/questions/48814613
复制相似问题