python-3.x 如何循环遍历整数列表

3yhwsihp  于 2023-03-13  发布在  Python
关注(0)|答案(5)|浏览(190)

我尝试用for循环遍历一个整数列表,然而,我们知道在python中,int是不可迭代的,所以我想知道是否有其他方法可以存储整数,这样我就可以遍历整数了?

def get_index_of_smallest(pint):
    integers_list = []
    for int in pint:
        if int > 0:
            integers_list.append(int)
    return min(integers_list)
 
integers = int(input("Please enter a bunch of integers: "))
get_index_of_smallest(integers)

上面的代码就是我尝试的,你可以看到,如果我尝试将一个整数列表传递到for循环中,python会返回一个错误,并指出数据类型“int”是不可迭代的。

wsewodh2

wsewodh21#

试试这样的方法:

user_input = input("Please enter a bunch of integers: ")
number_list = user_input.split(" ") # or a different delimeter
integers = [int(entry) for entry in number_list]
get_index_of_smallest(integers)
cfh9epnr

cfh9epnr2#

您可能需要在代码中修复一些问题:
1.不要使用int作为变量名。它在Python中有特殊的含义,这个名字不应该用在其他地方。
1.如果你希望用户输入一堆数字,你不能直接将input转换为int。这取决于数字将如何输入,但你首先需要将它们与input string分开(最初input返回字符串)。这就是导致错误的原因。请查看前面的答案。
1.你的函数的逻辑需要一些改进。如果你想从你的列表中返回最小的,非负的元素,没有必要先过滤它们到单独的列表中。

zphenhs4

zphenhs43#

你可以修改你的代码,比如,为了获取输入而不是把所有的东西都转换成int本身,你可以使用map

def get_index_of_smallest(pint):
    m=float('inf')
    least_ind=-1
    for i in range(len(pint)):
        if pint[i]<m:
            least_ind=i
            m=pint[i]
    return least_ind
 
integers = input("Please enter a bunch of integers: ")
integers = list(map(int,integers.split()))

get_index_of_smallest(integers)

我已经修改了你的代码,并分开每一步更好地理解。

vlju58qv

vlju58qv4#

Python试图将输入改为integer,你知道你不能迭代整数,所以string.split(separator, maxsplit)是最好的,这个函数根据你给它的分隔符将字符串分成几个部分(在你的例子中是空间' '),你可以通过列表解析将new list中的所有值改为整数,比如new_list = [int(x) for x in integers]
最终代码如下所示:

def get_index_of_smallest(array):
    array = [int(x) for x in array.split(' ') if x > 0]
    return min(array)
 
integers = input("Please enter a bunch of integers separated by space: ")
get_index_of_smallest(integers)
js4nwp54

js4nwp545#

def get_index_of_smallest(pint):
    integers_list = []
    for integer in pint:
        if int(integer) > 0:
            integers_list.append(int(integer))
    return min(integers_list)

    integers = int(input("Please enter a bunch of integers: "))
    print(get_index_of_smallest(str(integers)))

您可以尝试这样做,将输入的整数直接转换为字符串。

相关问题