2017-01-15 2 views
0

私はPythonには初めてです。数字を推測するPythonコードは、閉じるときに同じ番号を2回または3回生成します

コードは正常に動作しますが、同じ番号を2回または多分数回推測します。毎回ユニークな数字を推測したい。

import random 

print("Hey human guess a number between 1 to 50 and i will try guessing what it is ! \n ") 
input("Press enter when you have done the first step \n") 
print("after my guess if its correct then hit y, if i need to guess higher than hit g and if i need to guess lower then hit l\n") 

answer = "" 
m = 1 
n = 50 

while(answer!='y'): 

    guess = random.randint(m,n) 
    print(guess) 
    reply = input("Is my guess correct ?") 

    if reply == 'y': 
     print("GG") 
     answer = 'y' 

    elif reply == 'l': 
     n = guess 
     print("\n Okay let me try again") 

    elif reply == 'g': 
     m = guess 
     print("\n aaah let me try again please \n") 

    else: 
     print("\n Seriously man what did i tell you before ?") 

ありがとうございます。

答えて

1

012stのドキュメントストリングに記載されているように、このメソッドは「両端の両端点を含む範囲[a、b]の乱数を返します」。つまり、推測値をmまたはnのいずれかに割り当てると、ランダムの範囲についての推測が含まれます。

はこのように、あなたのコードを修正するためには、次の行を変更することができます:

m = 0 
n = 51 

guess = random.randint(m+1,n-1) 

をこの方法では、ランダムな範囲で推測が含まれることはありません。お役に立てれば。

+1

、それはどうもありがとうございまし作品 –

+0

それが助け聞いて喜ん:

だからあなたが巻きます!答えを受け入れるのは気になりますか? :) –

-1

random.randintはmとnの間の数値を生成する可能性があります範囲が1-50で、プログラムが50を推測する場合、上限を50に再度設定します。つまり、その数を2回推測することができます。範囲が狭まるにつれて起こりそうです。あなたが行を変更した場合

は私が

n=guess 

は、あなたが探している結果を得るでしょう

n=guess-1 

を読み、同様にそれが低すぎる推測ときメートルのための1つを追加することだと思います。

0

推測guessed_numbers.append(guess)

を保存するたびに続い推測番号guessed_numbers = []

のリストを作成し、推測を設定する前に、その推測は推測数字ではありません確認してください。私はこれを試してみました

n = 50 
guessed_numbers = [] 

while (answer != 'y'): 

    guess = random.randint(m, n) 
    while (guess in guessed_numbers): 
     guess = random.randint(m, n) 
    guessed_numbers.append(guess) 
    print(guess) 
+0

これははるかに適しています。 – miradulo

+0

私の電話では、しかし、私はセットのポイントは、彼らは不変なので、追加メソッドはないと思った? –

+1

あなたは間違っていて、多分タプルを考えています。 [これを多分参照してください](http://stackoverflow.com/questions/2831212/python-sets-vs-lists)。 – miradulo

関連する問題