我很困惑,我试图根据整数值分配十六进制颜色,基本上如下所示:
_total_wn8 = int(input("WN8 value: "))
if 0 > _total_wn8 <= 300:
color = "000" # Black
print(f"Colour = {color} (black)")
elif 300 > _total_wn8 <= 599:
color = "cd3333" # Red
print(f"Colour = {color} (red)")
elif 599 > _total_wn8 <= 899:
color = "d77900" # Orange
print(f"Colour = {color} (orange)")
elif 899 > _total_wn8 <= 1249:
color = "d7b600" # Yellow
print(f"Colour = {color} (yellow)")
elif 1249 > _total_wn8 <= 1599:
color = "6d9521" # Light green
print(f"Colour = {color} (light green)")
elif 1599 > _total_wn8 <= 1899:
color = "4c762e" # Dark green
print(f"Colour = {color} (dark green)")
elif 1899 > _total_wn8 <= 2349:
color = "4a92b7" # Blue
print(f"Colour = {color} (blue)")
elif 2349 > _total_wn8 <= 2899:
color = "83579d" # Light purple
print(f"Colour = {color} (light purple)")
else:
color = "5a3175" # Dark purple
print(f"Colour = {color} (dark purple)")
# Gives this in console:
WN8 value: 972
Colour = 6d9521 (light green)
但是972在899和1249之间,所以我希望它是黄色的 我做错了什么
我正在用python制作一个discord bot(命令here的完整代码),我使用BeautifulSoup(默认情况下是字符串)从网站获得一些值:
_total_wn8 = int(td1[0].text.replace(',', '')) / 100 # Removing comma so I can convert to int, then dividing by 100 again
_24h_wn8 = int(td1[1].text.replace(',', '')) / 100
_30d_wn8 = int(td1[3].text.replace(',', '')) / 100
# Printing gives this for example:
971.91
2552.21
953.87
我有这个代码根据_total_wn8
值分配一个十六进制颜色,这样我就可以使用它作为discord中的嵌入颜色(如:color=int(color, 16)
):
if 0 > _total_wn8 <= 300:
color = "000" # Black
elif 300 > _total_wn8 <= 599:
color = "cd3333" # Red
elif 599 > _total_wn8 <= 899:
color = "d77900" # Orange
elif 899 > _total_wn8 <= 1249:
color = "d7b600" # Yellow
elif 1249 > _total_wn8 <= 1599:
color = "6d9521" # Light green
elif 1599 > _total_wn8 <= 1899:
color = "4c762e" # Dark green
elif 1899 > _total_wn8 <= 2349:
color = "4a92b7" # Blue
elif 2349 > _total_wn8 <= 2899:
color = "83579d" # Light purple
else:
color = "5a3175" # Dark purple
我根据这个配色方案表制作了:
然而,我感到困惑,因为当_total_wn8
为972时,我希望颜色为黄色,但嵌入颜色为浅绿色,或者如果_total_wn8
为2219,则颜色为浅紫色,而我希望颜色为蓝色。但有时,它确实工作正常,例如当_wn8_total
低于300时,颜色正确为黑色
我的逻辑错了吗?我做错了什么?我觉得有些东西我没有看到
在所有条件下,您的小于符号错误
您不需要
300 > _total_wn8 <= 599
,但是300 < _total_wn8 <= 599
。注意,第一个比较符号应该是<
,而不是>
解释
在Python中,链式比较扩展为一系列简单的比较,它们之间有
and
,正如您在其他语言中看到的那样,例如300 > _total_wn8 <= 599
变成了300 > _total_wn8 and _total_wn8 <= 599
如果你仔细看这个,你会发现它并没有达到你想要的效果。例如,您期望
400
使300 > _total_wn8 <= 599
为真,但它没有:300 > _total_wn8
当_total_wn8 = 400
是300 > 400
时,这是假李>_total_wn8 <= 599
当_total_wn8 = 400
为400 <= 500
时,这是真的李>false and true
为假李>所以,你有错误的条件是第一个,
300 > _total_wn8
。您必须在所有if
语句中修复此问题相关问题 更多 >
编程相关推荐