Найти - Пользователи
Полная версия: Помогите исправить ошибку TypeError: must be str, not int
Начало » Python для новичков » Помогите исправить ошибку TypeError: must be str, not int
1 2
xam1816
m1r42
и, о чудо теперь можно не заморачиваться с типами str и int
если метод требует на вход тип int, то ведь можно об этом позаботиться вне этого метода. привести в нужный тип. Почему то картинка вспомнилась
m1r42
py.user.next
Это всё, конечно, интересно, но там весь модуль random надо пересматривать, потому что это не единственный подобный баг в нём. Когда он писался, то время прошло уже давно, а ошибки старые остались, которые для современного питона смотрятся как-то сопливо.
А почему это надо считать багом? Ведь интерпретатор правильно сообщает об ошибке.
m1r42
xam1816
если метод требует на вход тип int, то ведь можно об этом позаботиться вне этого метода. привести в нужный тип. Почему то картинка вспомнилась
Минутка юмора. Вот и я о том же.
py.user.next
m1r42
А почему это надо считать багом? Ведь интерпретатор правильно сообщает об ошибке.
Он не сообщает, что аргументы для функции randint() не того типа. Этот случай использования функции randint() не учтён и фактически выпадает именно внутренний код, когда пытается это выполнить. Хорошо, что он выпал и что-то вывел на экран, а мог бы и неправильно сработать втихую и выдать какой-то якобы правильный результат.

Вот примеры правильных обработок аргументов не того типа
  
>>> 'abc'.split(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: must be str or None, not int
>>>
>>> ''.join(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only join an iterable
>>>
>>> import math
>>> 
>>> math.cos('x')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: must be real number, not str
>>>
m1r42
py.user.next
Он не сообщает, что аргументы для функции randint() не того типа. Этот случай использования функции randint() не учтён и фактически выпадает именно внутренний код, когда пытается это выполнить. Хорошо, что он выпал и что-то вывел на экран, а мог бы и неправильно сработать втихую и выдать какой-то якобы правильный результат.
Понял.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB