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