根据变量浮点数分配十六进制值
Assigning HEX value based on a variable float
简而言之
我很困惑,我正在尝试根据整数值分配十六进制颜色,基本上是这样的:
_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 制作一个不和谐的机器人(命令 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
值分配十六进制颜色,这样我就可以将其用作不和谐中的嵌入颜色(如: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
我根据这个配色方案做了那个table:
然而我很困惑,因为例如当 _total_wn8
是 972 时,我希望颜色是黄色,但是嵌入颜色是浅绿色,或者如果 _total_wn8
是 2219 它使颜色浅紫色,当我期望蓝色。但有时,它确实可以正常工作,例如当 _wn8_total
低于 300 时,颜色正确为黑色。
到目前为止我做了什么:
- 我重新检查了每个 HEX 颜色值,它们都是正确的。
- 我在分配颜色变量后立即打印了它,这
是分配给它的颜色,但不是正确的颜色。
- 我重新检查了我的逻辑,我个人没有发现任何问题
- 在另一个 python 文件中尝试,使用 this 代码,
给出相同的结果!
我的问题:
我逻辑有问题吗?我在这里做错了什么?总觉得有什么看不到的地方..
你在所有条件下都弄错了小于号。
你不想要 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
时,即 false.
_total_wn8 <= 599
当 _total_wn8 = 400
为 400 <= 500
时,即 true.
false and true
是 false.
所以,你错的条件是第一个,300 > _total_wn8
。您必须在所有 if
语句中解决此问题。
简而言之
我很困惑,我正在尝试根据整数值分配十六进制颜色,基本上是这样的:
_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 制作一个不和谐的机器人(命令 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
值分配十六进制颜色,这样我就可以将其用作不和谐中的嵌入颜色(如: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
我根据这个配色方案做了那个table:
然而我很困惑,因为例如当 _total_wn8
是 972 时,我希望颜色是黄色,但是嵌入颜色是浅绿色,或者如果 _total_wn8
是 2219 它使颜色浅紫色,当我期望蓝色。但有时,它确实可以正常工作,例如当 _wn8_total
低于 300 时,颜色正确为黑色。
到目前为止我做了什么:
- 我重新检查了每个 HEX 颜色值,它们都是正确的。
- 我在分配颜色变量后立即打印了它,这 是分配给它的颜色,但不是正确的颜色。
- 我重新检查了我的逻辑,我个人没有发现任何问题
- 在另一个 python 文件中尝试,使用 this 代码, 给出相同的结果!
我的问题:
我逻辑有问题吗?我在这里做错了什么?总觉得有什么看不到的地方..
你在所有条件下都弄错了小于号。
你不想要 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
时,即 false._total_wn8 <= 599
当_total_wn8 = 400
为400 <= 500
时,即 true.false and true
是 false.
所以,你错的条件是第一个,300 > _total_wn8
。您必须在所有 if
语句中解决此问题。