我正在创建一个程序,如果用户输入文本,它会将任何大写字母转换为小写:
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
任何帮助将不胜感激。
答案 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)