在Python中创建一个简单的锁和钥匙函数

ubby3x7f  于 2023-08-08  发布在  Python
关注(0)|答案(7)|浏览(95)
class Lock:
 
   def __init__(self):
        self.key_code = "1234"  # Change this to your desired key code
        self.is_locked = True

    def lock(self):
        self.is_locked = True

    def unlock(self, entered_code):
        if entered_code == self.key_code:
            self.is_locked = False
        else:
            print("Incorrect key code. Lock remains locked.")

    def is_locked(self):
        return self.is_locked

def main():
    my_lock = Lock()

    print("The lock is currently locked.")
    while my_lock.is_locked():
        entered code = input("Enter the key code: ")
        my_lock.unlock(entered code)

    print("The lock is now unlocked.")

if __name__ == "__main__":
    main()

字符串
我写了这段代码,但它显示了一个

Type Error: 'bool' object is not callable
The lock is currently locked.


我一直试图创建一个锁定机制,但它显示一个类型错误。我试过很多方法,但还是不能解决它。

q3qa4bjr

q3qa4bjr1#

def lock(self):
         self.is_locked  = True

       def unlock(self, entered_code):
if entered_code == self.key_code:
    self.is_locked = False
else:
    print("Incorrect key code. Lock remains locked.")

       def get_lock_status(self):
return self.is_locked

    def main():
           my_lock = Lock()

 print("The lock is currently locked.")
         while my_lock.get_lock_status():
entered_code = input("Enter the key code: ")
my_lock.unlock(entered code)

        print("The lock is now unlocked.")
if __name__ == "__main__":
  main()

字符串

jhiyze9q

jhiyze9q2#

下面是Python中的一个锁和密钥函数的简单实现:

class Lock:
               def __init__(self, key_code):
     self.key_code = key_code
          self.is_locked = True

          def lock(self):
    self.is_locked = True

def unlock(self, entered_code):
    if entered_code == self.key_code:
        self.is_locked = False
    else:
        print("Incorrect key code. Lock remains locked.")

def is_locked(self):
    return self.is_locked

        def main():
key_code = input("Enter the desired key code: ")
my_lock = Lock(key_code)

print("The lock is currently locked.")
while my_lock.is_locked():
    entered_code = input("Enter the key code: ")
    my_lock.unlock(entered_code)

print("The lock is now unlocked.")

        if __name__ == "__main__":
        main()

字符串
当您运行代码时,它将遵循以下步骤:
1系统提示用户输入所需的键码。2使用输入的键代码创建Lock类的示例。3程序通知用户锁当前已锁定。4它运行一个循环,不断要求用户输入钥匙代码,直到提供正确的钥匙代码,锁被解锁。6输入正确的钥匙密码后,循环中断,并打印消息“The lock is 7 now unlocked.(锁已解锁)”。

wyyhbhjk

wyyhbhjk3#

你几乎在那里:你的代码中有一个小错误。构造函数方法应该命名为init(带双下划线),而不是init。ii.你有一个名为is_locked的示例变量和一个名为is_locked的方法。这可能导致冲突。我将该方法重命名为is_locked_status以避免冲突。iii.调用is_locked_status方法时,需要使用圆括号()来调用该方法并获取其返回值。

class Lock:
    def __init__(self):  # Use double underscores for the constructor method name
        self.key_code = "1234"
        self.is_locked = True

    def lock(self):
        self.is_locked = True

    def unlock(self, entered_code):
        if entered_code == self.key_code:
            self.is_locked = False
        else:
            print("Incorrect key code. Lock remains locked.")

    def is_locked_status(self):  # Rename the method to avoid name conflict
        return self.is_locked

def main():
    my_lock = Lock()

    print("The lock is currently locked.")
    while my_lock.is_locked_status():  # Call the renamed method
        entered_code = input("Enter the key code: ")
        my_lock.unlock(entered_code)
    print("The lock is now unlocked.")

if __name__ == "__main__":
    main()

字符串

wribegjk

wribegjk4#

这里有两种方法来做到这一点。

class Lock:

    def __init__(self):
        self.key_code = "1234"  # Change this to your desired key code
        self.is_locked = True

    def lock(self):
        self.is_locked = True

    def unlock(self, entered_code):
        if entered_code == self.key_code:
            self.is_locked = False
        else:
            print("Incorrect key code. Lock remains locked.")

    def is_locked(self):
        return self.is_locked

