1. ホーム
  2. python

[解決済み] Pythonです。辞書が空かどうかのチェックはうまくいかないようです。

2022-03-17 05:43:48

質問

辞書が空かどうかをチェックしようとしているのですが、うまく動作しません。単にスキップして オンライン というメッセージが表示されるだけで、何も表示されません。何か思い当たることはありますか?

def isEmpty(self, dictionary):
    for element in dictionary:
        if element:
            return True
        return False

def onMessage(self, socket, message):
    if self.isEmpty(self.users) == False:
        socket.send("Nobody is online, please use REGISTER command" \
                 " in order to register into the server")
    else:
        socket.send("ONLINE " + ' ' .join(self.users.keys()))    

解決方法は?

空白の辞書 に評価する。 False をPythonで表示します。

>>> dct = {}
>>> bool(dct)
False
>>> not dct
True
>>>

このように、あなたの isEmpty 関数は不要です。 必要なのは

def onMessage(self, socket, message):
    if not self.users:
        socket.send("Nobody is online, please use REGISTER command" \
                    " in order to register into the server")
    else:
        socket.send("ONLINE " + ' ' .join(self.users.keys()))