[英]I got this error 'TypeError: can only concatenate str (not "NoneType") to str'
[英]I get this error when i run this code “TypeError: can only concatenate str (not ”NoneType“) to str”, why?
我嘗試運行此代碼,但給了我這個錯誤,“ TypeError:只能將str(而不是“ NoneType”)連接到str”。 我需要知道該怎么辦。
我嘗試使用“”或“ True”而不是“ None”
users = {'zacc_eli':{'first_name': 'Zaccheus',
'middle_name': None,
'last_name': 'Elisha',
'age': 19},
'_Djvy_': {'first_name': 'daniel',
'middle_name': 'joshua',
'last_name': 'adebayo',
'age': None}}
for username, details in users.items():
print(username + ':')
full_name = details['first_name'] + ' ' + details['middle_name'] + ' ' + details['last_name']
full_name2 = details['first_name'] + ' ' + details['last_name']
age = details['age']
if details['middle_name'] == None :
print('\tFull Name: ' + full_name2.title())
else:
print('\tFull Name: ' + full_name.title())
if details['age'] != None:
print('\tAge: ' + str(age))
我希望沒有中間名時沒有雙倍空格,沒有年齡時也沒有年齡。
這條線
full_name = details['first_name'] + ' ' + details['middle_name'] + ' ' + details['last_name']
如果details['middle_name']
為None
而不是str
值,則失敗。 但是,此時您尚未檢查是否是這種情況。 直到4行之后您才可以這樣做。
Python並不懶惰(像Haskell一樣); 它不會等到您實際使用 full_name
的值來評估分配給它的表達式。
相反,在執行任何需要str
操作之前,請檢查該值:
for username, details in users.items():
print(username + ':')
first = details['first_name']
middle = details['middle_name']
last = details['last_name']
if middle is None:
full_name = first + ' ' + last
else:
full_name = first + ' ' + middle + ' ' + last
# Or a one-liner
# full_name = ' '.join([for x in [first, middle, last] if x is not None])
age = details['age']
print('\tFull Name: ' + full_name.title())
if age is not None:
print('\tAge: ' + str(age))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.