if the input is not number, let user input again - 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: if the input is not number, let user input again (/thread-27227.html) Pages:
1
2
|
if the input is not number, let user input again - teatea - May-30-2020 hi :) i am starting to learn python, and learning from Automating Boring Stuff With Python, then i tried to implement the knowledge and do something by myself. i am creating this program that asks user for the age. when i tested the program, i realised if i didn't enter the number correctly as integer, the program would not continue. so i tried to create a condition for the program to check whether it is integer or not, if not, the user can type again, and then the program would print 'thank you', and continue to print the calculated value, and continue until the end. however, i am caught up for a lengthy period, so i think i should post a question to ask someone knowledgeable, here are my codes : print('hello there') print('what is your name?') myName = input() print('your name is ' + myName + ', it is nice to meet you') print('the length of your name is composed of ' + str(len(myName)) + ' letters.') print('what is your age?') myAge = input(int()) if myAge == input(int()): print('thank you') else: print('please enter the number only') while myAge != int(): print('please enter the number only') myAge = input(int()) print('thank you') print('you will be ' + str(int(myAge) + 1) + ' next year') print('this is the end of this program')thank you :) RE: if the input is not number, let user input again - Gribouillis - May-30-2020 This is a very common question. At the same time, the answer is not obvious because it forces you to use the exceptions mechanism. Here is one way to do it while True: try: age = int(input("How old are you? ")) except ValueError: print("Invalid value. Please enter an integer! Let's try again...") else: break print("You are {} years old.".format(age)) RE: if the input is not number, let user input again - DPaul - May-30-2020 if you do input('What is your age? ')You will get a string. To test if this string is a number with int(),you might look into try / except / finally clauses. This way you program will not crash when int() fails. (But there are many other ways) Paul RE: if the input is not number, let user input again - teatea - May-31-2020 thank you so much!!! i am loving the program :) feels so good that it finally runs!!! RE: if the input is not number, let user input again - ibutun - May-31-2020 print('hello there') print('what is your name?') while True: myName = input() try: if str(myName) == True: print('your name is ' + myName + ', it is nice to meet you') print('the length of your name is composed of ' + str(len(myName)) + ' letters.') else: print('Please use the alphabet instead of the number') continue print('what is your age?') while True: myAge = input() try: myAge = int(myAge) print('thank you') except ValueError: print(f"{myAge} isn't a number. Please enter a number!") pass print('thank you') print('you will be ' + str(int(myAge) + 1) + ' next year') print('this is the end of this program') Help me how can i solved it?
RE: if the input is not number, let user input again - menator01 - May-31-2020 Your missing except for the first try statement RE: if the input is not number, let user input again - ibutun - May-31-2020 print('hello there') print('what is your name?') while True: myName = input() try: if str(myName) == True: print('your name is ' + myName + ', it is nice to meet you') print('the length of your name is composed of ' + str(len(myName)) + ' letters.') else: print('Please use the alphabet instead of the number') continue print('what is your age?') while True: myAge = input() try: myAge = int(myAge) print('thank you') except ValueError: print(f"{myAge} isn't a number. Please enter a number!") pass except: print('thank you') print('you will be ' + str(int(myAge) + 1) + ' next year') print('this is the end of this program')it works but it ends first loop and print wrong sentences and don't ask second question also...
RE: if the input is not number, let user input again - menator01 - May-31-2020 Another way. Modified code a little. #! /usr/bin/env python3.8 while True: try: my_name = input('What is your name: ') if my_name.isdigit(): print(f'{my_name} is a number. Please use letters for a name.') continue else: print(f'Your name is {my_name}. It\'s nice to meet you') print(f'The length of your name is {len(my_name)} letters.') break except ValueError as error: print(f'Error: {error}') break while True: try: my_age = input(f'{my_name.title()}, what is your age: ') if my_age.isalpha(): print(f'{my_age} is not allowed in age') continue else: age = int(my_age) + 1 print(f'{my_name.title()} will be {age} next year.') break except ValueError as error: print(f'Error: {error}') break
RE: if the input is not number, let user input again - ibutun - May-31-2020 (May-31-2020, 02:52 PM)menator01 Wrote: Another way. Modified code a little. Friend i want to do like this... Thank you I understood the working logic of some codes like x.isalpha(): , y.isdigit():, while loop must be end with except code, and also When the application is finished, we have to use the "break" command to switch to the other application. But i ask another question this programme work perfect but when i enter my name like 15.1 (float) is says: is this float is not a digit ?
RE: if the input is not number, let user input again - menator01 - May-31-2020 Updated code to check for floats May not be best method but, works #! /usr/bin/env python3.8 while True: try: my_name = input('What is your name?: ') if my_name.replace('.','').isdigit(): print(f'{my_name} is a number. Please use letters for a name.') continue else: print(f'It\'s nice to meet you {my_name.title()}') print(f'{my_name.title()}, your name is {len(my_name)} letters long.') break except ValueError as error: print(f'Error: {error}') break while True: try: my_age = input(f'{my_name.title()}, what is your age?: ') if my_age.isalpha(): print(f'{my_name.title()}, {my_age} is not a number.') continue else: age = int(my_age) + 1 print(f'{my_name.title()}, you will be {age} next year.') break except ValueError as error: print(f'Error: {my_name.title()}, please only use whole numbers for age.') continue
|