[英]Trouble with python program (2.7.10)
因此,我对python还是相当陌生,对于我的编程课程,我必须编写一个有关100米赛跑的程序,并根据完成比赛所需的时间告诉您是否合格。 如果您是男性,则需要花费超过10.18秒的时间; 那你就没有资格 如果您是女性,则花费了超过11.29秒的时间; 再一次,你没有资格。
我的问题是,无论您的时间是多少,两条消息都表明您是否合格。 我正在使用Python 2.7.10。 到目前为止,我的代码是:
gender = raw_input("Are you Male (M) or Female (F)?: ")
time = raw_input("What time did you get for the 100m race?: ")
if gender is "M" and time > 10.18:
print "Sorry, you did not qualify"
else:
print "Congratulations, you qualified!"
if gender is "F" and time > 11.29:
print "Sorry, you did not qualify"
else:
print "Congratulations, you qualified!"
Raw_input返回一个字符串。 您需要做time = float(raw_input("What time..."))
(请注意,python将允许您将字符串与浮点数进行比较,但它不会尝试将字符串转换为匹配项)
(编辑:正如在发布此文章时其他两个答案所指出的,您应该使用elif)
尝试使用Elif以获得更好的处理
if gender is "M" and time > 10.18:
print "Sorry, you did not qualify"
elif gender is "F" and time > 11.29:
print "Sorry, you did not qualify"
else:
print "Congratulations, you qualified!"
每个子句的else将始终运行,因为性别将始终与用户输入的内容相反。 您还需要将第二个输入强制转换为浮点值,以将值正确地与10.18或11.29比较。
要更正此问题(不进行重构):
gender = raw_input("Are you Male (M) or Female (F)?: ")
time = float(raw_input("What time did you get for the 100m race?: "))
if gender is "M" and time > 10.18:
print "Sorry, you did not qualify"
elif gender is "F" and time > 11.29:
print "Sorry, you did not qualify"
else:
print "Congratulations, you qualified!"
逐步执行逻辑。 让我们考虑一个时间为10秒的女性的示例:
第一个'if'出现为False,因为她是女性(False并且任何东西仍然为False,所以时间甚至都没有关系)。 因此,第一个“抱歉”消息不会被打印。
但是,因为,“如果”未执行中,“其他”紧随其后并得到执行,打印的消息。
这就是问题所在:仅仅因为某人不是失败的男性,并不意味着他们就是成功的男性。 我们以女性为例。
然后,在正确打印该消息,它会尝试一遍的女性谁失败的情况下,并打印你确实想要的消息。
您需要使程序的逻辑与实际情况的逻辑完全匹配。 因此,请仔细考虑在这种情况下哪些决策会影响其他哪些决策。
我将把确切的更改留给您,因为这很可能是您的老师希望您努力并找出来的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.