Pythonの「=」の扱い、bool型構文について
Q&A
Closed
解決したいこと
Pythonの「=」の扱い、bool型構文について
お世話になります。python始めたてで、こういう条件の文章を作ってみようという練習問題にて躓いたので質問させてください。
条件
1) 変数countを任意の値で初期化する
2) 画面に「ご飯をどうぞ」と表示する
3) 画面に「あなたはn杯のご飯を食べました」と表示 (nは何杯のご飯を食べたか、数字が入る)
4) 画面に「おかわりはいかが? (y/n)で答えてください」と表示
5) yが入力された場合、変数count を1増やして過程3)に戻る
6) nが入力された場合、「食いしん坊バンザイ!」と表示して終了
以下の2種類の文章を作りました。
ソースコードの下に疑問点を記載させていただきます。
該当するソースコード(1)
count = 0
print ("ご飯をどうぞ")
is_gohan = True
while is_gohan == True:
print ("あなたは{}杯のご飯を食べました".format(count))
okawari= input ("おかわりはいかが? (y/n)で答えてください")
if okawari == "y":
count +=1
else:
is_gohan == False
break
print ("ごちそうさまでした")
該当するソースコード(2)
count = 0
print ("ごはんを召し上がれ")
okawari = "y"
while okawari == "y":
print ("あなたは{}杯のご飯を食べました".format (count))
okawari = input ("おかわりは? y/n")
if okawari =="y":
count +=1
print ("ごちそうさまでした")
いずれも条件を満たすと思いますが、
質問1
ソースコード(1)にて、11行目にbreakを入れないと、任意の時点でinputに「n」を入力したときの出力結果は
「あなたは{}杯のご飯を」→「おかわりは?」→「あなたは{}杯の…」 と無限ループに陥ります。
10行目に「is_gohan == False」としてwhileの条件を満たなさいようにしたのでループにならないと思っていたのですが、
どのような点がおかしいのでしょうか?
質問2
ソースコード(2)にて、3行目の「okawari = "y"」を「okawari == "y"」とイコールを増やすと、
ご飯を召し上がれ
ごちそうさまでした
と2行のみ表示して終わる(whileに入っていない?)のですが、この点について、なぜ==としてはいけないのでしょうか。
以上2点に付きまして、ご教授ください。なにとぞよろしくお願いいたします。
自分で試したこと
がんばりました