2017-09-24 7 views
0

Ich erstelle einen Code, der einige Werte für den Kauf eines Hauses berechnet. Es wird den Benutzer nach einer Menge Eingaben fragen und ich möchte sicherstellen, dass das Programm sie nach Ganzzahlen fragt, wenn sie Nicht-Ganzzahlen eingeben.Kann ich Python dazu bringen, eine ValueError-Eingabe auszuwerten?

Ich habe eine Funktion gemacht, die überprüft, ob eine Eingabe eine Ganzzahl ist oder nicht, aber der Interpreter gibt nur einen Wert Fehler zurück, wenn ich eine Zeichenfolge eingab. Ist es möglich, dass der String nach der Eingabe durch die Integer-Check-Funktion läuft?

var=True 

print('Welcome to the interest calculator program.') 

def integer_check(input): 
    try: 
     return True 
    except ValueError: 
     return False 

while var==True: 
    num=int(input('Enter the price of your dream house: \n')) 
    if integer_check(num)==True: 
     if num>=0: 
      print('yay') 
     elif num<=0: 
      print('House price must be a positive number only. Please try again.') 
    elif integer_check(num)==False: 
     print("Sorry, that's not a number. Please try again.") 
+0

Sind Sie sicher, dass Sie die richtige Version von 'integer_check' enthalten? Diese Version sieht so aus, als sollte sie immer 'True' zurückgeben. –

+0

[Ausnahmen bei der Verarbeitung] (https://docs.python.org/3/tutorial/errors.html#handling-exceptions) – wwii

Antwort

1

Surround try .. except .. um int(..) Anruf; Die Überprüfung auf den Rückgabewert des Aufrufs int() hat keine Bedeutung, sobald die Ausnahme ausgelöst wurde, da der Steuerungsfluss dort nicht erreicht wird, wenn die Eingabezeichenfolge keine Ganzzahlzeichenfolge ist.

try: 
    num = int(input('Enter the price of your dream house: \n')) 
except ValueError: 
    # Non-integer 
else: 
    # Integer 

Übergeben Sie die Zeichenfolge an die Funktion und die Funktion sollte versuchen, in int zu konvertieren:

print('Welcome to the interest calculator program.') 

def integer_check(s): 
    try: 
     int(s) 
     return True 
    except ValueError: 
     return False 
    return True 

while True: 
    num = input('Enter the price of your dream house: \n') 
    if integer_check(num): 
     num = int(num) 
     if num >= 0: 
      print('yay') 
      break 
     else: # Use else 
      print('House price must be a positive number only. Please try again.') 
    else: # No need to call integer_check(..) again 
     print("Sorry, that's not a number. Please try again.") 
0

können Sie geben Guss:

def integer_check(i): 
    try: 
     int(i) # will successfully execute if of type integer 
     return True 
    except ValueError: # otherwise return False 
     return False 

Da ferner nur eine haben bestanden/nicht bestanden in Ihrem Hauptprogramm, Änderung:

if integer_check(num)==True: 
    ... 
elif integer_check(num)==False: 
    ... 

zu:

if integer_check(num): 
    ... 
else: 
    ... 
Verwandte Themen