私は非常にPythonには新しいので、私のコードは非常に非効率的であると確信していますが、現時点でやって学ぶので、私の一般的な無知を言い訳する。ランダム生成クイズを書くと、ランダムに生成されたオブジェクトを呼び出す必要があります
私のクイズは現在、一連の引用符を取り、その最初の20文字を(スライスを介して)ランダムに印刷します。その考え方は、クイズが残りの部分を暗唱しているということです。
私は引用符全体を取得する機能を追加したいと思いますが、ランダムモジュールが生成した最後のオブジェクトを呼び出すようにpythonに指示する方法はわかりません。ここで
は私のコードです:
import random
control = True
JCIIiii34 = "Valiant men never taste of death but once"
SonnetSeventeen = "If I could write the beauty of your eyes,\nAnd in fresh numbers number all your graces,\nThe age to come would say this poet lies,\nSuch heavenly touches ne'er touched earthly faces."
SonnetEighteen = "So long as men can breath and eyes can see,\nSo long lives this, and this gives life to thee."
JCIii101 = "I had as lief not be as live to be\nIn awe of such a thing as I myself"
print "After quote type 'exit' to leave, or 'next' for next quote"
while control:
quote = random.choice([SonnetSeventeen,SonnetEighteen,JCIIiii,JCIii])
print quote[:20]
var = raw_input ("\n")
if var == "exit":
control = False
elif var == "next":
print "\n"
control = True
だから、私は何をできるようにしたいことはprint文はそのオブジェクトへの呼び出しはどこ
elif var == "answer":
print #the full quote
を言って1つの以上のelif文を追加していますもともとスライスされていたが、完全に印刷していた。
ランダムモジュール用のPythonライブラリエントリを読んだところ、答えが見つかりませんでした。
私はこれを実行するより効率的な方法にもオープンしています(私は引用符を別のファイルに保存できますが、それはまだ分かりません)。
ありがとうございました!
まあ私は愚か者のように感じる。私はそれを考慮しましたが、ランダムに再び生成すると仮定しました。だから私が間違っていない場合、このようなwhileループでは、ループするまでランダムモジュールは再びランダム化されず、オブジェクト "quote"は一時的に最後に生成されたオブジェクトをポイントします。それは正確ですか?編集:ありがとう! – user679400
はい、それです。それを長く保つ必要がある場合は、引用符を別の変数( 'last_quote'など)に保存してください。 –
優秀、ありがとう! – user679400