至少那是我能理解的最多,而且我已经追踪了几个小时的执行流程。以下是代码的相关摘要:
def check_list(inputList):
'''checks if list is composed of numbers, and, if so, returns a new list of purely integers'''
VerifiedDataSet = []
for i in inputList:
try:
VerifiedDataSet.append(int(i))
except:
print("Value in", inputList.index(i) + 1, "position isn't a number!")
return "not approved"
return ("approved", VerifiedDataSet)
print("This program will make your data set into a color coded bar graph (eventually)!")
listStatus = "not approved"
while listStatus == "not approved":
dataSet = ["1", "2", "foo"] #for illustration of behavior
result = check_list(dataSet)
listStatus = result[0]
if listStatus == 'approved':
dataSet = result[1]
else:
pass
print("You should not see this.")
这个想法是让函数check_list
遍历输入列表并尝试将每个元素转换为整数。如果存在异常,它将打印无法转换为整数的值的位置并返回列表未被批准,这应该1)终止函数,以及2)导致while
循环下面继续。
只有在没有异常的情况下,迭代器才能完成并且函数返回字符串“approved”(终止while
循环)和新的整数列表。但是,根据我的收集情况,listStatus
无论如何都会以某种方式设置为“已批准”,因为最后print
在执行时永远不会被执行。
可能导致此行为的任何想法?
答案 0 :(得分:2)
如果出现异常,您将从函数
返回'not approved'
使得listStatus == 'n'
,因此while
循环中断。
答案 1 :(得分:0)
从函数返回的值是一个字符串。因此,结果将具有“未批准”的价值。
listStatus = result[0]
这会使listStatus
='n'而非“未获批准”。