PythonでFigure Gussing gameという、パイソンがランダムに決めた数字をあてるゲームがあります。
1~100までで50といれると「高すぎる」20といれると「低すぎる」といったかたちで正解にたどりつくと終わるといった感じのものです。
今回、その逆を作らなくてはなりません。要は人間が正解の数字をきめて、コンピュータが当てることになります。
決まりごとは以下のとおりです。
- コンピュータは乱数を使わない
- 人間は数字を入力しない。(YesならY、高すぎならhを入力するという形です)
- コンピュータからなにか返ってくると人間がなんらか入力する
- ランダムライブラリからはなにもインポートしない
といったことになります。
パイソンの数字をあてるゲームとは全くちがうので、今あるコードを一部改良という問題ではないようです。
初心者レベルで習っているコードだけでこれをどうやればいいのか、まったく見当がつかず困っています。
何回かやって平均をとるなどの部分ははしおっても構わないと思うので、こちらが想定した数字に対し、コンピュータが答える部分は何をどうつかってやり取りすればよいのか、どなたかご教示ください!
参考までにPythonの決めた数をあてるゲームのコードは以下のとおりです。
ここまでしなくてもこの逆のようなものを作成しなくてはなりません。
よろしくお願いします。
from random import randrange def getGuess(low, high): while True: n = input("Please enter your guess. ") num = eval(n) if low<= num <= high: return num print("Your guess must be between",low,"and",high) def playOnce(low, high): countGuesses = 0 print("I will choose a number between",low,"and",high) print("You will try to guess it.") hidden = randrange(low,high+ 1) while True: guess = getGuess(low, high) countGuesses += 1 if guess == hidden: print("That's it! You got it in",countGuesses,"tries.") return countGuesses if guess < hidden: print("Too low.") else: print("Too high.") def playGuessingGame(low,high): totalGuesses = 0 ## accumulator gameCount = 0 ## counter while True: print("Let's play a guessing game") totalGuesses += playOnce(low, high) gameCount += 1 again = input("Do you want to play again? Enter y for yes, n for no. ") if again != 'y': averageGuesses = totalGuesses / gameCount print("You averaged", averageGuesses,"guesses per game.") break playGuessingGame(1,100)ード
回答3件
あなたの回答
tips
プレビュー