[英]'str' object is not callable in python
我在password()
函数中调用此函数password()
,希望它会重新开始。 然后是“ str”对象错误。
码:
import time
def sleepFor(sleepForInt):
time.sleep(sleepForInt / 1000)
def newScreen(): # adte it says
for itemNew in range(26):
print("\n")
def logo(): # ^~-
newScreen()
print("\t\t\t\tLeigh Studio")
indent(6)
return None
def indent(space): # adte it says
for item in range(space):
print("\n")
def password():
userName = input("Enter registered UserName > ")
user = userName
indent(1)
if userName == "leigh flix":
confirm = input("Confirm UserName (y/n) > ")
indent(2)
if confirm == "y":
password = input("\tenter password ) ")
if password == "comics123":
menu()
else:
print("Password is Incorrect")
sleepFor(2000)
password()
else:
password()
else:
print("No registered UserName as: " + user)
sleepFor(2000)
password()
def printID():
print("C:/users/" + user)
def menu():
response = input(printID())
while response != "quit":
if response == "time":
time.ctime()
def main(): # main method
logo()
sleepFor(1200)
newScreen()
password()
# ___Runs program___
main()
错误:
我不知道是否在谈论userName = input("Enter registered userName")
或其他。 哦,顺便说一句,这不是编译错误,而是运行时错误,如果在我未输入正确密码(“ comics123”)时发生的话。
我要问的问题是是否有另一种方法来调用password()
函数而不导致此错误,或者是否有一种方法重复询问用户密码是否不正确。 提前致谢。
您的问题在这一行:
password = input("\tenter password ) ")
该范围内此行password
之后的字符串变量,而不是函数。 只需将此变量重命名为其他变量即可解决该问题。
if confirm == "y":
password = input("\tenter password ) ")
您在此处定义一个名为password
的变量,该变量遮盖了在顶层定义的password()
函数。
if password == "comics123":
menu()
else:
print("Password is Incorrect")
sleepFor(2000)
password()
在这里,您尝试调用作为输入的字符串,就好像它是一个方法一样。
您需要做的是为字符串和函数使用不同的名称。 我建议调用诸如request_password
或input_password
类的函数。
password()
调用失败,因为您错误地选择将标识符password
作为局部变量覆盖(通过password = input("\\tenter password ) ")
语句!),因此隐藏了与此一致的全局(函数)名称。 对本地变量使用不同的标识符,例如passwd = input("\\tenter password ) ")
(然后当然使用passwd
来指代刚刚输入的字符串!-),就可以了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.