#python #if-statement
Вопрос:
Я новичок в пути Python, мне нужна помощь. Мне нужны все данные, чтобы соответствовать всем условиям, которые я поставил. И если одно условие не будет выполнено, то он не будет печатать «еще».
То есть, если программное обеспечение печатает ошибку, оно не будет печатать «еще». Только в том случае, если программное обеспечение удовлетворяет всем условиям, в конце будут напечатаны остальные сообщения без «ошибок».
from datetime import datetime data_user = input("Please enter contact details (first name, last name, birth (year), cellular phone number (10 digits) :").split(" ") if len(data_user) != 4: print("Error: the data was entered in the wrong order or there is a missing input or the input is incorrect.") first_name = data_user[0] last_name = data_user[1] phone_number = data_user[2] birth = int(data_user[3]) if first_name.isnumeric() == True: print("Error: the name should contain only letters.") if last_name.isnumeric() == True: print("Error: the last name should contain only letters.") if len(phone_number) != 10: print("Error: the phone number should be 10 digits.") if phone_number[0] != "0": print("Error: the first number should be 0.") if phone_number.isnumeric() == False: print("Error: the phone number most be a number.") age = datetime.now().year - birth if agelt;18: print("Error: the year is not suitable.") if agegt;100: print("Error: the year is not suitable.") else: print("Name:",first_name,last_name, "nPhone:",phone_number ,"nBirth:", birth)
Комментарии:
1. создавайте исключения или помещайте свой код в функцию и возвращайте
2. Должен ли он печатать ВСЕ ошибки или сначала остановиться ?
3. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы выделить именно то, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.
Ответ №1:
Проще всего остановиться на первой ошибке, используя if/elif/else
конструкцию
data_user = input("Please enter contact details (first name, last name, birth (year), " "cellular phone number (10 digits) :").split() if len(data_user) != 4: print("Error: the data was entered in the wrong order or there is a missing input " "or the input is incorrect.") else: first_name, last_name, phone_number, birth = data_user age = datetime.now().year - birth if first_name.isnumeric(): print("Error: the name should contain only letters.") elif last_name.isnumeric(): print("Error: the last name should contain only letters.") elif len(phone_number) != 10: print("Error: the phone number should be 10 digits.") elif phone_number[0] != "0": print("Error: the first number should be 0.") elif not phone_number.isnumeric(): print("Error: the phone number most be a number.") elif age lt; 18 or age gt; 100: print("Error: the year is not suitable.") else: print("Name:",first_name,last_name, "nPhone:", phone_number, "nBirth:", birth)
Чтобы просмотреть все возможные ошибки, используйте переменную, чтобы отследить, видели ли вы хотя бы одну
if len(data_user) != 4: print("Error: the data was entered in the wrong order or there is a missing input " "or the input is incorrect.") else: first_name, last_name, phone_number, birth = data_user error = False if first_name.isnumeric(): print("Error: the name should contain only letters.") error = True if last_name.isnumeric(): print("Error: the last name should contain only letters.") error = True if len(phone_number) != 10: print("Error: the phone number should be 10 digits.") error = True if phone_number[0] != "0": print("Error: the first number should be 0.") error = True if not phone_number.isnumeric(): print("Error: the phone number most be a number.") error = True age = datetime.now().year - birth if age lt; 18 or age gt; 100: print("Error: the year is not suitable.") error = True if not error: print("Name:",first_name,last_name, "nPhone:", phone_number, "nBirth:", birth)
Комментарии:
1. Но мне это нужно, чтобы соответствовать всем условиям. Если я использую «elif», это не пройдет при всех условиях.
2. @LiorBenishai Вы хотите увидеть максимально возможную ошибку ?