Michael Dawson 著の「絶対初心者向けの Python」という本の中で、リストと辞書に関する章で、私は多くのことを学び、古い Magic 8-Ball をインスピレーションとして使用して、練習として新しいプログラムを作成しようとしています。以下は、これまでに思いついたコードです。
それはある程度まで機能します...ランダムに生成された数値は生成されますが、elifは機能していないようです。より良い方法とより簡単な方法があることは知っていますが、辞書の理解を深めるためにこれを行っています.
いくつかの print ステートメントを入れて、番号が選択されているかどうかを確認しました。else ステートメントは、すべてがうまくいかない場合です。コードが現在立っているので、印刷された数字だけが得られ、else は「計算しません。終了は正常に動作します。また、コメントアウトされた print "ball" ステートメントを使用して、辞書が正常であることを確認しました。
したがって、私の問題は、elif ステートメントが生成された乱数を処理しないように見える理由です。誰が答えてくれたのか、心から感謝します。
# Import the modules
import sys
import random
# define magic 8-ball dictionary
ball = {"1" : "It is certain.",
"2" : "Outlook is good.",
"3" : "You may rely on it.",
"4" : "Ask again later.",
"5" : "Concentrate and ask again.",
"6" : "Reply is hazy, try again later.",
"7" : "My reply is no.",
"8" : "My sources say no"}
# for items in ball.items():
# print(items)
ans = True
while ans:
question = input("Ask the Magic 8 Ball a question: (press enter to quit) ")
answer = random.randint(1,8)
print(answer)
if question == "":
sys.exit()
elif answer in ball:
response = ball[answer]
print(answer, response)
else:
print("\nSorry", answer, "does not compute.\n")