I cannot figure why when I run my code I get an IndexError saying my list is out of range. I run into the error at “ if x[1] == "strongly agree": “. I’ve went through my code many times and I don’t know how to fix..
Here is my code(not including import):
firstList = [0, 0, 0, 0, 0]
secondList = [0, 0, 0, 0, 0]
with open("surveyData.txt", 'r') as f:
answers = f.read().split('\n')
for x in answers:
x = x.split(',')
if x[0] == "very happy":
firstList[0] = 1
elif x[0] == "happy":
firstList[1] = 1
elif x[0] == "neutral":
firstList[2] = 1
elif x[0] == "unhappy":
firstList[3] = 1
else:
firstList[4] = 1
if x[1] == "strongly agree":
secondList[0] = 1
elif x[1] == "agree":
secondList[1] = 1
elif x[1] == "neutral":
secondList[2] = 1
elif x[1] == "disagree":
secondList[3] = 1
else:
secondList[4] = 1
def showHistogram(dataList, bars):
plt.bars(bars, dataList)
plt.show()
question1_freq = ['very happy', ' happy', 'neutral', 'unhappy', 'very unhappy']
showHistogram(firstList, question1_freq)
question2_freq = ['strongly agree', 'agree', 'neutral', 'disagree', 'strongly disagree']
showHistogram(secondList, question2_freq)
Sample text file: unhappy,strongly agree
very unhappy,strongly agree
happy,agree
neutral,strongly agree
happy,agree
very unhappy,strongly agree
neutral,strongly agree
very happy,disagree
CodePudding user response:
Just change the below line and rest seems ok
answers = f.read().splitlines()
CodePudding user response:
Take a look at your file data. Make sure your code is doing what you expect it to do. If x[1] does not exist/list ends at x[0], you'd get an index error (basically you are trying to manipulate something that doesn't exist)