少なくとも、それは私がそれを理解できる最大のものであり、何時間も実行の流れをたどっています。ここでは、コードの関連抜粋です:返された後にPython関数が終了していないようです
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
ループを終了する)と新しい整数リストの両方を返す場合にのみ例外が発生します。しかし、私が集めることから、listStatus
は何とか「承認済み」に設定されています。最後にprint
が実行される必要はありません。
この現象の原因は何ですか?
失敗した変換の 'ValueError'が単に 'check_list()'からトリクルダウンするのを避けるために、なぜこのような長さになるのでしょうか? – dhke
@dhke私は、あなたがやろうとしていることをはるかに効率的な方法があることを示唆していると仮定しています(そして私はそれを疑いません)。その理由は、私はまだPythonやプログラミング全般について非常に新しいことです。私は例外を除いて少し試合しましたが、私は彼らと何をするべきか、それを私の利益に使う方法はまだ分かっていないと思います。まもなく! :) – bream