После var = int(input() не работает if var == 0 or var == str:
Пытаюсь создать программку, которая высчитывает количество бусинок, которые нужно достать, чтобы цвета повторились. Хочу запретить выбирать 0 как количество цветов (т.к. это нелогично) и запретить писать любые другие символы, кроме чисел, потому что программа просто ломается. Так же хотел бы получить советы по более удобному оформлению коду. Программирую я пару дней... Я пробовал через typick = type(colors) == str if typick == False: и через if сolors == 0 or colors == str: но ничего не вышло и всё после if игнорировалось и программа перезапускалась, а когда убирал int от input, то вообще ничего не работало. Очень надеюсь на вашу помощь :(
# Минимальное число бусин, которое нужно достать, чтобы цвета повторились при производном количестве цветов
def businki(): # задаём функцию businki и вкладываем в неё наш калькулятор
print('Введите количество цветов:')
colors = int(input('> '))
result = colors + 1
posled = result % 10 # сокращает число до последней цифры
result = str(result)
if posled == 1:
print('Нужно достать ' + result + ' бусинку, чтобы цвета повторились')
elif posled == 2 or posled == 3 or posled == 4:
print('Нужно достать ' + result + ' бусинки, чтобы цвета повторились')
else:
print('Нужно достать ' + result + ' бусинок, чтобы цвета повторились')
while True:
businki()
Ответы (2 шт):
Просто сделать проверку введённого значения, когда оно ещё в строковом типе. И если строка состоит из цифр, то преобразовать её в число и проверять уже на допустимость числа. Всё это организовать в цикле, который будет переспрашивать до тех пор, пока ввод не будет удовлетворять всем условиям.
print('Введите количество цветов:')
while True:
colors = input('> ')
if not colors.isdigit():
print('Количество должно быть ЧИСЛОМ! Повторите ввод.')
continue
colors = int(colors)
if colors > 0:
break
print('Количество должно быть БОЛЬШЕ НУЛЯ! Повторите ввод.')
result = colors + 1
...
Я решил проблему и улучшил код :)
def businki(): # задаём функцию businki и вкладываем в неё наш калькулятор
while True:
flag = True
while flag:
print('Введите количество цветов:')
colors = input('> ')
if not colors.isdigit() or int(colors) <= 0:
print("Ошибка: Введите корректное число (целое и выше нуля).")
else:
flag = False
colors = int(colors)
result = colors + 1
posled = result % 10 # сокращает число до последней цифры
result = str(result)
if posled == 1 and result[-2:] != '11':
print(
f'Нужно достать {result} бусинку, чтобы цвета повторились')
elif posled == 2 or posled == 3 or posled == 4:
print(
f'Нужно достать {result} бусинки, чтобы цвета повторились')
elif result[-2:] == '11':
print(
f'Нужно достать {result} бусинок, чтобы цвета повторились')
else:
print(
f'Нужно достать {result} бусинок, чтобы цвета повторились')
while True:
businki()