python程序的麻烦(2.7.10)

时间:2015-10-02 14:58:58

标签: python if-statement printing

所以我对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!"

4 个答案:

答案 0 :(得分:2)

Raw_input返回一个字符串。你需要这样做 time = float(raw_input("What time..."))

(请注意,python将允许您将字符串与float进行比较,但它不会尝试将字符串转换为匹配)

(编辑:正如本次发布时其他两个答案所述,你应该使用elif)

答案 1 :(得分:1)

尝试使用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!"

答案 2 :(得分:0)

每个子句的else将始终运行,因为性别始终与用户输入的内容相反。您还需要将第二个输入转换为float以正确地将该值与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!"

答案 3 :(得分:0)

逐步采用逻辑。让我们考虑一个女性的例子,时间为10秒:

第一个' if'出来是假的,因为她是女性(假,任何东西仍然是假的,所以时间甚至不重要)。所以第一个"抱歉"消息没有打印出来。

但是,因为那'如果'没有被执行,其他'紧接着执行后,打印消息。

问题在于:仅仅因为某人不是失败的男性,并不意味着他们是成功的男性。我们以女性为例不是。

然后,在错误地打印该消息后,它会再次尝试对失败的女性案例,并打印 想要的消息。

你需要制定程序的逻辑,完全符合现实生活中的逻辑。因此,请详细考虑哪些决策会影响其他决策。

我会将确切的更改留给您,因为这可能是您的老师希望您完成并弄清楚的。