0

この単純なコードを実行しようとしています。これは、ユーザーが入力した 4 桁の数字と一致するまで、一連の 4 つの乱数を繰り返します。これを行う簡単な方法があることは知っていますが、なぜこれが機能しないのか疑問に思っています。プログラムはコンパイルされ、while チェックに達すると、端末の画面は更新されず、プログラムは終了しません。ありがとう

import random
attempts = 0
pin = input("Please enter your four digit pin: ")
str_pin1 = str(pin)


while True:
    digit1 = random.randint(0,9)
    digit2 = random.randint(0,9)
    digit3 = random.randint(0,9)
    digit4 = random.randint(0,9)
        digit1 = str(digit1)
        digit2 = str(digit2)
        digit3 = str(digit3)
        digit4 = str(digit4)
    attempts = attempts +1

    if digit1 == str_pin[0] and digit2 == str_pin[1] and digit3 == str_pin[2] and   str_pin[3]:)
        break
print('it took', attempts, 'for random number to find your code')
4

2 に答える 2

1

これを行うことができます:

import random
attempts = 0
pin = input("Please enter your four digit pin: ")
guess = ""

while guess != pin:
    guess = str(random.randint(0,10000))
    while len(guess) < 3:
        guess = "0" + guess
    attempts = attempts +1

print('it took', attempts, 'for random number to find your code')
于 2013-02-15T22:02:17.077 に答える
0

単純なタイプミス:ステートメントdigit2の 2 番目と 3 番目のケースの両方にあるifため、両方の場所に同じ数字がない限り、pin決して一致しません。

さらに、整数と文字列の比較は決して等しくなりません。各乱数を文字列に変換する必要があります。

于 2013-02-15T21:33:41.330 に答える