def main():
    my_lock = Lock()

    print("The lock is currently locked.")
    while my_lock.is_locked:  # <-- Use variable here instead of getter
        entered_code = input("Enter the key code: ")
        my_lock.unlock(entered_code)

    print("The lock is now unlocked.")

if __name__ == "__main__":
    main()

字符串
这是可行的,但是你想使用getter来访问你的变量。

class Lock:

    def __init__(self):
        self.key_code = "1234"  # Change this to your desired key code
        self.locked = True

    def lock(self):
        self.locked = True

    def unlock(self, entered_code):
        if entered_code == self.key_code:
            self.locked = False
        else:
            print("Incorrect key code. Lock remains locked.")

    def is_locked(self):
        return self.locked

def main():
    my_lock = Lock()

    print("The lock is currently locked.")
    while my_lock.is_locked():
        entered_code = input("Enter the key code: ")
        my_lock.unlock(entered_code)

    print("The lock is now unlocked.")

if __name__ == "__main__":
    main()


问题是变量和方法具有相同的名称。提示在错误中-它使用的变量认为它是一个方法,而不是使用同名的方法。将变量更改为locked使其工作。

n3h0vuf2

n3h0vuf25#

class Lock:
def __init__(self):
    self.passcode_file = "passcode.txt"
    self.key_code = self.load_passcode()
    self.is_locked = True

def load_passcode(self):
    try:
        with open(self.passcode_file, "r") as file:
            return file.read().strip()
    except FileNotFoundError:
        return None

def set_passcode(self, new_passcode):
    self.key_code = new_passcode
    with open(self.passcode_file, "w") as file:
        file.write(new_passcode)

def lock(self):
    self.is_locked = True

def unlock(self, entered_code):
    if entered_code == self.key_code:
        self.is_locked = False
    else:
        print("Incorrect passcode. Lock remains locked.")

def get_lock_status(self):
    return self.is_locked

def main():
my_lock = Lock()

if my_lock.key_code is None:
    new_passcode = input("Set up your passcode: ")
    my_lock.set_passcode(new_passcode)
    print("Passcode set successfully!")

print("The lock is currently locked.")
while my_lock.get_lock_status():
    entered_code = input("Enter the passcode: ")
    my_lock.unlock(entered_code)

print("The lock is now unlocked.")

   if __name__ == "__main__":
main()

字符串
如果您想设置密码并将其保存以备将来使用,请尝试此代码

yftpprvb

yftpprvb6#

class Lock:
           def __init__(self, key_code):
 self.key_code = key_code
      self.is_locked = True

      def lock(self):
self.is_locked = True

          def unlock(self, entered_code):
if entered_code == self.key_code:
    self.is_locked = False
else:
    print("Incorrect key code. Lock remains locked.")

          def is_locked(self):
       return self.is_locked

    def main():
       key_code = input("Enter the desired key code: ")
       my_lock = Lock(key_code)

              print("The lock is currently locked.")
           while my_lock.is_locked():
entered_code = input("Enter the key code: ")
my_lock.unlock(entered_code)

     print("The lock is now unlocked.")

    if __name__ == "__main__":
    main()

字符串
试试这个代码

sxpgvts3

sxpgvts37#

这个问题是由于is_locked属性和is_locked()方法之间的命名冲突造成的。两者具有相同的名称,这导致了错误。为了解决这个问题,让我们将方法重命名为get_lock_status()而不是is_locked()。下面是更正的代码:
class Lock:definit(self):self.key_code =“1234”
self.is_locked = True

def lock(self):
             self.is_locked  = True

def unlock(self, entered_code):
    if entered_code == self.key_code:
        self.is_locked = False
    else:
        print("Incorrect key code. Lock remains locked.")

def get_lock_status(self):
    return self.is_locked

        def main():
               my_lock = Lock()

print("The lock is currently locked.")
while my_lock.get_lock_status():
    entered_code = input("Enter the key code: ")
    my_lock.unlock(entered code)

print("The lock is now unlocked.")
    if __name__ == "__main__":
      main()

字符串

相关问题