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

时间:2015-01-03 02:30:32

标签: 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 = 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

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:5)

问题在于您返回print函数的结果,即无。

而不是:

return print(char)

你应该简单地使用:

return char

您可能也希望在print(result)功能的末尾添加lowerString,否则您将无法获得任何输出。

答案 1 :(得分:2)

return print(char)

这将首先打印char的值(如print(char)中)和然后尝试返回打印函数的返回值。但由于print函数总是返回None - 它只会打印该值,它不会返回它 - 您的函数将始终返回None,从而在尝试连接时导致错误{ {1}}带有字符串。

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

None

答案 2 :(得分:1)

为什么不执行string_variable.lower()'test string'.lower(),因为python中的所有内容都是对象,字符串对象附加了多个方法。

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