почему мой код не работает AttributeError: у объекта 'int' нет атрибута 'isdigit' - PullRequest
0 голосов
/ 06 октября 2019
#Guess the num
import random
def is_valid_num(num):
    if num.isdigit() and 1 <= int(num) <= 100:
        return True
    else:
        return False

def main():
    number = random.randint(1,100)
    guessed_number = False
    guess = input('enter a num')
    #guess = (input('enter a num'))
    num_of_guesses = 0
    while not guessed_number:
        if not is_valid_num(guess):
            #return False
            guess = input('i count only digits enter 1<num<100')
            continue
        else:
            num_of_guesses += 1
            #break
            guess = int(guess)
        if guess < number:
            print ('entered number is low')

        elif guess > number:
            print ('entered number is high')

        else:
            print ('you got in',num_of_guesses, 'guesses')
            guessed_number = True
main()

Ожидаемое значение Out, если случайное число равно системе 51, и мы нажали 50, оно напечатается слишком низко, а затем продолжим этот процесс. Допустим, мы дали на вход 51 вывод: you got in 2 guesses

Ответы [ 2 ]

1 голос
/ 06 октября 2019

isdigit() - строковый метод, он не работает на int входах.

измените это:

guess = int(input('enter a num'))

на это:

guess = input('enter a num')

ваш код после редактирования:

#Guess the num
import random
def is_valid_num(num):
    if num.isdigit() and 1 <= int(num) <= 100:
        return True
    else:
        return False

def main():
    number = random.randint(1,100)
    guessed_number = False
    guess = input('enter a num')
    #guess = (input('enter a num'))
    num_of_guesses = 0
    while not guessed_number:
        if not is_valid_num(guess):
            #return False
            guess = input('i count only digits enter 1<num<100')
            continue
        else:
            num_of_guesses += 1
            break

    guess = int(guess)
    if guess < number:
        print ('entered number is low')
    elif guess > number:
        print ('entered number is high')
    else:
        print ('you got in',num_of_guesses, 'guesses')
        guessed_number = True
main()
0 голосов
/ 06 октября 2019
@Thanks Issac Full code is below

#Guess the num
import random
def is_valid_num(num):
    if num.isdigit() and 1 <= int(num) <= 100:
        return True
    else:
        return False

def main():
    number = random.randint(1,100)
    guessed_number = False
    guess = input('enter a num')
    #guess = (input('enter a num'))
    num_of_guesses = 0
    while not guessed_number:
        if not is_valid_num(guess):
            #return False
            guess = input('i count only digits enter 1<num<100')
            continue
        else:
            num_of_guesses += 1
            #break

            guess = int(guess)
        if guess < number:
            guess = (input('entered number is low try again'))
        elif guess > number:
            guess = (input('entered number is high try again'))
        else:
            print ('you got in',num_of_guesses, 'guesses')
            guessed_number = True
main()

Выход ниже

>>enter a num55
entered number is high try again55
entered number is high try again45
entered number is high try again88
entered number is high try again30
entered number is high try again10
entered number is low try again20
entered number is low try again25
entered number is high try again22
entered number is low try again23
you got in 10 guesses
...