私はpythonで送料を計算するプログラムを作成しようとしています。
ただし、プログラムが正常に機能する場所まで実行することはできません。
私の合計がいくらだったとしても、米国では6ドル、カナダでは8ドルです。私はそれをパスすることができないようです。
total = raw_input('What is the total amount for your online shopping?')
country = raw_input('Shipping within the US or Canada?')
if country == "US":
if total <= "50":
print "Shipping Costs $6.00"
Elif total <= "100":
print "Shipping Costs $9.00"
Elif total <= "150":
print "Shipping Costs $12.00"
else:
print "FREE"
if country == "Canada":
if total <= "50":
print "Shipping Costs $8.00"
Elif total <= "100":
print "Shipping Costs $12.00"
Elif total <= "150":
print "Shipping Costs $15.00"
else:
print "FREE"
int()
を使用します。integer
である必要があります。以下は固定コードです。
total = int(raw_input('What is the total amount for your online shopping?'))
country = raw_input('Shipping within the US or Canada?')
if country == "US":
if total <= 50:
print "Shipping Costs $6.00"
Elif total <= 100:
print "Shipping Costs $9.00" # improved indentation
Elif total <= 150:
print "Shipping Costs $12.00" # improved indentation
else:
print "FREE"
if country == "Canada":
if total <= 50:
print "Shipping Costs $8.00"
Elif total <= 100:
print "Shipping Costs $12.00"
Elif total <= 150:
print "Shipping Costs $15.00"
else:
print "FREE"
文字列を数値的に比較することはできません。代わりに、まずintに変換してから比較します。
例えば:
if int(total) < 50
重複を避けるための変数も役立ちます。
strings数値的に比較しています。 Apple
とorange
を比較するのは不可能です。コンピューターはそれを理解しません。サイズを比較する必要があります。
そのためには、整数に変換する必要があります。 int()
関数を使用します。ここに:
#convert it to an integer straight away
total = int(raw_input('What is the total amount for your online shopping?'))
country = raw_input('Shipping within the US or Canada?')
if country == "US":
if total <= 50:
print "Shipping Costs $6.00"
Elif total <= 100:
print "Shipping Costs $9.00"
Elif total <= 150:
print "Shipping Costs $12.00"
else:
print "FREE"
if country == "Canada":
if total <= 50:
print "Shipping Costs $8.00"
Elif total <= 100:
print "Shipping Costs $12.00"
Elif total <= 150:
print "Shipping Costs $15.00"
else:
print "FREE"
お役に立てれば!
文字列を比較すると、電話帳のように辞書式に比較されます。例えば:
_"a" < "b"
_:True
_"bill" < "bob"
_:True
_"100" < "3"
_:True
数を数える順序で数値を比較したい場合は、int型を使用する必要があります。
total = int(raw_input('What is the total amount for your online shopping?'))
次に、コード内の_"50"
_などの文字列リテラルをすべて、_50
_などの整数リテラルに変更します。
この:
total = raw_input('What is the total amount for your online shopping?')
文字列を生成します。文字列と数値の比較はあまり明確に定義されていません。最初に合計を数値に変換する必要があります。例:
total = int(raw_input('What is the total amount for your online shopping?'))
(これは、ユーザーの入力が数値ではない場合などの入力エラー処理を無視します)
動作がPython 2.xおよびPython 3.x.では Python 2.x :で変化することに注意してください。
異なる数値型と異なる文字列型を除く異なる型のオブジェクトは、決して等しく比較されません。そのようなオブジェクトは一貫して、しかし任意に順序付けられます(したがって、異種配列をソートすると一貫した結果が得られます)。
...
CPython実装の詳細:数字以外の異なるタイプのオブジェクトは、タイプ名の順に並べられます。適切な比較をサポートしない同じタイプのオブジェクトは、アドレス順に並べられます。
while Python 3.x :
異なる数値型を除く異なる型のオブジェクトは、等しく比較されません。
Raw_inputを使用する場合、ユーザー入力は文字列として入力され、文字列の形式で数値を計算できません。したがって、比較を行うには、文字列入力を整数に変更する必要があります。このようにすることができます:
total = int(raw_input('What is the total amount for your online shopping?'))
country = raw_input('Shipping within the US or Canada?')
if country == "US":
if total <= 50:
print "Shipping Costs $6.00"
Elif total <= 100:
print "Shipping Costs $9.00"
Elif total <= 150:
print "Shipping Costs $12.00"
else:
print "FREE"
Elif country == "Canada":
if total <= 50:
print "Shipping Costs $8.00"
Elif total <= 100:
print "Shipping Costs $12.00"
Elif total <= 150:
print "Shipping Costs $15.00"
else:
print "FREE"
else:
print "Try Again"
リンゴと家を追加して不可能な合計を取得するようなものです。合計を取得するには、同じ型、この場合は整数型である必要があります。 int()を使用して、文字列を整数に変換します。
total = int(raw_input('What is the total amount for your online shopping?'))
可能性もあります(ただし、あまり好ましくありません):
total = raw_input('What is the total amount for your online shopping?')
total = int(total)