как узнать, правильна ли логика моей программы? - PullRequest
0 голосов
/ 15 апреля 2019

Моя домашняя работа - написать программу, которая рассчитывает стоимость проезда на такси. Тем не менее, такси взимает базовый тариф в размере £ 2,00 плюс £ 2,00 за милю за каждую из первых пяти миль и £ 1,00 за милю в последующем. и учитель намекнул, что мы можем написать часть, которая рассчитывает стоимость проезда как функцию

это то, что я сделал ... ошибки нет, но единственная проблема в том, что моя программа не работает при вводе любого расстояния

user_fare = int(input('Please enter the distance '))
if user_fare == 0:
    print('2')
elif user_fare > 0 and user_fare < 5:
    def distance_into_money(fare):
        return ((user_fare*2)+2)
        print(distance_into_money)
elif user_fare > 5:
    def distance_into_money(fare):
        return ((user_fare*2)+1)
        print(distance_into_money)
else:
    print('Error')

Я ожидаю, что результат в 1 милю будет равен «£ 4,00», а пробег в 6 миль - «£ 13,00», а результат «-1 мили» будет «ошибкой», но у моей программы нет вывода

1 Ответ

3 голосов
/ 15 апреля 2019

Функция distance_into_money должна быть определена вне ваших логических выражений.И для вас будет лучше начать с логики этой функции.

Давайте также переработаем вашу логику:

  1. Стоимость проезда менее 5 миль составляет 2 доллара США (базовый уровень) + 2 доллара США за милю.
  2. Более 5 миль.Стоимость проезда составляет 2 доллара США (базовый уровень) + 2 доллара США за милю * 5 (за 5 миль) + 1 доллар США за милю (за каждую милю свыше 5).Переработав все это в вашем коде, мы получим
# Defining our function first allows us to use it later.
# None of the code in the function is executed until you call the function later
def distance_into_money(dist):
    if 0 <= dist <= 5: # Python supports logical statements like this
        return 2 + (dist*2)
    if dist > 5:
        return 2 + (2*5) + 1*(dist-5)
        # Again, this is $2 base + $2/mil * 5 mil + $1/mi * (number of miles over 5 miles)
    return -1 # Indicates there was an error: The dist was not in the acceptable bounds

users_distance = int(input("Please enter the distance "))
users_fare = distance_into_money(users_distance)
if users_fare == -1: # There was an error
    print("Error")
else: #There was not an error
    print("The user's fare is ${}".format(users_fare))

# The str.format method replaces the {} with its argument (which is the user's fare in this case).
...