循环遍历输入整数列表的 For 循环卡在第一个条件上

For-loop that loops through a list of input integers gets stuck on the first conditional

一个简单的程序,读取一个整数列表,判断是升序还是降序,还是乱序,只输出第一个print语句次数为列表元素个数,并继续到剩余的条件。

如果能帮助我理解哪里出了问题,我们将不胜感激。

int_num = input("Enter how many integers you have?: ")
int1 = input("Enter 1st integer: ")
int2 = input("Enter 2nd integer: ")
int3 = input("Enter 3rd integer: ")
int4 = input("Enter 4th integer: ")
int5 = input("Enter 5th integer: ")
int6 = input("Enter 6th integer: ")
n_seq = [int1, int2, int3, int4, int5, int6]

for int in n_seq:
    if [0] < [1] < [2] < [3] < [4] < [5]:
        print("Your sequence is sorted in ascending order.")
    elif [0] > [1] > [2] > [3] > [4] > [5]:
        print("Your sequence is sorted in descending order.")
    else:
        print("Your sequence is out of order.")

以上程序输出如下:

Your sequence is sorted in ascending order.
Your sequence is sorted in ascending order.
Your sequence is sorted in ascending order.
Your sequence is sorted in ascending order.
Your sequence is sorted in ascending order.
Your sequence is sorted in ascending order.

你不需要循环。你可以简单地做:

if int1 < int2 < int3 < int4 < int5 < int6:
    print("Your sequence is sorted in ascending order.")
elif int1 > int2 > int3 > int4 > int5 > int6:
    print("Your sequence is sorted in descending order.")

另外,所有的input在比较之前都需要转换为整数:

int1 = int(input("Enter 1st integer: "))
....
int5 = int(input("Enter 5th integer: "))
int6 = int(input("Enter 6th integer: "))

当您使用循环时,您会遍历元素并检查 [0] 是否大于 [1] ..... 直到 [6],反之亦然。当然,这已经是升序了,然后打印它是按升序排序的。

您的代码没有使用 int_num,并且似乎只适用于正好六个数字。您可以使用循环来调整行为以适应不同数量的数字:

n = int(input("How many integers: "))

l = []
for i in range(n):
  l.append(int(input("Enter next integer: ")))

is_sorted = True
for i in range(n-1):
  if not l[i] <= l[i+1]:
    is_sorted = False

if is_sorted:
  print("Your sequence is sorted in increasing order.")
else:
  print("Your sequence is NOT sorted in increasing order.")

或者,更像 pythonic,使用内置函数 all:

n = int(input("How many integers: "))

l = []
for i in range(n):
  l.append(int(input("Enter next integer: ")))

is_sorted = all(l[i] <= l[i+1] for i in range(n-1))

if is_sorted:
  print("Your sequence is sorted in increasing order.")
else:
  print("Your sequence is NOT sorted in increasing order.")

或者,甚至更像 pythonic,使用内置函数 allzip:

n = int(input("How many integers: "))

l = []
for i in range(n):
  l.append(int(input("Enter next integer: ")))

is_sorted = all(a <= b for a, b in zip(l, l[1:]))

if is_sorted:
  print("Your sequence is sorted in increasing order.")
else:
  print("Your sequence is NOT sorted in increasing order.")

有关内置函数 allzip 的文档: