Почему не работает определение имени?

Пишу терминальную игрушку по угадыванию числа. Когда вводишь имя пользователя, даже если оно есть в словаре, он пишет, что новый пользователь сохранен и просто перезаписывает очки.... Вот код:

#*** Поиск и запись пользователя в базу ***
def Proverka(): #!
    global polsovatel
    global name
    global dic
    if name.find(polsovatel.name) != -1 : #Если имя пользователя есть в словаре начинаем игру
        print("Игра началась!")
    
    else:
        dic[polsovatel.name] = '0' #Если нет - добавляем
        print("Пользователь сохранен")
        print(dic)
 

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

Автор решения: gil9red

В функцию строки str.join можно передавать только то, что можно итерировать (типа строк, списки, ...) А у вас, судя по коду, там число.

Если вы хотите привести число к строке, то вместо:

scoreN = ("".join(dic[key]))

Используйте str:

scoreN = str(dic[key])

UPD.

Но, вообще, я не понимаю зачем вы приводили значение в dic[key] в строку, если после сразу же приводите эту строку в число, как видно тут:

scoreN = ("".join(dic[key]))
polsovatel.score = int(scoreN) + (int(n)-polsovatel.i)*2
scoreS = polsovatel.score - int(scoreN)
...
polsovatel.score = int(scoreN) - 10

Я бы код поменял так:

scoreN = dic[key]
polsovatel.score = scoreN + (n - polsovatel.i) * 2
scoreS = polsovatel.score - scoreN
...
polsovatel.score = scoreN - 10
→ Ссылка