为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕运维8079593 2022-12-20 14:23:21
我有一个列表列表,如下所示: 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, mylists[0][1] = 3.4207362518089726, mylists[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])但这当然行不通。
查看完整描述

3 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

您的条件只是写错了 - 它正在选择第二个元素为的子列表

>= 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])

希望对您有所帮助,编码愉快!


查看完整回答
反对 回复 2022-12-20
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

您是否收到错误或只是意外的输出?

也许你可以试试:

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


查看完整回答
反对 回复 2022-12-20
?
FFIVE

TA贡献1797条经验 获得超6个赞

你可以使用这个:


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])


查看完整回答
反对 回复 2022-12-20
  • 3 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信