簡體   English   中英

如果在Python上使用raw_input的else語句問題

[英]If…else statement issue with raw_input on Python

我現在正在關注Zed Shaw關於Python的書,學習Python的艱難之路,我正在學習函數。 我決定遵循課程中的一些額外學分練習,並添加了IF ELSE流程聲明。 這是我下面的代碼。

print "How much bottles of water do you have?"
water = raw_input("> ")

print "How many pounds of food do you have?" 
food = raw_input("> ")

if food == 1:
    def water_and_food(bottles_of_water, food):
        print "You have %s bottles of water" % bottles_of_water
        print "And %s pound of food" % food

else:
    def water_and_food(bottles_of_water, food):
        print "You have %s bottles of water" % bottles_of_water
        print "And %s pounds of food" % food

water_and_food(water, food)

我想做的就是這個。 如果用戶輸入他們有1磅的食物,它將顯示“你有1磅的食物”如果他們輸入他們有2磅或更多的食物,它將顯示“你有2磅的食物,”磅的差異是單數或復數。

但是,如果我放1,它仍將顯示“你有1磅的食物”,但是如果我直接為水和食物的變量分配一個數字,它將起作用。

raw_input的返回值是一個字符串,但是當你檢查food的值時,你使用的是int。 實際上, if food == 1永遠不能為True ,那么流程總是默認為復數形式。

您有兩種選擇:

if int(food) == 1:

上面的代碼會將food轉換為整數類型,但如果用戶沒有輸入數字,則會引發異常。

if food == '1':

上面的代碼檢查字符串 '1'而不是整數(注意周圍的引號)。

在Python 2.x中,raw_input返回一個字符串。 查看代碼,您還可以使用返回整數的輸入 我認為這將是使用Python2的最明確的選擇。

然后,您可以使用%d代替%s將整個代碼中的食物視為int。 輸入非int時,程序會拋出異常。

暫無
暫無

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

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