首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python2.7.10:如何通过输入等式而不是整数来阻止用户利用输入?

Python2.7.10:如何通过输入等式而不是整数来阻止用户利用输入?
EN

Stack Overflow用户
提问于 2018-02-15 19:10:46
回答 2查看 362关注 0票数 2
代码语言:javascript
运行
复制
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的答案,那么计算机就会认为它是正确的。我怎么才能防止这件事?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-15 19:15:11

input(...)等同于Python2中的eval(raw_input(...)),因此您正在计算用户输入的内容。例如,输入'10 - 3'在评估后变成7

使用raw_input将用户输入作为字符串,使用int内置的字符串将字符串转换为整数,然后检查是否为x2 - y2

票数 4
EN

Stack Overflow用户

发布于 2018-02-15 19:17:40

获取输入作为原始输入,并将其与结果的字符串版本进行比较:

代码语言:javascript
运行
复制
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:,防止文本输入。

而转换则比较宽容:

代码语言:javascript
运行
复制
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")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48814613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档