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

2024-05-17 19:28:49 发布

您现在位置: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

任何帮助都将不胜感激。你知道吗


Tags: inpystringreturndeflineresultfile
3条回答

问题是返回的是print函数的结果,它是None。你知道吗

而不是:

return print(char)

您应该简单地使用:

return char

您可能也希望在lowerString函数的末尾添加一个print(result),否则将没有任何输出。你知道吗

为什么不做string_variable.lower()'test string'.lower()因为在python中所有的东西都是一个对象,string对象有多个附加的方法。你知道吗

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

这将首先打印char(如print(char))的值,然后尝试返回print函数的返回值。但是由于print函数总是返回None—它只打印值,而不返回它—您的函数总是返回None,从而在尝试用字符串连接None时导致错误。你知道吗

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

return char

相关问题 更多 >