如何将用户输入格式化为1.“整数”,2.“整数”,而不使代码再次运行?

2024-04-20 16:22:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码所做的是重新运行代码,它应该只要求用户不要键入字符串之类的,只键入整数,而不重新运行代码。这是有问题的,因为如果用户想要对50个整数进行排序,并且意外地键入了一个字符串,那么用户必须重新开始

我已经尝试了几个try-and-catch代码,但似乎不起作用

list1 = []

def bubble_sort():
    numbers = input("How many numbers do you want to sort: ")
    try:
        values = int(numbers)
        print("\nEnter your values: ") 
        for k in range (values):
            list1.append(int(input()))
        print("\nUnsorted list: ", list1)
        for j in range(len(list1)-1,0,-1):
            for i in range(j):
                if list1[i] > list1[i+1]:
                    list1[i], list1[i+1] = list1[i+1], list1[i]
        print("\nSorted list: ", list1)

    except ValueError:
        print("\nThat's not an int!\n")
        bubble_sort()


bubble_sort()

Tags: 字符串代码用户infor键入range整数
1条回答
网友
1楼 · 发布于 2024-04-20 16:22:14

试着这样做:

list1 = []

def bubble_sort():
    numbers = input("How many numbers do you want to sort: ")

    values = int(numbers)
    print("\nEnter your values: ") 
    while len(list1) < values:
        try:
            list1.append(int(input()))
        except ValueError:
            print("\nThat's not an int!\n")
    print("\nUnsorted list: ", list1)
    for j in range(len(list1)-1,0,-1):
        for i in range(j):
            if list1[i] > list1[i+1]:
                list1[i], list1[i+1] = list1[i+1], list1[i]
    print("\nSorted list: ", list1)

此解决方案更改异常的范围,以便在处理异常后,代码在适当的位置恢复(而不是再次运行所有的bubble_sort)

相关问题 更多 >