Ошибка типа: неподдерживаемые типы операндов для -: 'str' и 'int' - PullRequest
36 голосов
/ 04 марта 2010

Новичок в python и программировании. Почему я получаю эту ошибку?

def cat_n_times(s, n):
    while s != 0:
        print(n)
        s = s - 1

text = input("What would you like the computer to repeat back to you: ")
num = input("How many times: ")

cat_n_times(num, text)

Ответы [ 2 ]

43 голосов
/ 04 марта 2010
  1. Причиной сбоя является то, что (Python 3) input возвращает строку.Чтобы преобразовать его в целое число, используйте int(some_string).

  2. Обычно вы не отслеживаете индексы вручную в Python.Лучший способ реализовать такую ​​функцию:

    def cat_n_times(s, n):
        for i in range(n):
            print(s) 
    
    text = input("What would you like the computer to repeat back to you: ")
    num = int(input("How many times: ")) # Convert to an int immediately.
    
    cat_n_times(text, num)
    
  3. Я немного изменил ваш API.Мне кажется, что n должно быть число раз , а s должно быть строка .

24 голосов
/ 04 марта 2010

Для дальнейшего использования Python строго типизирован . В отличие от других динамических языков, он не будет автоматически приводить объекты одного или другого типа (скажем, от str до int), поэтому вы должны сделать это самостоятельно. Тебе это понравится в долгосрочной перспективе, поверь мне!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...