我正在尝试编写一个程序,以查看是否有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 ()
非常感谢您的帮助/反馈!
答案 0 :(得分:2)
问题在您的main()
函数中:
def main ():
listsToGenerate = 10
for n in range( listsToGenerate ):
determineDate( createDayNumberList() ) ##
print("")
createDayNumberList()
返回一个List
对象。这将传递到determineDate()
,然后进行比较:
if dayNumber <= endOfMonth
,
其中dayNumber
是列表对象,而endOfMonth
是INT
。因此,错误。
据我了解,由于您的createDayNumberList()
始终仅返回1个值,因此您可以将其存储在变量中,而不是将其存储在列表中。
类似的东西:
def createDayNumberList( howMany = MaxInList ):
dayNumbers = []
for counter in range( howMany ):
nextDayNumber = random.randint( 1, 365 )
#dayNumbers.append( nextDayNumber )
return nextDayNumber
现在,此函数还返回一个int
。因此,determineDate()
中的比较将始终是正确的。