Python while loop not ending

时间:2015-09-14 15:43:29

标签: python if-statement while-loop

I'm having some while Loop issues. My goal is to make it so the while loop end if the user enters a negative value 3 times. The issue is when I get to the third message it doesn't end with the "milesLoop" like it should (I tried using one loop but I want to test using multiple loops) This may be an easy issue to fix but I'm stuck.

This is the python code:

__author__ = 'MichaelCorbett'
import sys

print('Michael Corbett converter ')
print('\n')

milesLoop = 1
fhietLoop = 1
gallonLoop = 1
poundsLoop = 1
inchesLoop = 1

while milesLoop == 1:

    miles = float(input('What\'s up Will, how many miles do you wish to convert to Kilometers? '))
    if miles < 0:
        print('This converter does not accept negeative values. Try again!')

        miles = float(input('What\'s up Will, how many miles do you wish to convert to Kilometers? '))
        if miles < 0:
            print('This converter does not accept negeative values. Try again')

            miles = float(input('What\'s up Will, how many miles do you wish to convert to Kilometers? '))
            if miles < 0:
                print('This converter does not accept negeative values. Program is Terminated')
                milesLoop = 2


                while fhietLoop == 1:

                    Fheit = float(input('What temperature is it outside in Fahrenheit? '))
                    if Fheit < 0 and Fheit > 1000:
                        print('This converter does not accept negeative values.')

                        Fheit = float(input('What temperature is it outside in Fahrenheit? '))
                        if Fheit < 0 and Fheit > 1000:
                            print('This converter does not accept negeative values.')

                            Fheit = float(input('What temperature is it outside in Fahrenheit? '))
                            if Fheit < 0 and Fheit > 1000:
                                print('This converter does not accept negeative values. Program is Terminated')
                                fhietLoop = 2


                            while gallonLoop == 1:

                                gallon = float(input('How many gallons are you trying to convert? '))
                                if  gallon < 0:
                                    print('This converter does not accept negeative values.')

                                    gallon = float(input('How many gallons are you trying to convert? '))
                                    if  gallon < 0:
                                        print('This converter does not accept negeative values.')

                                        gallon = float(input('How many gallons are you trying to convert? '))
                                        if  gallon < 0:
                                            print('This converter does not accept negeative values. Program Terminated')
                                            gallonLoop = 2


                                        while poundsLoop == 1:

                                            pounds = float(input('How many pounds would you like to convert? '))
                                            if  pounds < 0:
                                                print('This converter does not accept negeative values.')

                                                pounds = float(input('How many pounds would you like to convert? '))
                                                if  pounds < 0:
                                                    print('This converter does not accept negeative values.')

                                                    pounds = float(input('How many pounds would you like to convert? '))
                                                    if  pounds < 0:
                                                        print('This converter does not accept negeative values. Program Terminated')
                                                        poundsLoop = 2


                                                    while inchesLoop == 1:

                                                        inches = float(input('How many inches would you like to convert? '))
                                                        if  inches < 0:
                                                            print('This converter does not accept negeative values.')

                                                            inches = float(input('How many inches would you like to convert? '))
                                                            if  inches < 0:
                                                                print('This converter does not accept negeative values.')

                                                                inches = float(input('How many inches would you like to convert? '))
                                                                if  inches < 0:
                                                                    print('This converter does not accept negeative values. Program Terminated')
                                                                    inchesLoop = 2



                                                                # Calculations

                                                                kilometers = miles * 1.6
                                                                celsius = int((Fheit - 32) * 5/9)
                                                                liters = gallon * 3.9
                                                                kilograms = pounds * .45
                                                                centimeters = inches * 2.54

                                                                # Output

                                                                print('\n')
                                                                print(miles,  ' miles is ',  kilometers,  ' Kilometers')
                                                                print('Its is ', celsius, 'Celsius outside.')
                                                                print(gallon,  ' gallons is ',  liters,  ' liters')
                                                                print(pounds,  ' pounds is ',  kilograms,  ' kilograms')
                                                                print(inches,  ' inches is ',  centimeters,  ' centimeters')

2 个答案:

答案 0 :(得分:3)

def get_float(prompt):
    while True:
       try:
          return float(input(prompt))
       except:
          print "Thats not a number!"


def get_positive_number(prompt,tries=3):
    for i in range(tries):
         result = get_float(prompt)
         if result >= 0: return result
         print "Sorry Negative not allowed %d/%d"%(i,tries)

while True:
     result = get_positive_number("How Many Gallons?")
     if result is None: 
        print "OK DONE"
        break
     print "Convert %0.2f Gallons"%(result)

答案 1 :(得分:-2)

__author__ = 'MichaelCorbett'
import sys

def myLoop(question, tries = 0):
    while True: 
        if tries == 3:
            sys.exit()
        user_in = float(input(question))
        if user_in < 0:
            print('This converter does not accept negeative values. Try again!')
            tries += 1
        else:
            return user_in

print('Michael Corbett converter\n')

miles = myLoop('What\'s up Will, how many miles do you wish to convert to Kilometers?')
Fheit = myLoop('What temperature is it outside in Fahrenheit?')
gallon = myLoop('How many gallons are you trying to convert?')
pounds = myLoop('How many pounds would you like to convert?')
inches = myLoop('How many inches would you like to convert?')

# Calculations

kilometers = miles * 1.6
celsius = int((Fheit - 32) * 5/9)
liters = gallon * 3.9
kilograms = pounds * .45
centimeters = inches * 2.54

print('\n{0} miles is {1} Kilometers'.format(miles, kilometers))
print('Its is {0} Celsius outside.'.format(celsius))
print('{0} gallons is {1} liters'.format(gallon, liters))
print('{0} pounds is {1} kilograms'.format(pounds, kilograms))
print('{0} inches is {1} centimeters'.format(inches, centimeters))