2016-05-04 3 views
0

私は初心者のpythonコードライターです。私は燃料転換プログラムで小さなスタートを切っています。プログラムはあなたの名前を尋ね、 1リットルあたりのキロメートルです。現在、プログラムはMPGラインに変換されるまではうまく動作しますし、yを押すと何もしません。私は燃料変換プログラムを書いていますが、それは動作しません:(

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) 

申し訳ありません:(その上あなたはそれが悪いと思いますが、私はちょうどのpythonを始め、私はいくつかの助けが必要な場合:)

+0

「yが真ならば」という意味では意味がありません。それは常に偽です。 'y'は定数タプルです。それは文字通り「真実」ではありません。 –

+1

ちなみに、Pythonでは 'is'は別のものを意味します。ちょうど '=='を使ってください。 – JustDucky

答えて

0

is KEYW Pythonのordは、2つの変数がメモリ内の同じ場所を指しているかどうかをチェックします。 yは、値が文字列であるため、シングルトンTrueと同じメモリ位置を決して指しません。私はあなたが何を意味する

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

はい、Pythonistaは上記のコメントで同じことを言いました。 )あなたの入力のためにもありがとうございます; – thegravyman

1

重症トリムダウンと固定インデント(と思う...)

if y is Trueと同様if y is not Trueがここに意味をなさないようなものであると思います。

また、isと言うと、isおよび==は、「同等」をチェックするための同等の表現として機能することがありますが、必ずしもそうではありません。 ==は同等かどうかをチェックし、isはオブジェクトの同一性をチェックします。 2つのオブジェクトの一致をチェックするには、==を使用する必要があります。 Noneを除いて、==の代わりにisを使用することが一般的には好ましいです。

あなたはstrに無計画に変換しています。彼らはすでに弦です。

mpg変換では、すでに浮動小数点数(おそらくint)があります。ここでintに変換する必要はありません。 mpgが<であると仮定します。intキャスティングはこの戻り値をゼロにします

あなたの数学もまた後方にあります。マイルガロンあたり。同様に、ガロンあたりのキロメートル。キーボードから押されて

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

ずっとずっと、私は 'in'の使用法を知らなかったし、あなたがこの知識を共有していることを非常に感謝しています。助けてくれてありがとう – thegravyman

0

あなたが直接yを取ることができない、あなたは、それを保存、(必要とされるであろうEnterキーを押す)を入力としてそれを取ることが条件を満たしているかどうかを確認し、ロジックを適用する必要があります。

yとnをタプル(意図的にもそうでなくても)として定義しようとしています。この場合、他の単語もyesまたはorとしたいと思います。

この場合、このロジックを適用できます。

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. 

いくつかの注意は:

  • あなたは(あなたがしているようだ) のpython3を使用している場合は、入力を取得した後str()を使用する必要はありません。 input()は文字列を返します。

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

    あなたが入力した値がすでに 文字列であるため、さらに多くのreduntantです:では

  • はどこかあなたはこのような何かをしました。

  • コードでは、一部の入力を変数に割り当てていませんでした。後で使用する場合は、それらを割り当てる必要があります。

これらの点に注意してください。

+0

ヒントとヒントをありがとう、私は入力を入力= 123を使用することを学んだy y:....しかし、とにかく助けてくれてありがとう – thegravyman