Python Forum
optimize choices in multiple if ---: statements - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: optimize choices in multiple if ---: statements (/thread-14896.html)



optimize choices in multiple if ---: statements - Pedroski55 - Dec-22-2018

My multiple-choice marking program gives me a csv file, which I read in python and then enter in an Excel sheet.

My code for choosing which class looks clumsy, but works. I feel there must be a more elegant way to do this. Could you give me any suggestions, please?

classNum = input()

while classNum not in classses:
	print('Please enter 17BE1, 17BE2, 17BE3 or 17BE4.')
	classNum = input()
pathsToExcel = ['/home/pedro/winter2018/17BE/17BEC1/', '/home/pedro/winter2018/17BE/17BEC2/', '/home/pedro/winter2018/17BE/17BEC3/', '/home/pedro/winter2018/17BE/17BEC4/']
resultFiles = ['17BE1W17results.xlsx', '17BE2W17results.xlsx', '17BE3W17results.xlsx', '17BE4W17results.xlsx']
if classNum == '17BE1':
        pathXL = pathsToExcel[0]
if classNum == '17BE2':
        pathXL = pathsToExcel[1]
if classNum == '17BE3':
        pathXL = pathsToExcel[2]
if classNum == '17BE4':
        pathXL = pathsToExcel[3]

if classNum == '17BE1':
        resultFile = resultFiles[0]
if classNum == '17BE2':
        resultFile = resultFiles[1]
if classNum == '17BE3':
        resultFile = resultFiles[2]
if classNum == '17BE4':
        resultFile = resultFiles[3]



RE: optimize choices in multiple if ---: statements - ichabod801 - Dec-23-2018

Put your code into data:

classNum = input()
 
while classNum not in classses:
    print('Please enter 17BE1, 17BE2, 17BE3 or 17BE4.')
    classNum = input()
pathsToExcel = ['/home/pedro/winter2018/17BE/17BEC1/', '/home/pedro/winter2018/17BE/17BEC2/', '/home/pedro/winter2018/17BE/17BEC3/', '/home/pedro/winter2018/17BE/17BEC4/']
resultFiles = ['17BE1W17results.xlsx', '17BE2W17results.xlsx', '17BE3W17results.xlsx', '17BE4W17results.xlsx']
classNums = ['17BE1', '17BE2', '17BE3', '17BE4']
pathXL = pathsToExcel[classNums.index(classNum)]
resultFile = resultFiles[classNums.index(classNum)]
Better yet, use string formatting, since you are just getting strings:

classNum = input()
 
while classNum not in classses:
    print('Please enter 17BE1, 17BE2, 17BE3 or 17BE4.')
    classNum = input()

pathXL = '/home/pedro/winter2018/17BE/{}/'.format(classNum)
resultFile = '{}W17results.xlsx'.format(classNum)



RE: optimize choices in multiple if ---: statements - Pedroski55 - Dec-25-2018

Thanks very much and Happy Xmas!

8 lines are better than 24!

I'll try to remember .format!