私は、ユーザーを「ログイン」させて歓迎する簡単なプログラムを作成しようとしています。私はプログラミングに非常に慣れていないので、エラー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ステートメントでは、2番目のステートメント(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 <module>
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は入力を受け取り、ウェルカムメッセージなしで時間を吐き出し、タイプなしのエラーを表示します。私の質問は、なぜこれが発生するのですか?皆さん、どうもありがとうございました。誰が私の非常に簡単な質問に答えますか☺
乾杯、カール
関数は値を返します。指定しない場合、暗黙的にNone
を返します。 timeIs
関数は何かを出力しますが、return
ステートメントがないため、None
を返します。そのままにして、別の方法で呼び出すことができます。
if Name == "User1" :
print("Welcome User1! ", end='')
timeIs()
または、同じ方法で呼び出すこともできますが、定義を変えて、印刷する代わりに作成された文字列を返します。
def timeIs() :
return "The time is " + datetime.strftime(datetime.now(), '%H:%M')