Python列表,输出向后输入的数字

时间:2017-02-21 04:26:45

标签: python arrays while-loop

我需要一个代码,要求输入5个pos号码,然后向后输出这些号码。我想使用while循环。这是我到目前为止所提出的,但它是第二个while循环不起作用。

{
                "query": {
                    "bool" : {
                        "must" : {
                            "match_all" : {}
                        },
                        "filter" : {
                            "geo_distance" : {
                                "distance" : "{}mi".format(list_info.radius_b),
                                'location': {
                                    "lat": zip.lat,
                                    "lon": zip.lng
                                }
                            }
                        },
                    },
                    "term" : { "status" : "approved" }
                },
                "sort" : [
                    {
                        "_geo_distance" : {
                            'location': {"lat": zip.lat,
                                        "lon": zip.lng},
                            "order" : "asc",
                            "unit" : "mi",
                            "mode" : "min",
                            "distance_type" : "sloppy_arc"
                        }
                    }
                ],
                "from": 0,
                "size": 0,
            }

4 个答案:

答案 0 :(得分:0)

你应该迭代numberList的长度而不是正数。 基本上修改第二个while循环到此。

 i = SIZE; 
 while i>0: 
        print(numberList[i-1])
        i=i-1

答案 1 :(得分:0)

在第二个循环中,您使用相同的positiveNum变量而不将其重置为数组的大小,请尝试:

SIZE = 5
numberList= []
ARRAY_LIMIT = SIZE -1

while len(numberList) < SIZE :
    positiveNum = input("Enter a positive number:")
    numberList.append(positiveNum)
index = SIZE - 1
while index >= 0:
    print(numberList[index])
    index -= 1

答案 2 :(得分:0)

您的第一个问题是input会返回string,因此如果您想使用它进行索引,则需要将其转换为int。您可能会收到以下错误。

  

TypeError:list indices必须是整数或切片,而不是str

# Won't work with string
numberList[positiveNum]
positiveNum -= 1
# Need to cast to int first
positiveNum = int(input("Enter a positive number:"))

在while循环条件下转换它只适用于条件,它不会将变量中的值更改为int,它仍然是string

# Works only once
while int(positiveNum) >= 0:

现在,下一个问题是您使用positiveNum作为索引号。如果输入的最后一个数字大于IndexError,则会导致SIZE,例如100。

SIZE = 5
number_lst = []

while len(number_lst) < SIZE:
    # Should perform error checking if you must have positive numbers
    num = int(input("Enter a positive number: "))
    number_lst.append(num)

# Output backwards using while
i = len(number_lst) - 1
while i >= 0:
    print(number_lst[i])
    i -= 1

这里还有一些for循环替代方案

# Output backwards using for
for item in number_lst[::-1]:
    print(item)

for item in reversed(number_lst):
    print(item)

for i in range(len(number_lst) - 1, -1):
    print(number_lst[i])

for i in reversed(range(len(number_lst))):
    print(number_lst[i])

答案 3 :(得分:0)

使用while循环:

size = 5
number_list = []

while len(number_list) < size:
    number_list.append(int(input("Enter a positive number: ")))
i = 1
while i <= size:
    print(number_list[size - i])
    i += 1

为第二个循环使用for循环:

size = 5
number_list = []

while len(number_list) < size:
    number_list.append(int(input("Enter a positive number: ")))
for i in number_list[::-1]:
    print(i)

使用两个for循环,在这种情况下更合理:

size = 5
number_list = []

for _ in range(size):
    number_list.append(int(input("Enter a positive number: ")))
for i in number_list[::-1]:
    print(i)