Вы получаете это TypeError
, потому что lim
является строкой. И строки не поддерживают оператор -=
:
>>> s = '10'
>>> s -= 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -=: 'str' and 'int'
Что вам нужно сделать, это преобразовать lim
в целое число, примерно так:
lim = input('Insert number: ')
lim = int(lim)
Не беспокойтесь о print
после, он может также печатать целые числа, а не только строки:)
Я бы также сказал, что есть основная проблема с вашей первой строкой. Судя по вашему коду, это:
#!/usr/bin/env python
должно быть
#!/usr/bin/env python3
, так как вы пишете код с синтаксисом / мода Python 3.
Вы также можете избавиться от оператора global
:
#!/usr/bin/env python3
def sing():
print("This program sings the song 99 bottles of beer on the wall")
lim = input("What number do you want it to count down from?")
lim = int(lim)
while lim > 1:
print(lim, "bottles of beer on the wall", lim, "bottles of beer")
print("Take one down pass it around...")
print(lim, "bottles of beer on the wall")
input("\nPRESS ENTER\n")
lim -= 1
sing()