It would be helpful to know where I could improve the style of it, so it follows the style guide better, and also any ways I could compact it - especially at the end, where I have added items to a list then removed them. Is there a more elegant way to do that?
def reptillint(sentence,mini,maxi,error1):
maxi = int(maxi)
number = ''
while number == '':
number = input(sentence+' (whole number from ' + str(mini) + ' to ' + str(maxi) + ') ')
try:
number = int(number)
if (number < mini) | (number > maxi):
number = ''
print (error1)
except ValueError:
number = ''
print ('Needs to be a number')
return number
contestants = ''
while (contestants == ''):
contestants = input('How many people are competing (whole number, min 2)? ')
try:
int(contestants)
except ValueError:
contestants = ''
print ('Needs to be a number')
listOfContestantNumbers = [ i for i in range(1,int(contestants)+1)]
listOfContestantNumbersTimes = [ 'N/C' for i in range(1,int(contestants)+1)]
listOfContestantNumbersTimesSeconds = [ 'N/C' for i in range(1,int(contestants)+1)]
listOfContestantNumbersTimesSecondsstr = [ 'N/C' for i in range(1,int(contestants)+1)]
while 'N/C' in listOfContestantNumbersTimes:
number = reptillint('What is the number of the person who just finished?',0,contestants,'Needs to be a contestant\'s number')
print (number)
hours = reptillint('Hours?',0,10000,'Needs to be more than 0')
minutes = reptillint('Minutes?',0,59,'Needs to be more than 0 and less than 59')
seconds = reptillint('Seconds?',0,59,'Needs to be more than 0 and less than 59')
miliseconds = reptillint('Miliseconds?',0,100,'Needs to be more than 0 and less than 100')
listOfContestantNumbersTimes[number-1] = str(hours)+':'+str(minutes)+':'+str(seconds)+'.'+str(miliseconds)
listOfContestantNumbersTimesSeconds[number-1] = hours*3600+minutes*60+seconds+miliseconds/100
listOfContestantNumbersTimesSecondsstr[number-1] = str(listOfContestantNumbersTimesSeconds[number-1])
listOfContestantNumbers.insert(0, "Con Num")
listOfContestantNumbersTimesSecondsstr.insert(0, "Time H:M:S")
listOfContestantNumbersTimes.insert(0, "Time H:M:S")
maxLengthTimes = max([len(i) for i in listOfContestantNumbersTimesSecondsstr])
maxLengthC = max(len(str(contestants)), len("Con Num"))
print ('┌──'+'─'*(maxLengthC+4)+'─┬─'+'─'*(maxLengthTimes+5)+'─┐')
for i in range (0, int(contestants)):
print ('│ '+str(listOfContestantNumbers[i])+' '*(maxLengthC+4-len(str(listOfContestantNumbers[i])))+' │ '+str(listOfContestantNumbersTimes[i])+' '*((maxLengthTimes+5)-len(str(listOfContestantNumbersTimes[i])))+' │')
print ('├──'+'─'*(maxLengthC+4)+'─┼─'+'─'*(maxLengthTimes+5)+'─┤')
print ('│ '+str(listOfContestantNumbers[-1])+' '*(maxLengthC+4-len(str(listOfContestantNumbers[-1])))+' │ '+str(listOfContestantNumbersTimes[-1])+' '*((maxLengthTimes+5)-len(str(listOfContestantNumbersTimes[-1])))+' │')
print ('└──'+'─'*(maxLengthC+4)+'─┴─'+'─'*(maxLengthTimes+5)+'─┘')
listOfContestantNumbers.pop(0)
listOfContestantNumbersTimesSecondsstr.pop(0)
listOfContestantNumbersTimes.pop(0)
This was written for this question on Bicycles SE.