My code doesn't work, can someone help me? - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: My code doesn't work, can someone help me? (/thread-31585.html) |
My code doesn't work, can someone help me? - aldasrasickas - Dec-21-2020 my code: largest = None smallest = None while True: num = input("Enter a number: ") if num == "done" : break try: num1 = int(num) except ValueError: print('Invalid input') continue for number1 in num: if largest is None: largest = number1 elif largest > number1: largest = number1 print("Maximum is", largest) for number2 in num: if smallest is None: smallest = number2 elif smallest < number2: smallest = number2 print("Minimum is", smallest)My desired output would be if I used 2,8,9,python,4,10 would be: Invalid input Maximum is 10 Minimum is 2 But my output shows: Invalid input Maximum is d ← Mismatch Minimum is o ← Mismatch d and o are from word done RE: My code doesn't work, can someone help me? - jefsummers - Dec-21-2020 You are using num for the input, then expect that num will end up being the list that you can cycle over, and you also never append the integer to the list. Minor changes, try: largest = None smallest = None num = [] while True: num_input = input("Enter a number: ") if num_input == "done" : break try: num1 = int(num_input) num.append(num1) except ValueError: print('Invalid input') continue for number1 in num: if largest is None: largest = number1 elif largest > number1: largest = number1 print("Maximum is", largest) for number2 in num: if smallest is None: smallest = number2 elif smallest < number2: smallest = number2 print("Minimum is", smallest)
RE: My code doesn't work, can someone help me? - jefsummers - Dec-21-2020 Oh, and btw - you reverse minimum and maximum as shown in results above. RE: My code doesn't work, can someone help me? - DeaD_EyE - Dec-21-2020 Hint: Use a function to split user-input and logic to get minimum and maximum. def get_number(): """ Helper function to get one int from user input """ while True: num_input = input("Enter a number: ") if num_input.lower() == "done": return None try: return int(num_input) except ValueError: print('Invalid input') def get_min_max(): """ Primitive implementation using a list with min and max. """ numbers = [] while True: number = get_number() if number is None: break numbers.append(number) return min(numbers), max(numbers) def get_min_max_oneshoot(): """ Returns minimum and maximum of entered ints. The ints itself are not stored in a list. """ first_run = True minimum = None maximum = None while True: number = get_number() if number is None: break if first_run: first_run = False minimum = number maximum = number continue minimum = min(number, minimum) maximum = max(number, maximum) return minimum, maximum min_value_1, max_value_1 = get_min_max_oneshoot() # min_value_2, max_value_2 = get_min_max()The function get_min_max is the easier implementation.get_min_max_oneshoot is like your implementation, but without storing any history values.You get only min and max, all other values are not stored. RE: My code doesn't work, can someone help me? - aldasrasickas - Dec-21-2020 (Dec-21-2020, 01:09 PM)jefsummers Wrote: Oh, and btw - you reverse minimum and maximum as shown in results above. Thank you for your help, my head almost exploded from this one. RE: My code doesn't work, can someone help me? - aldasrasickas - Dec-21-2020 (Dec-21-2020, 01:51 PM)DeaD_EyE Wrote: Hint: Use a function to split user-input and logic to get minimum and maximum. Thank you for the help, I appreciate it. |