0

大きな欠陥や、書式設定や基本的な方法に見られる何かがある場合は、指摘してください。ありがとう!

day = raw_input("How many days?")
locations = raw_input("Where to?")
days = str(day)
location = str(locations)
spendingMoney = 100


def hotel(days):
    return 140 * days

def destination(location):
    if location == "los angeles":
        return 300
    if location == "boston":
        return 400

def rental(days):
    if days < 2:
        return 40 * days
    if days >= 2 and days <= 6:
        return days * 30
     if days >= 7:
        return days * 25

def total_cost(days, location):
    return hotel(days) + destination(location) + rental(days)


print total_cost(days, location)
4

2 に答える 2

2

最初に理解しておくべきことは、raw_inputが文字列を返すことです。そのため、後で結果を文字列にキャストする必要はありません。

あなたが望むのは(私が思うに)にキャストdayするintことなので、上部を変更する必要があります。

day = raw_input("How many days?")
location = raw_input("Where to?")
days = int(day)
spendingMoney = 100

元のコードでdaysは文字列だったので、整数に文字列を追加しようとしていました (エラーが発生しました)。

文字列に整数を掛けることは、元の文字列を数回繰り返すだけなので、完全に有効です。

print 'foobar' * 5
# foobarfoobarfoobarfoobarfoobar
于 2013-01-26T01:53:31.683 に答える
1

問題はそれdaysが文字列であることです。

あなたがするとき

return 140 * days

実際には文字列を 140 倍します。したがって、days== "5" の場合、"555555555555555555..." (140 文字) になります。

あなたは整数で操作したいので、 days = int(day)代わりにそうしてください

于 2013-01-26T01:55:16.140 に答える