作者xubpcl (搞笑藝人)
看板Python
標題[問題] 超新手問題(if,elif,else)
時間Wed Sep 25 17:26:11 2019
看書自學 python
沒想到第一個習題就卡關
題目:
Write code that prints Hello if 1 is stored in spam,
prints Howdy if 2 is stored in spam, and prints Greetings!
if anything else is stored in spam.
我寫的 code:
spam = input()
if spam == 1:
print('Hello')
elif spam == 2:
print('Howdy')
else:
print('Greetings!')
問題:
程式可以順利執行,但不管我輸入1、2還是其他數字
出來的結果都是 Greetings!
百思不得其解,請指點一下,感謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.140.200.90 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1569403574.A.D76.html
1F:推 sma1033: 你輸入的是字串? 09/25 17:30
RESTART: C:\Users\xubpc\AppData\Local\Programs\Python\Python37\practice1.py
1
Greetings!
在 IDLE 裡面看到的狀況是這樣,就是正常的輸入1囉
※ 編輯: xubpcl (223.140.200.90 臺灣), 09/25/2019 17:34:52
2F:推 jjoojjoo123: spam=int(input()) 09/25 17:53
可以了,感謝!
3F:推 sma1033: 你知道字串是什麼嗎? XD 09/25 17:55
哈哈,我懂了,我剛才也翻到書上寫的
如果是 spam = input(),那麼不管輸入的是什麼,都會被當作字串儲存
感謝提醒!
4F:→ sma1033: 搞清楚字串跟數字的差別你就知道問題在哪了 09/25 17:55
5F:→ CGSBN: input預設是輸入字串 要轉成整數型態 09/25 17:56
了解,感謝!
※ 編輯: xubpcl (223.140.200.90 臺灣), 09/25/2019 18:00:58
6F:推 automaton: 樓上正解 09/25 18:00
7F:推 max36067: 先搞清楚input是輸入str 就知道了~ 09/25 18:01
input()的說明在第一章
第二章在教 flow control
學了後面忘了前面XDDD
※ 編輯: xubpcl (223.140.200.90 臺灣), 09/25/2019 18:03:46
我把 code 修改成這樣,好像更符合題目要求:
spam = input()
if spam == '1':
print('Hello')
elif spam == '2':
print('Howdy')
else:
print('Greetings!')
原本的 code,輸入字串會出現錯誤訊息
修改後的,除了1、2以外的所有輸入都會跑出 Greetings!
再次感謝樓上先進們的指點!
※ 編輯: xubpcl (223.140.200.90 臺灣), 09/25/2019 18:09:37
8F:推 TaiwanDuLi: 請問您是看哪本書自學? 09/26 05:07
9F:→ xubpcl: "Automate The Boring Stuff with Python", Al Sweigart 09/26 05:48
10F:推 tvassic: 因為輸入是字串 09/27 08:29
11F:→ yummy8765: 字串的比對不建議用== 可以用a.equals(b)這種形式 09/27 16:05
12F:→ yummy8765: 這個在字串那章應該會學到 不急 加油 09/27 16:07
13F:→ yummy8765: 抱歉剛剛試過好像我記錯了@@可以忽略我講的 09/27 16:11
14F:→ s312580: 加油 09/28 04:52