2013-02-15 1 views
0

Я пытаюсь запустить этот простой кусок кода, который повторяет последовательность из четырех случайных чисел, пока он не будет соответствовать введенному пользователем четырехзначным номером. Я знаю, что есть более простые способы сделать это, но мне просто интересно, почему это не работает. Программа будет компилироваться, и когда она достигнет проверки while, на экране терминал просто не обновляется и программа не заканчивается. благодаряПомощь Python с простым входным и случайным числом

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') 
+0

'input' [возвращает строку] (http://docs.python.org/3/library/functions.html?highlight=input#input), так нет необходимости вызывать 'str()' – bernie

+0

Строки кода, которые должны быть повторены в цикле 'while', должны иметь четыре (4) пробела. – bernie

+0

Они отступы, забыли сделать это здесь – user1978826

ответ

0

Простая опечатка: у вас есть digit2 в обоих вторых и третьих случаях вашего if заявления, поэтому если pin не имеют одни и те же цифры в обоих местах он никогда не будет соответствовать.

Кроме того, сравнение целого числа со строкой никогда не будет равным. Вам нужно преобразовать каждую случайную цифру в строку.

+0

Да, спасибо, что указали это, не знаю, почему я пытался сравнить строку с int! – user1978826

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') 
+0

[или даже проще] (http://stackoverflow.com/questions/14903563/python-assistance-with-simple-input-and-random-number#comment20905921_14903563) – jfs