Не работает программа (пайтон) - Компьютерные вопросы

Вопрос Не работает программа (пайтон)

Регистрация
28 Сен 2013
Сообщения
80
Репутация
0
Спасибо
0
Монет
0
name = input("Enter your name: ")

age = input("Enter your age: ")

sn = input("Enter your second name: ")

otchestvo = input("Enter your otchestvo: ")

birthday = input("Enter when your birthday: ")





mow = input("Are you a man or women(it is important)pls answer 1/2 1=women 2=man:")

if mow == 2:

anketa_v1 = f'Меня зовут {sn} {name} {otchestvo}. Мне {age} лет и я родилcя {birthday}'

print(anketa_v1)

elif mow == 1:

anketa_v2 = f'Меня зовут {sn} {name} {otchestvo}. Мне {age} лет и я родилась {birthday}'

print(anketa_v2)

Это весь код который я написал,в целом он работает,но есть 1 НО,как только идет вопрос mow = input("Are you a man or women(it is important)pls answer 1/2 1=women 2=man:") , то после ответа он просто завершает программу и ничего не пишет.Помогите((
 
Регистрация
13 Ноя 2013
Сообщения
94
Репутация
0
Спасибо
0
Монет
0
В твоем коде переменная mow содержит строку, но в условии if mow == 2: ты сравниваешь ее с числом 2 (тип int). В Python строка '2' не равна числу 2, поэтому условие всегда будет ложным, и код внутри if и elif блоков никогда не выполнится. Ты можешь использовать функцию int() для преобразования введенной строки в целое число. Тогда сравнение будет происходить между числами. mow = int(input("Are you a man or woman (it is important) please answer 1/2 1=woman 2=man: "))
if mow == 2:
# код для мужчины
elif mow == 1:
# код для женщины Если хочешь оставить mow как строку, просто сравнивай ее с строковыми значениями '1' и '2'. mow = input("Are you a man or woman (it is important) please answer 1/2 1=woman 2=man: ")
if mow == '2':
# код для мужчины
elif mow == '1':
# код для женщины
 
Регистрация
19 Дек 2013
Сообщения
86
Репутация
0
Спасибо
0
Монет
0
Ты сравниваешь mow с числом, а это — строка. Ни одно из условий не срабатывает.

Нужно перевести: int(input(...))
 
Регистрация
28 Сен 2013
Сообщения
62
Репутация
0
Спасибо
0
Монет
0
Проблема в том, что в строке с запросом mow = input(...), вы ожидаете, что пользователь введет число, но по умолчанию input() всегда возвращает строку, а не число. Поэтому ваши условия if mow == 2 и elif mow == 1 не выполняются, потому что строки "2" и "1" не равны числам 2 и 1.

Чтобы исправить это, нужно привести ввод к числовому типу с помощью функции int().

name = input("Enter your name: ")
age = input("Enter your age: ")
sn = input("Enter your second name: ")
otchestvo = input("Enter your otchestvo: ")
birthday = input("Enter when your birthday: ")

mow = input("Are you a man or women(it is important)pls answer 1/2 1=women 2=man: ")

# Преобразуем ввод в число
mow = int(mow)

if mow == 2:
anketa_v1 = f'Меня зовут {sn} {name} {otchestvo}. Мне {age} лет и я родился {birthday}'
print(anketa_v1)
elif mow == 1:
anketa_v2 = f'Меня зовут {sn} {name} {otchestvo}. Мне {age} лет и я родилась {birthday}'

print(anketa_v2)
 
Регистрация
7 Сен 2013
Сообщения
67
Репутация
0
Спасибо
1
Монет
0
def get_input(prompt):
"""Функция для получения пользовательского ввода."""
return input(prompt)
def create_anketa(name, sn, otchestvo, age, birthday, is_man):
"""Функция для создания анкеты."""
if is_man:
return f'Меня зовут {sn} {name} {otchestvo}. Мне {age} лет и я родился {birthday}.'
else:
return f'Меня зовут {sn} {name} {otchestvo}. Мне {age} лет и я родилась {birthday}.'
def print_anketa(anketa):
"""Функция для вывода анкеты на экран."""
print(anketa)
def validate_age(age):
"""Функция для проверки корректности возраста."""
try:
age = int(age)
if age < 0:
raise ValueError("Возраст не может быть отрицательным.")
return age
except ValueError:
print("Пожалуйста, введите корректный возраст.")
return None
def main():
name = get_input("Введите ваше имя: ")
age = validate_age(get_input("Введите ваш возраст: "))
sn = get_input("Введите вашу фамилию: ")
otchestvo = get_input("Введите ваше отчество: ")
birthday = get_input("Введите вашу дату рождения: ")
mow = get_input("Вы мужчина или женщина? (1=женщина, 2=мужчина): ")

if mow == "2":
anketa = create_anketa(name, sn, otchestvo, age, birthday, True)
print_anketa(anketa)
elif mow == "1":
anketa = create_anketa(name, sn, otchestvo, age, birthday, False)
print_anketa(anketa)
else:
print("Некорректный ввод для пола. Пожалуйста, введите 1 или 2.")
if __name__ == "__main__":
main()
 
Сверху Снизу