Как изменить поведение включения / исключения граничных значений в функции Range? - PullRequest
1 голос
/ 12 февраля 2020

Part1: У меня есть словарь:

mydict = {'K': {'VAL1': 'apple', 'VAL2': (60, 80)},
          'L': {'VAL1': 'mango', 'VAL2': (90, 100)},
          'M': {'VAL1': 'pears', 'VAL2': (120, 150)}}

rto = tuple(range(60,80))    # works
rto = tuple(range(mydict['K']['VAL2']))
TypeError: range() integer end argument expected, got list.

Как мне сделать эту работу, я хочу перебирать словарь ??

Часть 2: Предполагая, что вышеприведенное может работать, я хочу проверить, находится ли значение в диапазоне:

my_value = 70        
rto = tuple(range(60,80))
if my_value in rto :
    print("Value is in range")
else:
    print("Value not in range")

# Output:   
# 70- Value is in range  
# 20- Value not in range  
# 60- Value is in range  
# 80- Value not in range  
# (This tells me that the range function includes 60 and excludes 80 from the 
# test)

Как я могу манипулировать граничными условиями для теста? Значение либо:
Включить 60 и 80.
Исключить 60 или 80.
Включить любой из них.

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

Я не думаю, что вам нужно создавать диапазон, так как вы можете выполнить проверку между значениями, чтобы получить решение.

В приведенном ниже коде используется оператор меньше и больше, чтобы найти, существует ли my_value между кортежами. Дай мне знать, если это то, что ты имеешь в виду.

 for i in [j['VAL2'] for i,j in mydict.items()]:
    if i[0] <= my_value <= i[-1]:
        print(f'{i},{my_value} value is in range')
    else:
        print(f'{i},{my_value} value is not in range')
0 голосов
/ 12 февраля 2020

Вы можете сделать это для диктанта. Смотрите здесь .

rto = tuple(range(*mydict['K']['VAL2']))
...