@dmitriyuvin
FullStack developer ( Laravel & Vue )

Считает произведение если введена буква ОШИБКА?

string = input("Enter the string: ")
string = string.strip()

word = string.split(" ")
symbols = list(word)
quantity = len(symbols)

if quantity < 3 or quantity > 3:
    print("You entered less or more than 3 symbols, try again!")
else:
    mult = 1
    for k in word:
            try:
                mult *= int(k)
                mult = abs(mult)
            except ValueError:
                print("You entered the letter!")
                string = input("Enter the string: ")
    print(mult)


Пользователь вводит строку состоящую из 3-х цифр через пробел.
Программа считывает их, перемножает если все они - цифры и выводит результат.
Но если я введу хоть одну букву, в первый раз мне даст ошибку, а во второй раз посчитает.
Как сделать так чтобы всегда если я введу букву, мне предлагалось ввести строку еще раз и резлультат посчитаться не мог.
5d875a8267140053931616.png
  • Вопрос задан
  • 110 просмотров
Решения вопроса 2
longclaps
@longclaps
prompt = 'введи 3 числа: '
while True:
    try:
        a, b, c = map(int, input(prompt).split())
        print(a * b * c)
        break
    except ValueError:
        prompt = 'экий ты тупой! введи 3 числа: '
Ответ написан
adugin
@adugin Куратор тега Python
from functools import reduce
from operator import mul

numbers = input('Введите 3 числа через пробел: ').split()

try:
    numbers = list(map(int, numbers))
except ValueError:
    print('Обнаружен недопустимый символ!')
else:
    if len(numbers) == 3:
        print('Результат перемножения чисел:', reduce(mul, numbers))
    else:
        print('Введено неверное количество чисел!')

А разница в первом и втором результате из-за того, что у вас ввод в двух местах и с разным окружением.
Нужно оставить только первый ввод и зациклить весь код.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@dmitriyuvin Автор вопроса
FullStack developer ( Laravel & Vue )
mn = 1
while True:
    numbers = input("Enter 11 numbers with a space: ").strip()
    try:
        numbers = list(map(int, numbers.split(" ")))
    except ValueError:
        print("You entered the letter!")
    else:
        if len(numbers) == 11:
            for k in numbers:
                mn *= k
            print(abs(mn))
            break
        else:
            print("You entered incorrect quantity of numbers! Try again!")

Решил вот так!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы