2016-08-29 3 views
0
print "Pound Sterling converter" 
print "You can convert pounds to either dollars, euros or yen" 

print 

dollar = 0 
euro = 0 
yen = 0 

convert_to = input ("What currency do you want to convert to? ") 
amount = input("How much would you like to convert? ") 

print 

if convert_to == dollar: 
    amount = amount * 1.3 
elif convert_to == euro: 
    amount = amount * 1.17 
elif convert_to == yen: 
    amount = amount * 133.66 
else: 
    print "You must pick either dollar, euro or yen." 

print amount 

私はおそらく理解できるように、Pythonの初心者です。私がこのプログラムにして欲しいのは、ユーザーに通貨を選択させ(convert_to)、変換したい金額(金額)を選択して、プログラムがそれを変換することだけです。IF文は、通貨コンバータ(Python)の最初のオプションを選択します。

プログラムを実行すると、if文が正しく機能しません。 convert_toが何であるかを見るのではなく、ユーロまたは円を入力したかどうかにかかわらず、convert_to ==ドル部分を通過します。彼らが乗算している数字は単にポンドからの変換率です。

でも、重要なものではありませんが、最後のelse部分は機能しません。プログラムは、 "あなたはドル、ユーロまたは円のいずれかを選択する必要があります"という印刷ではなく、 "入力が定義されていません"というエラーを表示します。事前

+1

を試してみてください。それらをそれぞれ異なる値に変更します。 –

+1

「どの通貨に変換しますか?」の場合、数字選択または文字列入力が必要ですか? – depperm

+2

'dollar'は' 'dollar ''でなければならず、他の人も同じです。 'amount'は' int(amount) 'でなければなりません –

答えて

1

私が正しく理解していれば、ユーザはそれぞれドル、ユーロ、または円の変換のために入力として "0"、 "1"または "2"を入力します。したがって、ドル、ユーロ、円の初期値を変更する必要があります。それを変更すると、整数入力のバージョンが動作します。

dollar = 0 
euro = 1 
yen = 2 

入力は、「ドル」、「ユーロ」などの文字列または「円」の場合、変数はこれらのそれぞれの文字列に変更する必要があるので、まず、あなたのように変数を設定する必要があります。

dollar = "dollar" 
euro = "euro" 
yen = "yen" 

次に、raw_inputの入力タイプを変更します。これは、Pythonがこのタイプの入力で文字列入力を認識する必要があるためです。あなたはinput変数に文字列を渡すしようとした場合、すべての変数の初期値は0であるため、それは常にconvert_toを比較するときの文がtrueを返した場合、0を返すとします

convert_to = raw_input ("What currency do you want to convert to? ") 

:だからにconvert_toを変更dollar,euroまたはyen。ドルへのcomparsionが最初に恵まれているので、それは常にその場合に行く。 これは、コードを実行するために必要な変更です。

追加:変数を1つのフィールドにしか使用していないので、この場合は変数は必要ありません。したがって、if文では、次のように特定の文字列と比較することができます。

if convert_to == "dollars": 
    amount *= 1.3 
elif convert_to == "euros": 
    amount *= 1.17 
elif convert_to == "yen": 
    amount *= 133.66 
else: 
    print "You must pick either dollar, euro or yen." 

希望します。

+0

ありがとう、変数の値を別の変数に変更してください。私はちょうど疑問に思っていた、なぜこの作品でしたか?すべての値が0だったとき、プログラムは何をしていましたか? – Fred

+0

入力の種類は?整数または文字列? –

+0

あなたは何を意味するのか完全にはっきりしません(私の知識の不足を許して、私は数日前に始まったばかりです)。私は、ドル= 0、ユーロ= 0、円= 0から異なる番号を持つすべてに変更したとき、なぜそれが機能したのですか? – Fred

1

おかげでこれに変更してみてください:

if convert_to == "dollar": 
    amount = float(amount) * 1.3 
elif convert_to == "euro": 
    amount = float(amount) * 1.17 
elif convert_to == "yen": 
    amount = float(amount) * 133.66 

2つの変更があります。最初の1つは、通貨(ドル、ユーロ、円)を文字列に設定することです。これを文字列にするユーザーの入力と比較することができます。次に、ユーザーが入力した金額が再び文字列であるため、変換された金額を計算するためにはfloatに変換する必要があります。

+0

この回答は質問に答えますが、あなたの推論をもう少し説明することは良い考えです。むしろ「これを行う」と言っているのではない。 –

+0

ああ、あなたは私を誤解しました。 **あなたの答え**に説明を載せることを意味しました**私にそれを説明しません**。あなたがしていることを手に入れます。 –

0

input()関数が整数を返すと仮定しているため、コードが機能していません。それはしません。 input()関数は、文字列を返すので、この:真なることはありません

str == 1

convert_to == dollars

はに等しいです。あなたが比較しているものを文字列に変更するだけです。 変数を使用する代わりに、他の選択肢についてはconvert_to == "dollars"というだけです。また、この行amount = input("How much would you like to convert? ")amount = int(input("How much would you like to convert? "))に変更する必要があります。そのため、入力は文字列ではなく整数として取得できます。

print "Pound Sterling converter" 
print "You can convert pounds to either dollars, euros or yen" 


convert_to = raw_input("What currency do you want to convert to? ") 
amount = int(raw_input("How much would you like to convert? ")) 


if convert_to == "dollars": 
    amount *= 1.3 
elif convert_to == "euros": 
    amount *= 1.17 
elif convert_to == "yen": 
    amount *= 133.66 
else: 
    print "You must pick either dollar, euro or yen." 

print amount 
+0

お返事ありがとうございました。 convert_to = input( "どの通貨に変換しますか?") ファイル ""、1行目を入力すると、このエラーが返されて何らかの理由でコードがアイドル状態になってしまいました。 in NameError:name 'dollars'が定義されていません。 私はPython 2.7を実行していますが、これが問題なのでしょうか? – Fred

+0

@Fred Gimmeそれをチェックするには、 –

+0

@Fredのような文字列を使用していますか、それともあなたの通貨変数はありますか?このコードは、Python2とPython3では正常に動作するはずです(print文の括弧がないことを除いて) –

0

まず、ドル、ユーロ、円は同じ開始値(0)です。

私は、あなたは異なる値を入れなければならないと思います。

dollar = 0 
euro = 1 
yen = 2 

次に、額(印刷額)を表示できますが、計算値は「amountpython」です。

+0

あなたの言っていることはすべて間違いないが、あなたはまだOPのコードにいくつかの非常に重要なエラーやバグについては言及していない。これはただの1つです。 –

+0

多くの改善がなされる。しかし、Fredのコードは、この2つの修正で動作します。 –

0

ドル、ユーロ、円では、ゼロと同じ値に初期化されています。 たとえば、異なる値を割り当てる必要があります。

dollar=0 
euro=0 
yen=0 

そして、すべてのあなたの選択の変数が同じ値であり、この

print "Pound Sterling converter" 
print "You can convert pounds to either dollars, euros or yen" 


convert_to = input ("What currency do you want to convert to? ") 
amount = int(input("How much would you like to convert? ")) 


if convert_to == "dollars": 
    amount *= 1.3 
elif convert_to == "euros": 
    amount *= 1.17 
elif convert_to == "yen": 
    amount *= 133.66 
else: 
    print "You must pick either dollar, euro or yen." 

print amount 
関連する問題