Python 如果在浮点范围内打印语句,则不在范围内

Python 如果在浮点范围内打印语句,则不在范围内,python,python-3.x,Python,Python 3.x,我在使用简单的Python脚本时遇到问题。脚本有一个温度列表输入,我想打印0到5之外的所有温度 在我输入浮点之前,这一切都很正常。例如,如果列表中有1、4、6、-2,则只按预期打印6和-2。如果我输入1,4,4.3,6,它会打印出4.3和6 我知道这个问题与浮点有关,出于某种原因,if-not语句允许通过浮点。我到处寻找,但没有运气,虽然我相信这很简单 你知道为什么会这样吗 # input for temperatures temperatures = [1, 4, 4.3,6] # empt

我在使用简单的Python脚本时遇到问题。脚本有一个温度列表输入,我想打印0到5之外的所有温度

在我输入浮点之前,这一切都很正常。例如,如果列表中有1、4、6、-2,则只按预期打印6和-2。如果我输入1,4,4.3,6,它会打印出4.3和6

我知道这个问题与浮点有关,出于某种原因,if-not语句允许通过浮点。我到处寻找,但没有运气,虽然我相信这很简单

你知道为什么会这样吗

# input for temperatures
temperatures = [1, 4, 4.3,6]

# empty output list
output_list = []

for temperature in temperatures:
    if temperature not in range (0,6):
        output_list = output_list + [temperature]
# print the output_list
print(output_list)

提前感谢您的帮助。

温度不在范围(0,6)
表示温度不是范围(0,6)中的值之一,即0、1、2、3、4和5

实际上,您要检查的不是该值是否为0、1、2、3、4、5中的一个,而是它是否为>=0和默认情况下,
range()
函数只输出步数为1的数字

例如,
range(4)
返回
0、1、2、3
。将其与返回
2,3的
range(2,4)
和返回
2,2.5,3,3.5的
range(2,4,0.5)
进行比较


对于您的问题,更好的解决方案是将
如果温度不在范围内(0,6):
替换为
如果不是0我不认为这是一个浮点错误。它与
range
是一个iterable相关<代码>4.3
包含在输出中,因为它不在iterable中。检查温度是否在范围内的语句将返回
3
,如果范围是
range(0,6,2)

更好的解决办法如下所示

# input for temperatures
temperatures = [1, 4, 4.3,6]

# empty output list
output_list = []

temp_range = list(range(0, 6))

for temperature in temperatures:
    if min(temp_range) >= temperature or max(temp_range) <= temperature:
        output_list = output_list + [temperature]
# print the output_list
print(output_list)
#温度输入
温度=[1,4,4.3,6]
#空输出列表
输出列表=[]
温度范围=列表(范围(0,6))
对于温度中的温度:

如果最小值(温度范围)>=温度或最大值(温度范围)
如果0 Oh noo。很抱歉。我将更改它,使其返回正确的值。除了答案中阐明的范围问题外,您只需使用
output\u list.append(temperature)
>>> print(list(range(0, 6)))
[0, 1, 2, 3, 4, 5]
# input for temperatures
temperatures = [1, 4, 4.3,6]

# empty output list
output_list = []

for temperature in temperatures:
    if not 0 <= temperature <= 5:
        output_list.append(temperature)
# print the output_list
print(output_list)
output_list = [temp for temp in temperatures if not 0 <= temperature <= 5]
# input for temperatures
temperatures = [1, 4, 4.3,6]

# empty output list
output_list = []

temp_range = list(range(0, 6))

for temperature in temperatures:
    if min(temp_range) >= temperature or max(temp_range) <= temperature:
        output_list = output_list + [temperature]
# print the output_list
print(output_list)