当前位置:  开发笔记 > 编程语言 > 正文

无法隐式地将'nonetype'对象转换为str - Python3

如何解决《无法隐式地将'nonetype'对象转换为str-Python3》经验,为你挑选了1个好方法。

我一直在尝试创建一个简单的程序,它将"登录"用户并欢迎他们.我对编程非常陌生,因此对Python出现的错误感到非常困惑.我也知道有很多问题已经回答了这个特殊的错误,但是它们似乎都没有与我得到的问题完全吻合,而且因为我是新的我无法适应答案.☺

这是我的代码......

    from datetime import datetime

    def userLogin() :
        Name = input("Please type         your Username ")
        if Name == "User1" :
            print ("Welcome User1!         " + timeIs())
        if Name == "User2" :
            print ("Welcome User2! The time is " +         datetime.strftime(datetime.now(), '%H:%M'))
                if Name == "User3" :
                    print ("Welcome User3! The time is " + datetime.strftime(datetime.now(), '%H:%M'))

    def timeIs() :
        print ("The time is " +   datetime.strftime(datetime.now(), '%H:%M'))

    print (userLogin())

如您所见,对于User2和User3,我已经设置了通过datetime模块获取时间的完整操作.但是在User1语句中,我试图通过定义第二个语句(timeIs)并使用它来说明时间来缩短它.每次我登录'user1,python说这个 -

    Please type your Username> User1
    The time is 19:09
    Traceback (most recent call last):
      File "/home/pi/Documents/User.py", line 15, in 
print (userLogin())
   File "/home/pi/Documents/User.py", line 6, in userLogin
print ("Welcome User1! " + timeIs())
    TypeError: Can't convert 'NoneType' object to str implicity

正如你所看到的,python接受输入,在没有欢迎消息的情况下吐出时间,并给出了非类型错误的东西.我的问题是,为什么会发生这种情况?非常感谢所有回答我这个简单问题的人☺

干杯,卡尔



1> TigerhawkT3..:

函数返回一个值.如果您没有指定,则会隐式返回None.你的timeIs函数打印一些东西,但没有return语句,所以它返回None.您可以保持原样并以不同方式调用它:

if Name == "User1" :
    print("Welcome User1!         ", end='')
    timeIs()

或者您可以以相同的方式调用它,但以不同的方式定义它,返回创建的字符串而不是打印它:

def timeIs() :
    return "The time is " +   datetime.strftime(datetime.now(), '%H:%M')

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有