Я пытаюсь написать программу на Python, которая будет распечатывать тексты 99 бутылок пива кусками, с которыми я должен работать. Однако мне нужна последняя строка, чтобы сказать «1 бутылка пива» вместо «1 бутылка s пива».

Я заключил свой код в оператор if, но, похоже, оператор if игнорируется. Что я делаю не так?

verse = '''
{some} bottles of beer on the wall
{some} bottles of beer
Take one down, pass it around
{less} bottles of beer on the wall
'''

verse2 = '''
{some} bottles of beer on the wall
{some} bottles of beer
Take one down, pass it around
1 bottle of beer on the wall
'''

for bottles in range(99 , 1, -1):
  if bottles >= 2:
    print(verse.format(some = bottles, less = bottles - 1))
  else:
    print(verse2.format(some = bottles))
0
Nightviz1on 21 Сен 2018 в 22:03

2 ответа

Лучший ответ

Диапазоны не включают конечную точку, поэтому последний элемент вашего диапазона не 1, а 2.

Если вместо этого вы измените оператор if на if bottles > 2:, результат будет правильным.

1
wim 21 Сен 2018 в 19:06

Попробуй это:

print(list(range(99 , 1, -1)))

Результат должен быть:

[99, 98, 97, ..., 5, 4, 3, 2]

Номер 1 так и не появился.

Чтобы решить эту проблему, просто измените range(99, 1, -1) на range(99, 0, -1).

2
Philip Tzou 21 Сен 2018 в 19:07