【问题标题】:Why do I get this error in Python?为什么我在 Python 中会收到此错误?
【发布时间】:2015-01-03 02:30:32
【问题描述】:

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

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

任何帮助将不胜感激。

【问题讨论】:

  • 这个问题是关于实现的,属于 Stack Overflow (实现问题,例如代码修复(请在 Stack Overflow 上提问))

标签: python python-3.x


【解决方案1】:

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

代替:

return print(char)

你应该简单地使用:

return char

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

【讨论】:

    【解决方案2】:
    return print(char)
    

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

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

    return char
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2022-01-23
        • 1970-01-01
        • 1970-01-01
        • 2018-06-22
        • 2016-01-01
        • 2023-01-02
        • 1970-01-01
        相关资源
        最近更新 更多