[英]I got this error 'TypeError: can only concatenate str (not "NoneType") to str'
[英]TypeError: can only concatenate str (not “NoneType”) to str
嘗試在 Python 3.7 中構建大寫到小寫字符串轉換器,這是我的代碼:
def convertChar(char):
if char >= 'A' and char <= 'Z':
return chr(ord(char) + 32)
def toLowerCase(string):
for char in string:
string = string + convertChar(char)
return string
string = input("Enter string - ")
result = toLowerCase(string)
print(result)
這是我的輸出:
Enter string - HELlo
Traceback (most recent call last):
File "loweralph.py", line 11, in <module>
string = toLowerCase(result)
File "loweralph.py", line 6, in toLowerCase
result = result + convertChar(char)
TypeError: can only concatenate str (not "NoneType") to str
我對 Python 真的很陌生,我看到了“list to list”TypeErrors 的答案和 str to str 的另一個答案,但我無法將它與我的代碼相關聯。 如果有人能解釋我做錯了什么,那就太好了!
您需要在代碼中添加一些異常情況。 首先,如果輸入的字符已經是小寫怎么辦?
你可以做這樣的事情:
def convertChar(char):
if char >= 'A' and char <= 'Z':
return chr(ord(char) + 32)
return char
這可能不是最理想的解決方案,但它會處理大部分事情。 也就是說,只有輸入的字符是大寫的,才會轉換為小寫。 對於所有其他情況(無論是小寫字符、數字等),字符將按原樣返回。
其次,如果您正在制作大HElLo
小寫的轉換器,則HElLo
輸出應該是hello
,而不是HElLohello
。
為此,您需要按如下方式修改第二個函數:
def toLowerCase(string):
newString = []
for char in string:
newString.append(convertChar(char))
return ''.join(newString)
最后,您可能需要考慮使用.upper()
內置函數。
用法示例:
'你好'.upper()
正如coldspeed所評論的,當您將小寫字母傳遞給convertChar時,該函數將不會返回正確的字符。 因此錯誤。
此外,使用 'string = string + convertChar(char)' 您附加到相同的輸入字符串。 這是錯誤的。 您需要為此使用一個新的空字符串。
我不知道構建自己的方法的原因,但您可以改用內置的 lower() 方法。 例如:
my_string = input("Enter string - ")
result = my_string.lower()
print(result)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.