web-dev-qa-db-ja.com

python if Elif elseステートメント

私は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"
19
sakefon
  1. 文字列ではなく、raw_inputから整数を取得する必要があります。 int()を使用します。
  2. 50、100、150などの比較値も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"
21
Curry

文字列を数値的に比較することはできません。代わりに、まずintに変換してから比較します。

例えば:

if int(total) < 50

重複を避けるための変数も役立ちます。

11
Jeanne Boyarsky

strings数値的に比較しています。 Appleorangeを比較するのは不可能です。コンピューターはそれを理解しません。サイズを比較する必要があります。

そのためには、整数に変換する必要があります。 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"

お役に立てれば!

5
aIKid

文字列を比較すると、電話帳のように辞書式に比較されます。例えば:

_"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_などの整数リテラルに変更します。

5

この:

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

異なる数値型を除く異なる型のオブジェクトは、等しく比較されません。

2
Lie Ryan

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"
2
CasperTN

リンゴと家を追加して不可能な合計を取得するようなものです。合計を取得するには、同じ型、この場合は整数型である必要があります。 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)
1