Это работает, но зачем менять индекс, вычитая 1 - PullRequest
2 голосов
/ 17 июня 2020

Здесь новичок, вопрос, почему мне нужно вычесть единицу, чтобы ссылаться на правильный индекс для month_name и порядкового номера.

Это выводит дату, заданный год, месяц и день в виде чисел из входных данных.

months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 
          'August', 'September', 'October', 'November', 'December']

endings = ['st', 'nd', 'rd'] + 17 * ['th'] \
        + ['st', 'nd', 'rd'] + 7 * ['th'] \
        + ['st']

year = input('Year: ')

month = input('Month (1-12: ')

day = input('Day (1-31): ')

month_number = int(month) 

day_number = int(day)    

month_name = months[month_number-1]  #Although it works, what's the logic.
ordinal = day + endings[day_number-1 #Although it works, what's the  logic.

print(month_name , ' ' + ordinal , ', ' + year)

Ответы [ 3 ]

3 голосов
/ 17 июня 2020

Потому что python имеет нулевой индекс. Это означает, что первым элементом является 0, а не 1

Так, например:

В вашем коде март будет задан пользователем как 3 (1 января, 2 февраля, 3 марта)

Но в вашем списке python март будет на 2-м месте (0 января, 1 февраля, 3 марта)

Большинство языков кодирования индексируются 0 и для python все, что можно повторить, также индексируется 0

1 голос
/ 17 июня 2020

Просто потому, что индекс Python начинается с 0.

Если вы определите список следующим образом:

sample_list = ["Jan", "Feb", "Mar"]
print(sample_list[0])

, вы получите Jan вместо Feb .

Аналогично, индекс Feb равен 1, а Mar равен 2.

1 голос
/ 17 июня 2020

В большинстве языков программирования есть списки с нулевым индексом.

Например:

list = ["one", "two", "three"]

print(list[0])  # one
print(list[2])  # three
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...