我目前刚开始学习Python,必须完成一项作业,这需要我们创建一个程序,该程序允许用户执行多项操作,其中之一是可以在列表中输入任意数量的数字,然后对气泡进行排序。我们不允许在内置的排序函数或类似的函数中使用。我想向代码/特别是将输入数字追加到列表的函数添加一个例外,这样,如果用户输入除整数以外的任何字符,我的程序不会中断,而是弹出我自己的错误消息。我通常知道如何使用while循环和try/exception
来完成此操作,但是由于不确定性的出现,我不确定在哪里以及如何将其添加到我的代码中。
我尝试在整个函数的不同位置添加带有try/exception
的while循环,但是发生两种情况之一:我的列表没有更新。当用户输入数字时,程序应打印用户输入的数字,并允许他们继续输入数字,直到键入“ sort”为止。但是,当我输入数字时添加try/exception
时,什么也没有发生,或者程序将显示“无需交换”,并且不再要求提供任何数字。发生的另一件事是我得到以下错误:TypeError: object of type 'NoneType' has no len()
指的是我不知道的BubbleSort()
函数,它使我头疼。这是将输入数字追加到列表的功能:
def AppendList():
numberList = []
while True:
newNumbers = input("Please enter a number to add to the list. To begin "
"sorting your list, type 'sort'.\n ")
if newNumbers == "sort":
break
numberList.append(int(newNumbers))
print("This is how the list currently looks: " + str(numberList) + ",")
return numberList
TLDR;我希望我的程序允许用户在列表中输入数字。每次用户输入数字时,我的程序都应该说“这是列表当前的样子……”,直到他们在控制台中键入“ sort”为止。如果用户输入的字符不是数字,我希望弹出自己的错误而不是程序中断。
这是整个程序本身的文本文件:https://pastebin.com/wkwmK49Q
答案 0 :(得分:0)
将try-except环绕在将其转换为整数的点上:
def AppendList():
numberList = []
while True:
newNumbers = input("Please enter a number to add to the list. To begin sorting your list, type 'sort'.\n ")
if newNumbers == "sort":
break
try:
numberList.append(int(newNumbers))
except ValueError:
print("Your error message")
print("This is how the list currently looks: " + str(numberList) + ",")
return numberList
答案 1 :(得分:0)
您可以将希望捕获错误的代码部分包装在以下位置:
try:
input(...)
[...]
except ValueError as e:
print(e)
或者您可以在转换之前验证字符串:
if not newNumbers.isdecimal():
print('Not a valid number: ' + s)
答案 2 :(得分:0)
您可以使用Try-Except块引发ValueError,在这种情况下,程序将退出并显示错误消息,但您可以将ValueError('')
更改为简单的print
函数。
def AppendList():
numberList = []
while True:
try:
newNumbers = input("Please enter a number to add to the list. To begin sorting your list, type 'sort'.\n ")
if newNumbers == "sort":
break
numberList.append(int(newNumbers))
except ValueError: #Value error
raise ValueError("ValueError")
except: #Any other error
print("any other error")
print("This is how the list currently looks: " + str(numberList) + ",")
return numberList
还可以添加一个检查输入的函数,因此不需要ValueError
newNumbers = str(input("Please enter a number to add to the list. To begin sorting your list, type 'sort'.\n "))
if(newNumber.isdigit() or newNumber == 'sort'): #Number or sort
#ETC.