Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Python搜索函数_Python 3.x_Function - Fatal编程技术网

Python 3.x Python搜索函数

Python 3.x Python搜索函数,python-3.x,function,Python 3.x,Function,我有一个编号列表(禁止编号),其中必须排除该编号: a = [10,21,25,28,29,30,31,55,70,80,95] 我有一个函数,告诉我可以选择一个随机数,但如果这个数字在a中,那么它必须加上1 def new_number(number): if number in a: new_number = number + 1 else: new_number = number return new_number 这个

我有一个编号列表(禁止编号),其中必须排除该编号:

a =  [10,21,25,28,29,30,31,55,70,80,95]
我有一个函数,告诉我可以选择一个随机数,但如果这个数字在a中,那么它必须加上1

def new_number(number):
    if number in a:
       new_number = number + 1
    else:
       new_number = number
    
    return new_number

这个函数很简单,工作很好,但如果我在a中有连续的数字,我肯定会得到错误的结果。例如,如果我输入number=28,那么函数中的新数字是29,而正确的数字必须是32,因为29,30,31是禁止的数字


我正在寻找一个函数,当存在连续的无效项时,可以搜索下一个有效数字,并且可以灵活地更改这些无效项。

使用
while
循环

Ex:

def new_number(number):
    a =  [10,21,25,28,29,30,31,55,70,80,95]
    while number in a:
        number += 1
    return number

print(new_number(28))     #32
print(new_number(400))    #400

使用
while
循环

Ex:

def new_number(number):
    a =  [10,21,25,28,29,30,31,55,70,80,95]
    while number in a:
        number += 1
    return number

print(new_number(28))     #32
print(new_number(400))    #400
使用递归(如果同时使用集合,则性能更高):

使用递归(如果同时使用集合,则性能更高):