簡體   English   中英

如何在 Python 中正確地 elif/else?

[英]How to elif/else correctly in Python?

我需要編寫一個名為 stop_light 的 function 來確定 stop_light 是否應該改變顏色,如果是,它應該改變成什么顏色。

  • 紅綠燈 function 應該采用兩個 arguments。第一個的值將是“綠色”、“黃色”或“紅色”。 這代表停車燈的當前顏色。
  • 第二個參數告訴 function 這種顏色已經顯示了多長時間。 如果綠色顯示時間超過 60 秒,則返回“黃色”。 如果黃色顯示時間超過 5 秒,則返回“紅色”。 如果紅色顯示時間超過 55 秒,則返回“綠色”。
  • 如果顏色沒有顯示足夠長的時間(例如綠色已經顯示了 17 秒),則返回當前顏色。 以下是使用不同的 arguments 調用 function 的一些示例。

我可以做,但我不能做這部分:

  • 如果顏色沒有顯示足夠長的時間(例如綠色已經顯示了 17 秒),則返回當前顏色。”

我該怎么做那部分?

這是我的代碼

def stop_light(color, seconds):
    if color == "green" and seconds > 60:
        print("yellow")
    elif color == "yellow" and seconds > 5:
        print("red")
    elif color == "red" and seconds > 55:
        print("green")
    else:
        return color 

stop_light("yellow", 3) 

在我看來,您似乎混淆了printreturn的目的。 將所有print function 調用更改為return語句。

print接受您遞交的任何內容,將其轉換為字符串表示形式,然后將其發送到屏幕。

return結束 function,並將值發送回最開始稱為 function 的任何內容。

如果您使用 jupyter 或 repl,這些很容易混淆。 這兩個都會自動將一些項目打印到屏幕上。

這有效

def stop_light(color, seconds):
 if color == "green" and seconds > 60:
    print("yellow")
 elif color == "yellow" and seconds > 5:
    print("red")
 elif color == "red" and seconds > 55:
    print("green")
 else:
    print(color) 


stop_light("yellow", 3)

或者

def stop_light(color, seconds):
 if color == "green" and seconds > 60:
    return "yellow"
 elif color == "yellow" and seconds > 5:
    return "red"
 elif color == "red" and seconds > 55:
    return "green"
 else:
    return color  


print(stop_light("yellow", 3))

添加更多如下所示的elif語句:

elif color == "green" and seconds < 60:
   print("green")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM