为什么在 Python 中会出现此错误?

Why do I get this error in Python?

我正在制作一个程序,如果用户输入文本,它会将任何大写字母转换为小写字母:

def lowerChar(char):
   if ord(char) >= 65 and ord(char) <= 90:
      char = int(ord(char)) + 32
      char = (chr(char))
      return print(char)
   else:
      return print(char)

def lowerString(string):
   x = len(string) 
   for i in range(x):
       char = string[0 + i]
       lowerChar(char)
       result = ""
       result = result + lowerChar(string[i])  

string = input("type")
lowerString(string) 

错误是:

Traceback (most recent call last):
  File "C:\Python34\njn.py", line 24, in <module>
    lowerString(string)
  File "C:\Python34\njn.py", line 19, in lowerString
    result = result + lowerChar(string[i])
TypeError: Can't convert 'NoneType' object to str implicitly

任何帮助将不胜感激。

问题是您要返回 print 函数的结果,即 None。

而不是:

return print(char)

你应该简单地使用:

return char

您可能还想在 lowerString 函数的末尾添加一个 print(result),否则您将没有任何输出。

return print(char)

这将首先打印 char 的值(如 print(char))和 然后 尝试 return return 打印函数的值。但是由于 print 函数总是 returns None——它只 打印 值,而不是 return——你的函数总是 return None 在尝试将 None 与字符串连接时导致错误。

要解决这个问题,只需不打印字符,而只打印 return 它:

return char

为什么不做 string_variable.lower()'test string'.lower() 因为在 python 中一切都是对象,字符串对象有多个附加方法。

string = input("type").lower()
print (string)
# or
string = input("type")
string = string.lower()
print (string)