0

私はこの機能を開始して怒っているだけです(間違った出力が得られます):

def rental_car_cost(days):
    x = 40
    if days < 2:
        return days*x
    elif days >= 3:
        return days*x-20
    elif days>= 7:
        return days*x-50
    else:
        print "Please enter nr of days"

また、「日」に数値が入力されていることを確認するにはどうすればよいですか?

4

3 に答える 3

5

何を期待しているのかわかりませんが、elif条件の順序を変更してください。

def rental_car_cost(days):
    if isinstance(days, int):
        x = 40
        if days < 2:
            return days*x
        elif days >= 7:
            return days*x-50
        elif days>= 3:
            return days*x-20
    else:
        print "Please enter nr of days"
于 2013-06-19T16:30:54.993 に答える
3

days>= 7and句がトリガーされることはelseありません。これは、以前のdays >= 3トリガーが同じ入力でトリガーされるためです。if//句はelifelseそのうちの 1 つがトリガーされるまで順番に処理されます。

必要なのはdays < 2、 、days < 7およびの節ですelse

数字以外を検出するには、まず

if not isinstance(days, int):

整数の型チェックを行います。

于 2013-06-19T16:32:07.317 に答える