2016-05-04 5 views
0

Ich bin ein Anfänger Python-Code-Writer und ich bin klein mit einem Kraftstoff-Konvertierungsprogramm. Das Programm fragt nach Ihrem Namen und wandelt dann eine Meile pro Gallone oder ein kilometer pro liter rate. Derzeit läuft das programm gut, bis es in die umwandlung in MPG linie kommt. wenn du dann y drückst, tut es nichts. lustiges ist, kein syntaxfehler wurde zurückgegeben. bitte hilfe, da ich nichts finden kann drauf :(Ich schreibe ein Kraftstoff-Konvertierungsprogramm und es funktioniert nicht :(

import time 

y = 'y', 'yes', 'yep', 'yea', 'ye' 
n = 'n', 'no', 'nup', 'nay' 

name = str(input("Hey, User, whats your name? ")) 

time.sleep(1.5) 

print("Alright", name, "Welcome the the *gravynet* Fuel Efficiency Converter!") 

time.sleep(1.5) 

str(input("Would you like to convert the fuel efficiency of your motor vehcile? (Miles Per Gallon) (y/n): ")) 

if y is True: 

miles = int(input("How far did you travel (in miles): ")) 

galls = int(input("How much fuel did you consume (in gallons): ")) 

mpgc = (galls/miles) 

print("The MPG Rate is: ", int(mpgc)) 

time.sleep(2) 

print("test print") 
if y is (not True): 

    input(str("Would you like to convert KPL instead? (y/n): ")) 

    time.sleep(1.5) 

    if y is True: 

    kilometers = int(input("How far did you travel (in kilometers): ")) 

    litres = int(input("How much fuel did you consume (in litres): ")) 

    kplc = (litres/kilometers) 

    print("The KPL Rate is: ", int(kplc)) 

    time.sleep(3) 

    exit() 


    if y is not True: 

    print("No worries") 

    time.sleep(1.5) 

    print("Thanks", name, "for using *gravynet* Fuel Efficiency Coverter") 

    time.sleep(1.5) 

    print("Have a good day!") 

    time.sleep(1.5) 

    exit() 

    else : 
    print("Sorry, invalid response. Try again") 
    exit() 


elif not y: 

    print("Please use y/n to answer") 

    time.sleep(2) 

elif not n: 

    print("Please use y/n to answer") 

    time.sleep(2) 

leid, wenn Sie denken, dass ist schlecht, aber ich python gerade erst begonnen und ich brauche etwas Hilfe :)

+0

Gut für eine Sache, 'wenn y ist True' macht keinen Sinn. Es wird immer falsch sein. 'y' ist ein konstantes Tupel. Und es ist nicht das wörtliche "Wahr". –

+1

Übrigens bedeutet 'Python' etwas anderes. Verwenden Sie einfach '==' für jetzt. – JustDucky

Antwort

0

Die is keyw Ord in Python überprüft, ob zwei Variablen auf den gleichen Speicherort im Speicher zeigen. y zeigt nie auf den gleichen Speicherort wie der Singleton True, weil es Wert ist eine Zeichenfolge. Ich vermute, was meinen Sie, etwas zu tun wie

ist
inp = str(input("Would you like to convert the fuel efficiency of your motor vehcile? (Miles Per Gallon) (y/n): ")) 
if inp in y: 
    ... 
+0

ja, Pythonista erwähnte dasselbe im obigen Kommentar. Vielen Dank auch für Ihre Eingabe;) – thegravyman

1

Stark abgespeckte und feste Einbuchtung (ich glaube, ....)

if y is True und ähnlich if y is not True hier keinen Sinn machen.

Auch sprechen von is .. is und == kann als äquivalente Ausdrücke manchmal für die Überprüfung auf "Gleichheit", aber nicht unbedingt funktionieren. == prüft auf Gleichheit, während is auf Objektidentität prüft. Sie sollten == für die Überprüfung auf Gleichheit zwischen zwei Objekten verwenden. Außer für None in diesem Fall ist es im Allgemeinen bevorzugt, is anstelle von == dafür zu verwenden.

Sie konvertieren unnötig auf str. Sie sind bereits Saiten.

In Ihrer mpg-Konvertierung haben Sie bereits eine Gleitkommazahl (möglicherweise ein int). Es besteht keine Notwendigkeit, hier zu einem int zu konvertieren. Angenommen, mpg ist < 1. Dann int Casting wird diese Rückkehr Null machen

Ihre Mathematik ist auch rückwärts. Meilen pro Gallone. Ähnlich Kilometer pro Gallone.

name = input("Hey, User, whats your name? ") 
print("Alright", name, "Welcome the the *gravynet* Fuel Efficiency Converter!") 
mpg = input("Would you like to convert the fuel efficiency of your motor vehcile? (Miles Per Gallon) (y/n): ") 

if mpg in y: 

    miles = int(input("How far did you travel (in miles): ")) 
    galls = int(input("How much fuel did you consume (in gallons): ")) 

    mpgc = miles/galls 

    print("The MPG Rate is: ", mpgc) 

else: 
    kpl = input("Would you like to convert KPL instead? (y/n): ") 

    if kpl in y: 
     kilometers = int(input("How far did you travel (in kilometers): ")) 
     litres = int(input("How much fuel did you consume (in litres): ")) 
     kplc = kilometers/litres 
     print("The KPL Rate is: ", kplc) 

    else: 

     print("No worries") 
     print("Thanks", name, "for using *gravynet* Fuel Efficiency Coverter") 
     print("Have a good day!") 
+0

Vielen Dank, ich war mir nicht bewusst, die Verwendung von "in" und es ist sehr geschätzt, dass Sie dieses Wissen teilen. vielen dank für deine hilfe – thegravyman

0

Sie können nicht direkt y nehmen, wie von der Tastatur gedrückt wird, haben Sie es als eine Eingabe zu übernehmen (Enter-Taste erforderlich wäre), sollte sie prüfen, ob die Voraussetzungen erfüllt, dann die Logik anwenden.

Ich sehe Sie versucht, y und n als Tupel zu definieren (absichtlich oder nicht), In diesem Fall nehme ich an, dass Sie auch diese anderen Wörter wie oder or auch nehmen möchten.

In diesem Fall können Sie diese Logik anwenden;

inp = input("Would you like to convert the fuel efficiency of your motor vehcile? (Miles Per Gallon) (y/n): ") 
if inp in y: # Check if inp corresponds any of the words defined in y 
    # Things to do if `yes` or anything similar entered. 

Einige Anmerkungen:

  • Sie brauchen nicht str() zu verwenden, nachdem Sie Eingabe nehmen, wenn Sie Python3 verwenden (was Sie scheint sind). Weil input() String zurückgibt.

  • In irgendwo haben Sie so etwas wie dieses:

    input(str("Would you like to convert KPL instead? (y/n): "))

    die noch mehr reduntant ist, weil der Wert, den Sie bereits ist eine Zeichenfolge eingegeben.

  • Sie haben auch keine Eingaben für eine Variable im gesamten Code vorgenommen. Sie sollten sie zuweisen, wenn Sie sie später verwenden.

Bitte kümmern Sie sich um diese Probleme.

+0

danke für die tipps und tips, habe ich gelernt, eingabe = 123 zu verwenden, wenn in y dann eingegeben: .... aber trotzdem danke fürs helfen – thegravyman

Verwandte Themen