【发布时间】:2014-02-15 22:04:51
【问题描述】:
我是 Python 的初学者,我基本上是在尝试为自己制作一个基本的数学程序,并从一个两位数的加法程序开始,每次都带有随机问题,我什至设法把它搞砸了。每次我输入一个正确的答案时,它每次都说它不正确。代码如下:
import random
digit_one = random.randint(0,100)
digit_two = random.randint(0,100)
print "What is %s + %s?" % (digit_one, digit_two)
answer = digit_one + digit_two
userAnswer = raw_input()
if userAnswer == answer:
print "Well done that's correct!"
else:
print "That's incorrect!"
我正在使用 2.7 和内置的 IDLE IDE。我有一种感觉,我应该为此使用一个循环,尽管我知道如果我希望它继续重新加载问题,我以后必须使用一个循环。我会很感激任何帮助,谢谢。
【问题讨论】:
-
@Hyperboreus:见鬼。在字符串上调用
int。input是一个可怕的习惯。 -
@Hyperboreus 我不得不克制将您的评论标记为冒犯性的冲动……但说真的,不。请不要向初学者推荐诸如 python2s
input或eval的任何其他变体之类的东西,而不是非常清楚它所具有的所有安全性和性能影响。尤其是,不要在有完全安全、快速、可读且明显的方式来完成相同任务的情况下这样做(在这种情况下是int)。 -
@l4mpi “攻击性”?我得罪了谁?从我过去的回答中可以看出,我强烈反对使用
eval甚至literal_eval。我个人从不使用input(py2)。但是,在我看来,很多教程似乎都在使用它,因为大多数(或至少很多)初学者问题都使用它。所以我怀疑input在初学者中很常见,因为你的输入被很好地和神奇地解析了。后来开始学习类型、类型转换、自动装箱、比较、身份等……无意冒犯任何人。 -
@Hyperboreus “攻击性”部分并没有那么严重,因此之后的“但很严肃”。而被“冒犯”的目标群体将是 SO 上处理入门级 python 问题并告诉人们停止使用
input/eval一遍又一遍的每个人;)无论如何,你自相矛盾 - 如果你是强烈反对eval,为什么推荐使用它的input?特别是对于一个应该避免这种坏习惯的初学者。感觉就像一个 C 程序员,面对如何重复语句的问题,推荐goto而不是for... -
@l4mpi 感谢您的澄清。你说的对。我已删除违规评论。
标签: python python-2.7 conditional