#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