как передать параметры в функцию range () в Python

def compare_dict(d1, d2, ignore):
    for k in d1:
        if k in ignore:
            continue
        try:
            if d1[k] != d2[k]:
                return False
        except KeyError:
            return False
    return True

Редактирование комментария: вы можете сделать что-то вроде compare_dict(d1, d2, ignore) and compare_dict(d2, d1, ignore) или дублировать for

def compare_dict(d1, d2, ignore):
    ignore = set(ignore)
    for k in d1:
        if k in ignore:
            continue
        try:
            if d1[k] != d2[k]:
                return False
        except KeyError:
            return False

    for k in d2:
        if k in ignore:
            continue
        try:
            if d1[k] != d2[k]:
                return False
        except KeyError:
            return False
    return True

. Все быстрее и чище! Обновление: набор трансляции (игнорирование)

1
задан user3689783 17 March 2019 в 21:06
поделиться

2 ответа

Вы можете сделать:

def range_lister():
            '''Example 5:10:2 -> [5,7,9]
            '''
    query = input('Please enter your range start:stop[:step]\n> ')
    values = [int(q) for q in query.split(':')]
    trange = list(range(*values))
    print(trange)


range_lister()
0
ответ дан Prayson W. Daniel 17 March 2019 в 21:06
поделиться

Как насчет этого метода, который принимает три аргумента как отдельные входные строки и предоставляет запасные варианты для предотвращения (некоторых) исключений:

def safeint(s, fallback):
    try:
        return int(s)
    except ValueError:
        return fallback

def range_lister():
    start = safeint(input("start: "), 0)
    stop = safeint(input("stop: "), 0)
    step = safeint(input("step: "), 1)  # Zero is not valid here
    trange=list(range(start, stop, step))
    print(trange)

.... некоторые тесты:

>>> range_lister()
start: 1
stop: 14
step: 3
[1, 4, 7, 10, 13]
>>> range_lister()
start: 
stop: 
step: 14
[]
>>> range_lister()
start: 14
stop: 2000
step: 24
[14, 38, 62, 86, 110, 134, 158, 182, 206, 230, 254, 278, 302, 326, 350, 374, 398, 422, 446, 
470, 494, 518, 542, 566, 590, 614, 638, 662, 686, 710, 734, 758, 782, 806, 830, 854, 878,
902, 926, 950, 974, 998, 1022, 1046, 1070, 1094, 1118, 1142, 1166, 1190, 1214, 1238, 1262,
1286, 1310, 1334, 1358, 1382, 1406, 1430, 1454, 1478, 1502, 1526, 1550, 1574, 1598, 1622,
1646, 1670, 1694, 1718, 1742, 1766, 1790, 1814, 1838, 1862, 1886, 1910, 1934, 1958, 1982]
>>> range_lister()
start: 
stop: 22
step: 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
0
ответ дан JacobIRR 17 March 2019 в 21:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: