我一直在尝试创建一个简单的程序,它将"登录"用户并欢迎他们.我对编程非常陌生,因此对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, inprint (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接受输入,在没有欢迎消息的情况下吐出时间,并给出了非类型错误的东西.我的问题是,为什么会发生这种情况?非常感谢所有回答我这个简单问题的人☺
干杯,卡尔
函数返回一个值.如果您没有指定,则会隐式返回None
.你的timeIs
函数打印一些东西,但没有return
语句,所以它返回None
.您可以保持原样并以不同方式调用它:
if Name == "User1" : print("Welcome User1! ", end='') timeIs()
或者您可以以相同的方式调用它,但以不同的方式定义它,返回创建的字符串而不是打印它:
def timeIs() : return "The time is " + datetime.strftime(datetime.now(), '%H:%M')