Я не могу выполнить самую легкую задачу Codewars

#python

#python

Вопрос:

Я очень новичок в программировании и не могу понять, как выполнить самую легкую задачу в codewars. Я чувствую себя таким тупым : (

Вопрос: У меня есть кошка и собака.

Я получил их одновременно с котенком / щенком. Это было много лет назад.

Верните их соответствующий возраст теперь как [Человеческие годы, кошачьи годы, собачьи годы]

Примечания:

  • Человеческие годы > = 1

  • Человеческие годы — это только целые числа

Кошачьи годы

  • 15 лет cat за первый год

  • 9 лет обучения на втором курсе

  • 4 года cat за каждый последующий год

Собачьи годы

  • 15 собачьих лет за первый год

  • 9 собачьих лет за второй год

  • 5 собачьих лет за каждый последующий год

Это мой код:

 def human_years_cat_years_dog_years(human_years):
    catYears = 0
    dogYears = 0

    if human_years == 1:
        catYears = 15
        dogYears = 15

    elif human_years == 2:
        catYears = 24
        dogYears = 24

    elif human_years >= 3:
        catYears = 4*human_years   24 
        dogYears= 5*human_years   24

    return [human_years, catYears, dogYears]
  

Я знаю, что мои проблемы заключаются в части >= 3. Я просто не могу понять, как сделать это правильно, если я не создам оператор IF для каждого целого числа выше 3.

Ответ №1:

Вы забыли убрать первые 2 года при выполнении > = 3 года

 def human_years_cat_years_dog_years(human_years):
    catYears = 0
    dogYears = 0

    if human_years == 1:
        catYears = 15
        dogYears = 15

    elif human_years == 2:
        catYears = 24
        dogYears = 24

    elif human_years >= 3:
        catYears = 4*(human_years-2)   24 
        dogYears= 5*(human_years-2)   24


    return [human_years, catYears, dogYears]
  

Ответ №2:

Другая реализация, меньшая временная сложность, но, возможно, более гибкая, если вы хотите добавить других животных или более сложное старение (например, 15,9,4,3,3,3,3,2,1)

 def years(human, arr):
    return sum( arr[min(i,len(arr)-1)] for i in range(human))

def human_years_cat_years_dog_years(human_years):
    cat = [15,9,4]
    dog = [15,9,5]
    return human_years, years(human_years,cat), years(human_years,dog)