首页 > 解决方案 > 这段代码可以缩短吗?带有表情符号的自定义时间状态

问题描述

我正在尝试创建一个自定义状态,您可以在其中实时查看时间,以及指示同一时间的时钟表情符号,我已经做到了,而且它很实用,但我想知道是否有任何方法缩写此代码,还是已经尽可能高效?谢谢

import time

emoji = ""
emojis = ["", "", "", "", "", "",
          "", "", "", "", "", "",
          "", "", "", "", "", "",
          "", "", "", "", "", ""]


while True:
    hour= time.strftime('%H:%M:%S')
    hm = int(time.strftime('%I')) + int(time.strftime('%M'))/100

    if 1 <= hm < 1.30:
        emoji = emojis[0]
    elif 1.30 <= hm < 2:
        emoji = emojis[1]
    elif 2 <= hm < 2.30:
        emoji = emojis[2]
    elif 2.30 <= hm < 3:
        emoji = emojis[3]
    elif 3 <= hm < 3.30:
        emoji = emojis[4]
    elif 3.30 <= hm < 4:
        emoji = emojis[5]
    elif 4 <= hm < 4.30:
        emoji = emojis[6]
    elif 4.30 <= hm < 5:
        emoji = emojis[7]
    elif 5 <= hm < 5.30:
        emoji = emojis[8]
    elif 5.30 <= hm < 6:
        emoji = emojis[9]
    elif 6 <= hm < 6.30:
        emoji = emojis[10]
    elif 6.30 <= hm < 7:
        emoji = emojis[11]
    elif 7 <= hm < 7.30:
        emoji = emojis[12]
    elif 7.30 <= hm < 8:
        emoji = emojis[13]
    elif 8 <= hm < 8.30:
        emoji = emojis[14]
    elif 8.30 <= hm < 9:
        emoji = emojis[15]
    elif 9 <= hm < 9.30:
        emoji = emojis[16]
    elif 9.30 <= hm < 10:
        emoji = emojis[17]
    elif 10 <= hm < 10.30:
        emoji = emojis[18]
    elif 10.30 <= hm < 11:
        emoji = emojis[19]
    elif 11 <= hm < 11.30:
        emoji = emojis[20]
    elif 11.30 <= hm < 12:
        emoji = emojis[21]
    elif 12 <= hm < 12.30:
        emoji = emojis[22]
    elif 12.30 <= hm < 13:
        emoji = emojis[23]


    print(f"{emoji} {hour}")
    time.sleep(1)

标签: pythonpython-3.x

解决方案


我会对指数有所了解,但是以下方法有一些改进。

import time

emojis = ""

while True:
    hour= time.strftime('%H:%M:%S')
    hm = int(time.localtime().tm_hour + time.localtime().tm_min / 30 + 0.5)
    print(f"{emojis[hm]} {hour}")
    time.sleep(1)

推荐阅读