@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
  • Вопрос задан
  • 107 просмотров
Решения вопроса 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!")

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

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

Войти через центр авторизации
Похожие вопросы
iCode Москва
от 90 000 до 200 000 ₽
SwapZilla.co Москва
от 200 000 ₽
SwapZilla.co Сочи
от 200 000 ₽