Imported function causes prompt repetition - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: Homework (https://python-forum.io/forum-9.html) +--- Thread: Imported function causes prompt repetition (/thread-15907.html) |
Imported function causes prompt repetition - ward - Feb-05-2019 I have an assignment to prompt for three numbers, then print the largest, smallest, and average of the numbers. I'm to allow floating-point numbers, so I'm importing a module to accommodate that. Here's the code I'm using to solicit the numbers: from pcinput import getFloat first_number = getFloat( "First number: " ) second_number = getFloat( "Second number: " ) third_number = getFloat( "Third number: " )When I run the script, there's a prompt for the first number. When the number is provided, the prompt for the first number repeats, instead of the prompt for the second number. Typing a string of letters shows the error "That is not a number -- please try again", but typing a number shows the same prompt again. (I also can't escape from the repetition, and I have to restart PowerShell to get out of the program, but that's another problem.) Here's the code for the getFloat function: def getFloat( prompt ): while True: try: num = float( input( prompt ) ) except ValueError: print( "That is not a number -- please try again" ) continue return num I've tried to use the getFloat function in other scripts as well, but the same problem occurs, so I suspect there's something wrong with the getFloat function. I'm running Python 3.7. The script is in Windows PowerShell. RE: Imported function causes prompt repetition - micseydel - Feb-05-2019 Looks to me like the last line of getFloat should be dedented / moved to the try-block. RE: Imported function causes prompt repetition - ward - Feb-06-2019 Thanks for your quick response, micseydel. Detenting the last line repaired the problem, and all is running properly now. The corrected function is def getFloat( prompt ): while True: try: num = float( input( prompt ) ) except ValueError: print( "That is not a number -- please try again" ) continue return num RE: Imported function causes prompt repetition - perfringo - Feb-06-2019 I believe that more traditional way is micseydel other suggestion (more concise): def getFloat(prompt): while True: try: return float(input(prompt)) except ValueError: print('That is not a number -- please try again') |