簡體   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