Возможно, функция возвращает значение None из-за того, что не происходит возврат значения (return) после второго ввода пользователя, когда введена правильная буква.
Для того чтобы функция возвращала выбранную игроком букву (X или O) даже при вводе неправильной буквы, можно использовать цикл, который будет продолжаться до тех пор, пока игрок не введет правильную букву. Например:
```python
def choose_letter():
while True:
letter = input("Выберите букву X или O: ")
if letter.upper() in ['X', 'O']:
return letter.upper()
else:
print("Неверный ввод. Пожалуйста, введите букву X или O.")
```
В данном случае цикл будет продолжаться до тех пор, пока игрок не введет корректное значение ('X' или 'O'), после чего функция вернет выбранную букву.