如何检查变量是否在特定范围内

2024-05-26 17:42:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表,如下所示:

 mylists =   [[['CS105', 'ENG101', 'MATH101', 'GER'], 3.4207362518089726, 0.2808766238976195], [['CS105', 'ENG101', 'GER', 'GER'], 2.9687393162393163, 0.3408964829117446]]

我试图做的是获取用户提供的数字,然后检查与每个子列表的第二个元素相比,提供的数字是否等于或在+0.6的范围内。换句话说,我想做以下工作:如果用户输入是3.4,那么我想根据提供的列表示例检查这两个数字:3.4207362518089726和2.9687393162393163,如果这些数字在输入的+0.6范围内,那么将整个子列表保存在另一个列表中

因此,user_input=3.4,mylist[0][1]=3.4207362518089726,mylist[1][1]=2.9687393162393163,我想将每个具有3.4及以上的子列表放到一个新列表中,直到4.0(由于+0.6的范围)

我的想法是:

for i in range(0, len(mylists)):
        if mylists[i][1] >= user_input + 0.6:
             new_list.append(mylists[i])

但这当然不起作用


Tags: 用户in元素示例列表forinput数字
3条回答

您得到的是错误还是意外的输出

也许你可以试试:

new_list = list(filter(lambda x: user_input<= x[1] <= user_input + 0.6 , mylists))

您可以使用以下选项:

import re

mylists =   [[['CS105', 'ENG101', 'MATH101', 'GER'], 3.4207362518089726, 0.2808766238976195], [['CS105', 'ENG101', 'GER', 'GER'], 2.9687393162393163, 0.3408964829117446]]

user_input = 3.4

st = str(user_input) #transform input from user to string

denom = '1'+len(st.split('.')[-1])*'0' #get how much decimals st have and create denominator to the decimal part

decimal_part = 1- int(st.split('.')[-1])/int(denom) #create decimal numbers  to reach upper bound

new_list = []

for i in range(0, len(mylists)):
    if user_input <= mylists[i][1] <= user_input + decimal_part:
         new_list.append(mylists[i])

另一种方式是:

import numpy as np

mylists =   [[['CS105', 'ENG101', 'MATH101', 'GER'], 3.4207362518089726, 0.2808766238976195], [['CS105', 'ENG101', 'GER', 'GER'], 2.9687393162393163, 0.3408964829117446]]

user_input = 3.4

new_list = []

for i in range(0, len(mylists)):
    if user_input <= mylists[i][1] <= np.ceil(user_input):
         new_list.append(mylists[i])

您的条件语句写得不正确-它正在选择第二个元素为的子列表
>= user_input + 0.6(其计算结果为>= 4.0,但您希望第二个元素为between 3.4 and 4.0。因此,我相信您所需要做的就是如下更改:

for i in range(0, len(mylists)):
    if user_input <= mylists[i][1] <= user_input + 0.6:
        new_list.append(mylists[i])

希望对你有帮助,编码快乐

相关问题 更多 >

    热门问题