Я не уверен, почему этот код не работает для нескольких входов (из CodingBat, ссылка на вопрос: Exercise Link ). Подробности проблемы ниже, я мог бы, вероятно, сделать этот вопрос с if elif
заявлениями, но я хочу использовать словари. Кроме того, я прочитал, что не рекомендуется получать значения ключа из словаря, как используется ниже. Но я буду признателен, если вы укажете на проблему в программе ниже
Вы едете слишком быстро, и полицейский останавливает вас. Напишите код для вычисления результата, закодированный как значение типа int: 0 = нет билета, 1 = маленький билет, 2 = большой билет. Если скорость равна 60 или меньше, результат равен 0. Если скорость находится между 61 и 80 включительно, результат равен 1. Если скорость равна 81 или больше, результат равен 2. Если это не ваш день рождения - в этот день ваш Скорость может быть на 5 выше во всех случаях.
- поймал_скорость (60, Ложь) → 0
- поймал_скорость (65, Ложь) → 1
- поймал_скорость (65, правда) → 0
def caught_speeding(speed, is_birthday):
Bir_dict = {0:speed<=60,1:61<=speed<=80,2:speed>=81}
NoBir_dict = {0:speed<=65,1:66<=speed<=85,2:speed>=86}
def getKey(dict,value):
return [key for key in dict.keys() if (dict[key] == value)]
if is_birthday:
out1=getKey(Bir_dict,True)
return out1[0]
else:
out2=getKey(NoBir_dict,True)
return out2[0]
Программа не работает для
caught_speeding(65, False)
caught_speeding(65, True)
И работает на
caught_speeding(70, False)
caught_speeding(75, False)
caught_speeding(75, True)
caught_speeding(40, False)
caught_speeding(40, True)
caught_speeding(90, False)
caught_speeding(60, False)
caught_speeding(80, False)