Почему не работает определение имени?
Пишу терминальную игрушку по угадыванию числа. Когда вводишь имя пользователя, даже если оно есть в словаре, он пишет, что новый пользователь сохранен и просто перезаписывает очки.... Вот код:
#*** Поиск и запись пользователя в базу ***
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