使用python中的列表理解法在连续行上进行输入。

问题描述 投票:0回答:2

我想连续取两行作为输入,其中第一行是我的数组,第二行数组是我要用二进制搜索的元素。 但是,在输入这两行之后,它期望输入更多的行,却没有达到预期的效果。

def my_bin(a, key):
    l = 0
    h = len(a) - 1
    loc = -1
    while(l < h):
        m = l + (h - l) // 2
        if (a[m] == key):
            loc = m
        elif (key < a[m]):
            h = m
        elif(key > a[m]):
            l = m + 1

    return loc

if __name__ == '__main__':
    a = [int(x) for x in input().split()]
    ktf = [int(x) for x in input().split()]
    ktf = ktf[1:]
    a = sorted(a)
    for ele in ktf:
        t = my_bin(a, ele)
        print(t, end=" ")

example:第1行:7 8 6 546 878 98 34 543第2行: 4 6 7 8 786

OUTT:0 1 2 -1

第一行是要排序和搜索的数组,第二行的第一个值是要搜索的数值,这里是 "4",之后是要在上面数组中搜索的数值。

python list user-input
2个回答
0
投票

问题不在于输入。你的while循环里面的 my_bin 不是终止,因为你只有 if and elif 如果它不符合任何条件,它将进入一个非终止循环。

© www.soinside.com 2019 - 2024. All rights reserved.