为什么我得到TypeError:必须是str,而不是内置的函数或方法?

2024-10-01 17:33:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我被赋予了一个任务来呈现当前的时间和未来的时间。 用户输入他想要的额外分钟数,然后我需要显示确切的时间。在

我试过以下方法:

import time


hours = int(time.strftime('%H:%M')[0:2])
minutes = int(time.strftime('%H:%M')[3:5])


def newminutes(minutes,adding):
    if minutes + adding >=60:
        return minutes + adding - 60
    else:
        return minutes + adding

def newhours(hours, minutes, adding):
    if minutes + adding >=60:
        newhour = hours + adding//60 + 1     
    else:
        newhour =  hours + adding //60
        if newhour >= 24:
            return newhour - 24
         else:
            return newhour

usersays = input("insert additional minutes: ")
usersay = int(usersays)
finalhours = newhours(hours,minutes,usersay)
finalminutes = newminutes(minutes,usersay)

print("Current Time: " +time.strftime + "\n" +
      "Future Time: "+ str(finalhours) + ":" + str(finalminutes))

输入分钟数后,我得到的输出总是:

Traceback (most recent call last): File "C:\Users\DELL\Documents\Python projects\Ex2\test2.py", line 29, in +":" + str(newminutes(minutes,usersay))) TypeError: must be str, not builtin_function_or_method

我已经试了好几个小时都没有成功,请解释一下我哪里出了问题。提前谢谢!在


Tags: returniftimedef时间elseintadding
2条回答

出现的异常是因为您正试图将字符串连接与内置函数一起使用:

print("Current Time: " +time.strftime + "\n" +
      "Future Time: "+ str(finalhours) + ":" + str(finalminutes))

在时间.strftime是一个函数。在

^{pr2}$

你需要调用它以便它返回一个字符串。 尝试将其替换为以下内容,这将返回字符串对象:

time.strftime("%b %d %Y %H:%M:%S")
'Apr 05 2018 10:57:48'

错误来自向函数添加字符串。有关详细信息,请参见Vinnys answer。在

通过使用datetime.time并通过提供Format Specification Mini-Language正确格式化时间来输出正确格式化的对象,可以大大简化代码:

import datetime

usersays = input("insert additional minutes: ")
usersay = int(usersays)

now = datetime.datetime.now()  
then = now + datetime.timedelta(minutes = usersay)  # a delta that can be added to time()

# simply format the output correctly
print(f'Current Time: {now.time():%H:%M}\n' + \
      f'Future Time:  {then.time():%H:%M}')

您不需要实现所有的time to string来切片到数字来添加分钟,如果需要的话可以添加到hour中,只需使用timedelta()对象来添加时间。在

相关问题 更多 >

    热门问题