Python, если еще —

#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 Вы хотите увидеть максимально возможную ошибку ?