如何打印出 python 中使用字符串数组的最小数字?

How do I print out the lowest number that uses a string array in python?

我正在尝试让 lowRain 函数打印出数组中的最小数字以及月份。 例如,当我 运行 通过 rainInput 函数中的循环并输入这些数字(4、3、10、10、10、10、10、10、10、8、23、10)时,它将通过低雨功能。当我尝试 return 降雨最少的月份时,我得到 "The lowest rainfall for December was 10 inches."

def main():
  rainfall = rainInput()
  low, lowMonth = lowRain(rainfall)
  print("The lowest rainfall for " + str(low) + " was " + str(lowMonth) + " inches.")


def rainInput():
  rainfall = ["January", "Febuary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
  for month in range(len(rainfall)):
    rainfall[month] = (int(input("Please enter the amount of rain for " + str(rainfall[month]) + " :")))  
  return rainfall

def lowRain(rainfall):
  month = ['January','Febuary','March','April','May','June','July','August','September','October','November','December']
  lowMonth = min(month)
  print(lowMonth)
  for m, n in enumerate(rainfall):
    if lowMonth:
      lowMonth = n
      low = m
  return month[low], lowMonth


main()  

您正在对之前 1 行定义的月份名称数组使用 lowMonth = min(month),这将始终导致 April。我猜你想检查之前输入的哪个月的降雨量最少,在这种情况下你可以这样做:

def lowRain(rainfall):
    lowest = min(rainfall)
    index_of_lowest = rainfall.index(lowest)
    month = ['January','Febuary','March','April','May','June','July','August','September','October','November','December']
    lowest_month = month[index_of_lowest]
    return lowest_month, lowest

如果将降雨量和月份名称放在一起,则可以使用 min 函数:

>>> data
[(4, 'January'),
 (3, 'Febuary'),
 (10, 'March'),
 (10, 'April'),
 (10, 'May'),
 (10, 'June'),
 (10, 'July'),
 (10, 'August'),
 (10, 'September'),
 (8, 'October'),
 (23, 'November'),
 (10, 'December')]

>>> min(data)
(3, 'Febuary')

这是因为当min比较序列时,它会按顺序比较序列组件,在这种情况下,首先是降雨量,然后是月份名称。结果将始终具有最小降雨量,如果有多个月份的最小降雨量相同,您将获得按字母顺序排序的第一个月份。