获取类型错误:不支持的操作数类型为+:'int'和'str'

问题描述:

if option == 4: 
     day5 = int(input('Enter a day:')) 
     month5 = int(input('Enter a month:')) 
     year5 = int(input('Enter a year:')) 
     dateSelected = str(year5+'-'+month+'-'+day5) 
     if day == day5 and month == month5 and year == year5: 
      print(occurence, ' appointment starting on (', dateSelected, '): ', time, ', ', event) 

我得到的错误与“dateSelected = str(year5 +' - '+ month +' - '+第5天)”。我不知道如何解决这个问题。我寻找过类似的问题,并尝试过它们,但它没有帮助。获取类型错误:不支持的操作数类型为+:'int'和'str'

+0

说你'year5'进入'2017'。你正在试着'+'数字'2017'与字符'' - ''。这并不意味着什么,所以这是抛出一个错误 –

看起来像你设置月份到月份5,然后试图通过调用月份而不是月份5回来。

变化

dateSelected = str(year5+'-'+month+'-'+day5) 

dateSelected = str(year5+'-'+month5+'-'+day5) 
+0

不,这不是问题。 – Bugaboo

+0

由于这一行,你可以认识到这无关紧要:'如果day == day5和month == month5和year == year5:' –

至少year5day5int秒。 '-'是字符串。所以,你要添加/连接一个字符串到一个int,这是没有意义的。

蟒蛇可能使类型都int或两个string隐式。但是,因为两者都有意义(就类型而言),添加和连接都被定义(显然不同时)。所以Python没有......没有,它不知道你是否想要一个或另一个。

您可能认为获取更多信息(因此它可以检测它是否是数字字符串,如果是,则该字符串将被隐式转换为int,如果不是该int将被转换)是好的,但它实际上是一个不好的主意,并使操作员变得更慢(当使用很多时,你应该能够注意到它)。

替换符合:

dateSelected = str(year5)+'-'+str(month)+'-'+str(day5) 
+1

外部str调用是不必要的。 – happydave

+0

是的,它**是**,谢谢 –