【问题标题】:Getting a TypeError: unsupported operand type(s) for +: 'int' and 'str' [duplicate]获取类型错误:+ 的不支持的操作数类型:“int”和“str”[重复]
【发布时间】:2017-09-17 20:47:55
【问题描述】:
    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+'-'+day5)”这一行得到错误。我不知道如何解决这个问题。我一直在寻找类似的问题并尝试过,但没有帮助。

【问题讨论】:

  • 假设您输入2017year5。您正在尝试+ 数字2017 与字符'-'。这并不意味着什么,所以它抛出一个错误

标签: python python-3.x


【解决方案1】:

看起来您将月份设置为月份 5,然后尝试通过调用月份而不是月份 5 来取回它。

改变

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

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

【讨论】:

  • 不,这不是问题。
  • 你可以意识到这无关因为这条线:if day == day5 and month == month5 and year == year5:
【解决方案2】:

至少year5day5ints。 '-' 是字符串。因此,您将一个字符串添加/连接到一个 int,这是没有意义的。

Python 可以隐含地使类型都为intstring。但由于两者都有意义(仅关于类型),添加和连接都被定义(显然不是同时)。所以 Python ……什么都不做,它不知道你是否想要其中一个。

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

将该行替换为:

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

【讨论】:

  • 外部 str 调用是不必要的。
  • 真的,它,谢谢
猜你喜欢
  • 2014-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-24
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
  • 2018-02-05
相关资源
最近更新 更多