Bottom Page

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Imported function causes prompt repetition
#1
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.
Quote
#2
Looks to me like the last line of getFloat should be dedented / moved to the try-block.
Quote
#3
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
Quote
#4
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')
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy
Quote

Top Page

Possibly Related Threads...
Thread Author Replies Views Last Post
  Need of return in function if statement inside the function already returns Athul 5 517 Aug-16-2018, 10:19 AM
Last Post: DuaneJack
  Finding repetition in string student8 4 959 Oct-15-2017, 07:26 PM
Last Post: student8

Forum Jump:


Users browsing this thread: 1 Guest(s)