【发布时间】:2019-04-15 02:51:41
【问题描述】:
我的目标是:
- 接受输入(直到用户输入 0)或退出(如果输入了字母),
- 运行一些检查以排除非整数,
- 将这些值添加到列表中,然后
- 然后打印列表的总和。
我正在尝试在 main 中捕获变量 close 的布尔值,但出现错误。
错误:“close = addToList() 类型错误:addToList() 缺少 1 个必需项 位置参数:'numberList'。"
#function to create a list
def createList():
numberList = []
return numberList
#function to add integers from user to list
def addToList(numberList):
stopAdding = False
close = False
while stopAdding == False:
integerInput = input("Please enter a number [1-9] or '0' to stop: ")
if integerInput.isalpha():
badInput()
close = True
break
elif integerInput == '0':
stopAdding = True
else:
numberList.append(int(integerInput))
if close == True:
return close
else:
return numberList
#function for when invalid number entered
def badInput():
print("Invalid number entered.")
#function to sum the numbers in list
def sumList(numberList):
sumTotal = 0
for number in numberList:
sumTotal = sumTotal + number
return sumTotal
#function to print the list sum
def printSum(sumTotal):
print("The sum is: ", sumTotal)
#the main function
def main():
numberList = createList()
addToList(numberList)
sumTotal = sumList(numberList)
close = addToList()
if close == True:
pass
else:
printSum(sumTotal)
#call main
main()
如果输入了非整数,有什么更好的优雅退出方式?谢谢。
【问题讨论】:
-
正如错误清楚地表明的那样,
addToList需要一个参数:def addToList(numberList),但您没有提供它:close = addToList() -
另外,请考虑使用
if close:代替if close == True:和while not stopAdding:代替PEP8 中建议的while stopAdding == False:,并且(以非常非常小的方式)更快。
标签: python list function return