'list'和'int'的实例之间不支持'<='。初学者,不知道该怎么办

时间:2018-11-26 03:53:31

标签: python python-3.x

我正在尝试编写一个程序,以查看是否有30个日期范围从1到365的列表中的两个日期匹配 在尝试测试该程序时,我不断遇到“ list”和“ int”的实例之间不支持的错误“'<=””,我不确定如何继续。

到目前为止,这是我的程序:

import random

MaxInList = 30

def createDayNumberList( howMany = MaxInList ):

      dayNumbers = []
      for counter in range( howMany ):
            nextDayNumber = random.randint( 1, 365 )
            dayNumbers.append( nextDayNumber )
      return dayNumbers

def determineDate( dayNumber = 1 ):

      months = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
      name = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
              "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ] 
      endOfMonth = 0
      daysSoFar = 0
      for month in range( len( months ) ):
            endOfMonth += months[month]
            if dayNumber <= endOfMonth:
                  date = name[month]
                  date += " " + str( dayNumber - daysSoFar )
                  return date
            daysSoFar = endOfMonth
      return "Bad date!"

def main ():

    listsToGenerate = 10
    for n in range( listsToGenerate ):
        determineDate( createDayNumberList () )
        print("")

main ()

非常感谢您的帮助/反馈!

1 个答案:

答案 0 :(得分:2)

问题在您的main()函数中:

def main ():

    listsToGenerate = 10
    for n in range( listsToGenerate ):
        determineDate( createDayNumberList() ) ## 
        print("")

createDayNumberList()返回一个List对象。这将传递到determineDate(),然后进行比较:

if dayNumber <= endOfMonth, 其中dayNumber是列表对象,而endOfMonthINT。因此,错误。

据我了解,由于您的createDayNumberList()始终仅返回1个值,因此您可以将其存储在变量中,而不是将其存储在列表中。

类似的东西:

def createDayNumberList( howMany = MaxInList ):
    dayNumbers = []
    for counter in range( howMany ):
        nextDayNumber = random.randint( 1, 365 )
        #dayNumbers.append( nextDayNumber )
      return nextDayNumber

现在,此函数还返回一个int。因此,determineDate()中的比较将始终是正确的。