Получение ошибки атрибута с помощью is.integer() на входе пользователя для таблицы умножения

#python

Вопрос:

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

 def multiple_generator(multiple, number):

    if multiple.is_integer() or multiple > 0:
        for i in range(1, multiple   1):
            print(f" {number} x {multiple} = {number * multiple}")
    else:
        print("Please input a positive integer numb nuts")

try:
    a = input("What number you want to multiply? ")
    b = input("How many multiples you want to see? ")
    multiple_generator(int(b), a)

except ValueError:
    print("Please input a positive integer ")
 

Комментарии:

1. Ты забыл бросить a , чтобы int .

2. @don’t talkjustcode Какое это имеет отношение к чему-либо?

3. Аааа, да, упс.

4. Нет, я совершенно этого даже не заметил.

Ответ №1:

Попробуйте это вместо этого:

 def multiple_generator(multiple, number):

    if multiple > 0:
        for i in range(1, multiple   1):
            print(f" {number} x {i} = {i * multiple}")
    else:
        print("Please input a positive integer numb nuts")

try:
    a = input("What number you want to multiply? ")
    b = input("How many multiples you want to see? ")
    multiple_generator(int(b), int(a))

except ValueError:
    print("Please input a positive integer ")
 

Причина, по которой ваш код не работал, заключается в том, что вы также забыли привести a к целому числу. Также is_integer не требуется, так b как уже приведено к целочисленному типу.

Комментарии:

1. Вы должны объяснить, где операция пошла не так, а не просто исправить их код для них.

2. @blorgon Только что объяснил

3.Ваш код не умножается с каждым числом от 1 до multiple . Это просто умножается number * multiple multiple в несколько раз. Вам нужно умножить на i

4. @Sujay Да, не так ясно, чего хочет ОП, в любом случае отредактировал мой ответ

Ответ №2:

Из документов:

Возвращает True, если экземпляр float конечен с целочисленным значением, и False в противном случае.

Когда вы преобразуете b в целое число и передаете его, оно присваивается multiple . Но is_integer() метод работает только для поплавков. Таким образом, вы получаете ошибку.

Вы можете просто сделать:

 def multiple_generator(multiple, number):

    if float(multiple).is_integer() or multiple > 0:
        for i in range(1, multiple   1):
            print(f" {number} x {i} = {i * multiple}")
    else:
        print("Please input a positive integer numb nuts")
 

Но так b как это уже целое число, вы можете просто проверить, если multiple > 0

 def multiple_generator(multiple, number):

    if multiple > 0:
        for i in range(1, multiple   1):
            print(f" {number} x {i} = {i * multiple}")
    else:
        print("Please input a positive integer numb nuts")
 

Кроме того, вы печатаете кратные числа. Но input возвращает строку. Когда вы умножаете строку на целое число, она создает n свои копии.

Передавая аргумент a , преобразуйте его в целое число.

Кроме того, вам нужно умножать с i помощью вместо multiple :

 def multiple_generator(multiple, number):

    if multiple > 0:
        for i in range(1, multiple   1):
            print(f" {number} x {i} = {number * i}") #=== Multiply by i
    else:
        print("Please input a positive integer numb nuts")

try:
    a = input("What number you want to multiply? ")
    b = input("How many multiples you want to see? ")

    multiple_generator(int(b), int(a)) #=== pass as An integer
 

Выход:

 What number you want to multiply? 2
How many multiples you want to see? 2
 2 x 1 = 2
 2 x 2 = 4