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