Spaces:
No application file
No application file
| ''' | |
| 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)] | |
| ''' | |