Pythonで決定マトリックスをコーディングしようとしています.これまでのところ、2次元マトリックスを設定し、決定オプションと基準のタイトルを保持するリストを設定し、(オプションと基準の)量とタイトルを取得しています.次に、ユーザーから基準とオプションの値を取得します。
これらの値に基づいて決定を行い、次のステップに進みたいのですが、次のエラーが発生しています。
Traceback (most recent call last):
File "/home/michael/std/dev/python/DM/DM0.0.2.py", line 56, in <module>
print "\nOut of 10, how do you rate option %s for criteria %s?" % (optionNames[optionCount], criteriaNames[criteriaCount])
IndexError: list index out of range
私はそれを修正するためにあらゆる種類のものを試し、いくつかのスタイルのフロー制御などを使用してコードを再配置しましたが、理解できません。以下の完全なコードからわかるように、コードで何が起こっているのかを正確にフィードバックするために、いくつかの印刷ステートメントを含めました。 ? ありがとう。
# DM2 - Decision Matrix 2
print "Decision Matrix"
print "Please enter integers"
bl = "------------------------------"
print bl
# Get the ammount of options and criteria to work with
print "How many options do you have?"
num_options = int(raw_input("> "))
print bl
print "How many criteria do you have?"
num_criteria = int(raw_input("> "))
print bl
# Define some lists to keep names of options and criteria
optionNames = [0 for x in range(0, num_options)]
criteriaNames = [0 for x in range(0, num_criteria)]
# Define our matrix
Matrix = [[0 for x in range(0, num_criteria)] for x in range(0, num_options)]
# Get names for options and criteria
count = 0
while count < num_options:
modCount = count +1
optionNames[count] = raw_input("Name option %s:" % modCount)
count = count +1
print optionNames
print bl
count = 0
while count < num_criteria:
modCount = count +1
criteriaNames[count] = raw_input("Name criteria %s:" % modCount)
count = count +1
print criteriaNames
print bl
# Print the matrix so far (should be empty)
print "The Matrix:"
print Matrix
print bl
print "\nNow we will talk about how well the options match the criteria."
#take scores out of 10 for the matrix
optionCount = 0
criteriaCount = 0
while criteriaCount < num_criteria * num_options +1:
while optionCount < num_options:
print "\nOut of 10, how do you rate option %s for criteria %s?" % (optionNames[optionCount], criteriaNames[criteriaCount])
print Matrix
print "opCount: ", optionCount
print "critCount: ", criteriaCount
criteriaScore = int(raw_input("> "))
Matrix[optionCount][criteriaCount] = criteriaScore
optionCount +=1
criteriaCount +=1
optionCount = 0
while criteriaNames < num_criteria * num_options +1:
while criteriaCount < num_criteria:
print "\nOut of 10, how do you rate option %s for criteria %s?" % (optionNames[optionCount], criteriaNames[criteriaCount])
print Matrix
print "opCount: ", optionCount
print "critCount: ", criteriaCount
criteriaScore = int(raw_input("> "))
Matrix[optionCount][criteriaCount] = criteriaScore
optionCount +=1
# Calculate best decision based on the best scoring option