Почему этот код Python вызывает ошибку? - PullRequest
0 голосов
/ 22 января 2019

Когда я печатаю, например, NICK и HASLO, у меня появляется следующая ошибка:

Traceback (most recent call last):
File "G:/Wszystko/WONSZ/test.py", line 21, in <module>
    nick = nick()
TypeError: 'str' object is not callable

Когда я печатаю nick и haslo, это работает, но либо нет. Что мне делать, чтобы это исправить?Вот код:

x = int
y = int

def nick():
    print ("Podaj swoj nick: ",end=' ')
    nick = input()
    return nick

def haslo():
    print ("Podaj swoje haslo: ",end=' ')
    haslo = input()
    return haslo

print ("Witaj!!!")

while True:
    x = 0
    y = 0
    nick = nick()
    haslo = haslo()

    if nick == "nick":
        x += 1

    if haslo == "haslo":
        y += 1

    if x==0:
        print("Nick bledny")
        if y == 0:
            print("Haslo bledne")
    if x==1 and y==1:
         break

print("Zalogowano")

Что я могу сделать, чтобы это исправить?

1 Ответ

0 голосов
/ 22 января 2019

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

Здесь я изменил имя переменных. Мало того, что это работает, это также легче читать:

x = int
y = int

def nick():
    print ("Podaj swoj nick: ",end=' ')
    nickInput = input()
    return nickInput

def haslo():
    print ("Podaj swoje haslo: ",end=' ')
    hasloInput = input()
    return hasloInput

print ("Witaj!!!")

while True:
    x = 0
    y = 0
    nickVar = nick()
    hasloVar = haslo()

    if nickVar == "nick":
        x += 1

    if hasloVar == "haslo":
        y += 1

    if x==0:
        print("Nick bledny")
        if y == 0:
            print("Haslo bledne")
    if x==1 and y==1:
         break

print("Zalogowano")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...