''' Write a program that asks the user for their name and year of birth. If there is no error in the name or year, they are added to the tuple list. When the user replaces the name with an empty string, the program prints the list and terminates. See the sample output below for a description of how the program should react to various error situations. The earliest accepted year of birth is 1800, the minimum length of the name is 2 characters. The program assumes that the year is 2021 - so the person cannot have been born after that date. Name: Alex Year of birth: 1904 Name: Lena Year of birth: 1999 Name: A Year of birth: 1987 Name's too short! Name: Alex Year of birth: 1765 You're too old! Name: Tina Year of birth: 2042 You're not born yet! Name: Mark Year of birth: in the fifties Year must be given in a numerical form! Name: List: [('Alex', 1904), ('Lena', 1999)] ''' # approach 1 def main(): people = [] current_year = 2021 while True: name = input("Name: ") if name == "": break if len(name) < 2: print("Name's too short!") continue year = input("Year of birth: ") if not year.isdigit(): print("Year must be given in a numerical form!") continue year = int(year) if year < 1800: print("You're too old!") elif year > current_year: print("You're not born yet!") else: people.append((name, year)) print("List:", people) main() '''Error Error in program execution line 68, in main() File "/tmp/untrusted/test08c6d0c3d-26b8-4214-8bab-fff48628c30b/test.py", line 35, in main name = input("Name: ") File "/tmp/untrusted/test08c6d0c3d-26b8-4214-8bab-fff48628c30b/test.py", line 17, in input raise Exception("The program asked for too many values in the input statement! The maximum number of values to ask for was " Exception: The program asked for too many values in the input statement! The maximum number of values to ask for was 17 ''' ######################################################## # approach 2 def main(): people = [] current_year = 2021 while True: # Ask for name and year in a single input user_input = input("Name and year of birth (or leave blank to exit): ").strip() if user_input == "": break # Split input into name and year parts = user_input.split() if len(parts) < 2: print("Please provide both name and year of birth!") continue name = parts[0] year = parts[1] if len(name) < 2: print("Name's too short!") continue if not year.isdigit(): print("Year must be given in a numerical form!") continue year = int(year) if year < 1800: print("You're too old!") elif year > current_year: print("You're not born yet!") else: people.append((name, year)) print("List:", people) main() '''actual output Name and year of birth (or leave blank to exit): Sam Please provide both name and year of birth! Name and year of birth (or leave blank to exit): 1972 Please provide both name and year of birth! Name and year of birth (or leave blank to exit): Alex Please provide both name and year of birth! Name and year of birth (or leave blank to exit): 1904 Please provide both name and year of birth! Name and year of birth (or leave blank to exit): Lena Please provide both name and year of birth! Name and year of birth (or leave blank to exit): 1999 Please provide both name and year of birth! Name and year of birth (or leave blank to exit): A Please provide both name and year of birth! Name and year of birth (or leave blank to exit): 1987 Please provide both name and year of birth! Name and year of birth (or leave blank to exit): Alex Please provide both name and year of birth! Name and year of birth (or leave blank to exit): 1765 Please provide both name and year of birth! Name and year of birth (or leave blank to exit): Tina Please provide both name and year of birth! Name and year of birth (or leave blank to exit): 2042 Please provide both name and year of birth! Name and year of birth (or leave blank to exit): Mark Please provide both name and year of birth! Name and year of birth (or leave blank to exit): in Please provide both name and year of birth! Name and year of birth (or leave blank to exit): the Please provide both name and year of birth! Name and year of birth (or leave blank to exit): fifties Please provide both name and year of birth! Name and year of birth (or leave blank to exit): List: [] ''' '''expected output Name: Sam Year of birth: 1972 Name: Alex Year of birth: 1904 Name: Lena Year of birth: 1999 Name: A Year of birth: 1987 Name's too short! Name: Alex Year of birth: 1765 You're too old! Name: Tina Year of birth: 2042 You're not born yet! Name: Mark Year of birth: in Year must be given in a numerical form! Name: the Year of birth: fifties Year must be given in a numerical form! Name: List: [('Sam', 1972), ('Alex', 1904), ('Lena', 1999)] ''' ######################################################## # approach 3 # added strip() to input # moved 'len(name) < 2' check down def main(): people = [] current_year = 2021 while True: # Ask for name name = input("Name: ").strip() # Break if name is blank if name == "": break continue # Ask for year of birth year = input("Year of birth: ").strip() # Check if name is too short if len(name) < 2: print("Name's too short!") continue # also added this, moved this below year input needed by 'autograder's expected output' # Check if year is numerical if not year.isdigit(): print("Year must be given in a numerical form!") continue year = int(year) # Check if year is valid if year < 1800: print("You're too old!") elif year > current_year: print("You're not born yet!") else: people.append((name, year)) print("List:", people) main() actual and expected output ''' Name: Sam Year of birth: 1972 Name: Alex Year of birth: 1904 Name: Lena Year of birth: 1999 Name: A Year of birth: 1987 Name's too short! Name: Alex Year of birth: 1765 You're too old! Name: Tina Year of birth: 2042 You're not born yet! Name: Mark Year of birth: in Year must be given in a numerical form! Name: the Year of birth: fifties Year must be given in a numerical form! Name: List: [('Sam', 1972), ('Alex', 1904), ('Lena', 1999)] '''