Ошибка TypeError: '<' not supported between instances of 'NoneType' and 'int'

from random import randint

class Die:
    def __init__(self, sides):
        self.sides = sides
    
    def roll_die(self):
        print(f'Кубик брошен! \nВыпало: {randint(1, self.sides)}')

my_die = Die(20)
x = my_die.roll_die()
if x < 20:
    my_die.roll_die()
else:
    print('Победа!')

При выполнении программы возникает следующая ошибка:

Traceback (most recent call last):  
File "c:/Users/Computer/Desktop/Учеба/python_work/9_14v2.py", line 12, in 
  <module>
  if x < 20:
TypeError: '<' not supported between instances of 'NoneType' and 'int'

Как это можно исправить, и в чем я был не прав?


Ответы (1 шт):

Автор решения: Sergey Rufanov

У вас по коду ожидается, что функция roll_die() возвращает int, а фактически она ничего не возвращает (о чем Python вам в ошибке и говорит) - в ней даже нет return-а.. Т.е. должно быть:

def roll_die(self):
    result = randint(1, self.sides)
    print(f'Кубик брошен! \nВыпало: {result}')
    return result
→ Ссылка