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

为什么在Python中会出现此错误?,python,python-3.x,Python,Python 3.x,我正在制作一个程序,如果用户输入文本,它会将任何大写转换为小写: 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

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

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) 
def lowerChar(字符):

如果ord(char)>=65且ord(char)则问题在于您正在返回
print
函数的结果,该函数为None

而不是:

return print(char)
您应该简单地使用:

return char
您可能还想在
下字符串
函数的末尾添加一个
打印(结果)
,否则将不会有任何输出

return print(char)
这将首先打印
char
(如
print(char)
)的值,然后尝试返回打印函数的返回值。但由于print函数始终返回
None
——它只打印值,不返回值。因此,当尝试将
None
与字符串连接时,函数将始终返回
None
,从而导致错误

要解决此问题,只需不打印字符,而是返回:

return char

为什么不使用
string\u variable.lower()
“测试字符串”。lower()
因为在python中,所有东西都是一个对象,所以字符串对象有多个附加的方法

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

这个问题是关于实现的,属于(实现问题,例如代码修复(改为询问堆栈溢出))
string = input("type").lower()
print (string)
# or
string = input("type")
string = string.lower()
print (string)