python布尔值print_python中的用户输入布尔值
我試圖讓用戶輸入他們是否喜歡辛辣的食物,輸出應該是一個布爾值,但我似乎沒有得到下面代碼的輸出:
def likes_spicyfood():
spicyfood = bool(input("Do you like spicy food? True or False?"))
if spicyfood == ("True"):
print("True")
if spicyfood == ("False"):
print("False")
return(likes_spicyfood)
提示:使用空輸入進行測試。
嗯:1。任何非空字符串輸入都將計算trust-y;和2。兩個布爾值都不等于字符串"True"或"False"。同樣,等式計算中的括號也是多余的。你可以跳過bool;"True" =="True"。
為什么要將用戶輸入轉換為布爾值,然后將其與字符串進行比較?只是不要轉換它。
在輸入正常工作之前刪除bool語句
另外,如果要返回布爾值,為什么要打印字符串("true")。而是使用返回true
嘗試將您的輸入轉換為bool不會像這樣工作。python考慮任何非空字符串True。因此,執行bool(input())基本上與執行input() != ''相同。即使輸入不是"True",兩者都返回true。只需將直接給出的輸入與字符串"True和"False"進行比較:
def likes_spicyfood():
spicyfood = input("Do you like spicy food? True or False?")
if spicyfood =="True":
return True
if spicyfood =="False":
return False
注意,如果輸入不是"True或"False",上述代碼將失敗(返回None而不是布爾值)。如果原始輸入無效(即不是"True或"False"),請考慮返回默認值或重新要求用戶輸入。
是的,但是為什么要使用兩個if語句而不是elif?
嗯,主要是想和操作代碼@anton保持一致。
老實說,這是相當令人困惑的為什么OP決定寫這樣一個奇怪的程序,我想他們只是練習。
是的,可能是@a.smoliak。我不清楚他為什么要嘗試返回他的函數對象,所以這是我自由刪除的一件事。對了,回答得很好!我肯定會投贊成票。
這是我第一次使用python,我正在做家庭作業,我根本不知道if函數,所以這就是為什么我想出了一個令人困惑的程序,我很抱歉。我們剛剛學會了回歸,如果是這樣的話,那就是為什么他們要求我們在每個函數結束時回歸的原因。
不用擔心@user5556453。我們都必須從某個地方開始:(-)但是,在發布下一篇文章之前,我建議您參加巡演并訪問幫助中心,熟悉堆棧溢出的工作原理。
此功能是否打印出用戶答案?
不,不是@user5556453。這個函數名為likes_spicyfood,所以我假設它應該返回一個布爾值,表示用戶是否喜歡辛辣的食物。如果要打印用戶的答案,只需執行print(likes_spicyfood())。
哦,它應該返回一個布爾值!
如果您確定輸入正確,可以執行以下操作:
def likes_spicyfood():
spicyfood = input("Do you like spicy food? True or False?")
return spicyfood.title() =="True"
為什么不更進一步,只寫return input("Do you like spicy food? True or False?") =="True"。
@A.首先是Smoliak可讀性。但是,編程有很多選擇。
是的@a.smoliak,安東說的對。從python zen中:"可讀性很重要。";-)當然,這不是一個硬性規則。在某些情況下,必須將性能置于可讀性之上,但在Python中,這些情況非常罕見。
在您的使用中,將string轉換為bool將不是一個有效的解決方案。在Python中,如果將字符串轉換為bool,例如:bool("False"),布爾值將為True,這是因為如果將非空字符串轉換為bool,它將始終轉換為True,但如果嘗試將空字符串轉換為bool,則會得到False。
為了解決你的問題,必須做一些改變。首先,您的代碼示例甚至不調用您詢問用戶是否喜歡辛辣食物的函數,所以在代碼的最底層調用它。埃多克斯1〔18〕
第二件事你必須改變的是,你必須簡單地使用用戶類型True或False,就像你在代碼中使用的那樣,但是不要將值從string轉換為bool,只需取string并將其與'True'或'False'進行比較,這里是完整的代碼:
def likes_spicyfood():
spicyfood = input("Do you like spicy food? True or False?")
if spicyfood =="True":
print("The user likes spicy food!")
if spicyfood =="False":
print("The user hates spicy food!")
return likes_spicyfood
likes_spicyfood()
號
您還將看到我返回了一些多余的括號:當將輸入值與'True'或'False'進行比較時,以及在重新執行likes_spicyfood時。下面介紹如何將字符串轉換為bool
試試這個。在0和1中要求答案,然后將其轉換為布爾值。就像我在下面的例子中所做的那樣
isTrue = True
while isTrue:
isTrue = bool(int(input("Continue? 1 for yes, 0 for no:")))
不要將輸入轉換為bool。以后再做一個檢查它是真是假的條件
像這樣:)
def likes_spicyfood():
spicyfood = input("Do you like spicy food? True or False?")
while spicyfood!="True" or"False":
spicyfood=input("Do you like spicy food? True or False?")
if spicyfood == ("True"):
print("True")
if spicyfood == ("False"):
print("False")
return(likes_spicyfood)
。
我該怎么做?
@用戶5556453更新了解決方案
總結
以上是生活随笔為你收集整理的python布尔值print_python中的用户输入布尔值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 万网域名如何设置显性url转发和隐性UR
- 下一篇: python爬关键词百度指数_利用pyt