我搜索了堆栈,但我仍然无法使用它。我正在学习如何构造算法并需要编写一个algroithm(使用插入排序)来按升序对数组进行排序并显示它包含的值。目前我正在无。
def sortedRainfall (rainfall):
month = ['January','Febuary','March','April','May','June','July','August'\
,'September','October','November','December']
for index in range(1,len(rainfall)):
value = rainfall[index]
i = index - 1
while (i >= 0):
if value < rainfall[i]:
rainfall[i+1] = rainfall[i] #shift number in slot i right to slot i + 1
rainfall[i] = value #shif value left into slot i
i = i - 1
else:
break
return
完整代码如下:
#Main module --------------------------------------------------------------------------------------------------------------
def main ():
rainfall = rainInput () #Gets rainfall per month from user.
totalRain = totalRainfall (rainfall) #Totals rainfall from user inputted data.
average_Rainfall = averageRainfall (totalRain) #Averages rainfall for the year.
highestMonth, highestMonthly = highestMonthNumber (rainfall) #Finds highest month of rainfall and displays to the user.
lowestMonth, lowestMonthly = lowestMonthNumber (rainfall) #Finds lowest month of rainfall and displays to the user. ---
rainfallSorted = sortedRainfall(rainfall)
print #this is for spacing output
print ('The total rainfall for the year was: ' +str(totalRain) + ' inche(s)')
print #this is for spacing output
print ('The average rainfall for the year was: ' +str(average_Rainfall) +\
' inche(s)')
print #this is for spacing in output
print ('The highest amount of rain was', highestMonthly, 'in' , highestMonth)
print #this is for spacing in output
print ('The lowest amount of rain was', lowestMonthly, 'in' , lowestMonth)
print(rainfallSorted)
#Gets rainfall per month from user. ---------------------------------------------------------------------------------------
def rainInput ():
rainfall = ['January','Febuary','March','April','May','June','July','August'\
,'September','October','November','December']
month = 0
while month < len(rainfall):
rainfall[month] = int(input ('Please enter the amount for month ' + str\
(month + 1) + ': '))
month += 1
rainfall.append
return rainfall
#Totals rainfall from user inputted data. ---------------------------------------------------------------------------------
def totalRainfall (rainfall):
return sum([int(x) for x in rainfall])
#Averages rainfall for the year. ------------------------------------------------------------------------------------------
def averageRainfall (totalRain):
average_Rainfall = totalRain / 12
return average_Rainfall
#Finds highest month of rainfall and displays to the user. ----------------------------------------------------------------
def highestMonthNumber (rainfall):
month = ['January','Febuary','March','April','May','June','July','August'\
,'September','October','November','December']
highestMonthly = 0
highestMonth = 0
for m, n in enumerate(rainfall):
if n > highestMonthly:
highestMonthly = n
highestMonth = m
return month[highestMonth], highestMonthly
#Finds lowest month of rainfall and displays to the user. -----------------------------------------------------------------
def lowestMonthNumber (rainfall):
month = ['January','Febuary','March','April','May','June','July','August'\
,'September','October','November','December']
lowestMonthly = 1000000000
lowestMonth = 0
for m, n in enumerate(rainfall):
if n < lowestMonthly:
lowestMonthly = n
lowestMonth = m
return month[lowestMonth], lowestMonthly
def sortedRainfall (rainfall):
month = ['January','Febuary','March','April','May','June','July','August'\
,'September','October','November','December']
for index in range(1,len(rainfall)):
value = rainfall[index]
i = index - 1
while (i >= 0):
if value < rainfall[i]:
rainfall[i+1] = rainfall[i] #shift number in slot i right to slot i + 1
rainfall[i] = value #shif value left into slot i
i = i - 1
else:
break
return
main()
答案 0 :(得分:2)
def sortNames(listOfNames):
sortedNames = []
for index in range(1,len(listOfNames)):
value = listOfNames[index]
i = index - 1
while (i >= 0):
if value < listOfNames[i]:
listOfNames[i+1] = listOfNames[i] #shift number in slot i right to slot i + 1
listOfNames[i] = value #shif value left into slot i
i = i - 1
else:
break
return rainfall
只需返回一些东西。
答案 1 :(得分:1)
试试这个:
def sortedRainfall (rainfall):
for i in range(1, len(rainfall)):
if rainfall[i] < rainfall[i-1]:
for j in range(i):
if rainfall[i] < rainfall[j]:
rainfall[i], rainfall[j] = rainfall[j], rainfall[i]
return rainfall