繁体   English   中英

python程序故障(2.7.10)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM