以下代码段必须使用代码控件:
favorite_languages ={
'jen':['python','ruby'],
'sarah':['c'],
'edward':['ruby','go'],
'phil':['python','haskell'],
}
for name,languages in favorite_languages.items():
if len(languages) == 1:
print("\n" + name.title() + "'s favorite languages is:")
for language in languages:
print('\t' + language.title())
else:
print("\n" + name.title() + "'s favorite languages are:")
for language in languages:
print('\t' + language.title())
返回值:
Sarah's favorite languages is:
C
Phil's favorite languages are:
Python
Haskell
试试加个引索?
这个很简单呀,不需要加条件判断:
favorite_languages ={
'jen':['python','ruby'],
'sarah':['c'],
'edward':['ruby','go'],
'phil':['python','haskell'],
}
for name,languages in favorite_languages.items():
print("\n" + name.title() + "'s favorite languages is:")
for language in languages:
print('\t' + language.title())
而且你的源码中缩进貌似错误。
for......else......的执行顺序为:
当迭代对象完成所有迭代后且此时的迭代对象为空时,如果存在else子句则执行else子句,没有则继续执行后续代码;如果迭代对象因为某种原因(如带有break关键字)提前退出迭代,则else子句不会被执行,程序将会直接跳过else子句继续执行后续代码。
你的代码执行完for之后,name, languages因为是全局变量,所有记录的值是for的最后一个次。
favorite_languages ={
'jen':['python','ruby'],
'sarah':['c'],
'edward':['ruby','go'],
'phil':['python','haskell'],
}
for name,languages in favorite_languages.items():
if len(languages) == 1:
print("\n" + name.title() + "'s favorite languages is:")
for language in languages:
print('\t' + language.title())
else:
print("\n" + name.title() + "'s favorite languages are:")
for language in languages:
print('\t' + language.title())