题目要求:
已知受邀请人名单如下:
names = ['li hua', 'zhao si', 'ma hu', 'liu wei', 'yu jin', 'fang hui', 'da yu', 'ma kai', 'hu jie']
请使用pop()不断地删除受邀请人名单,直到只有‘zhao si’和‘ma hu’两位为止,对于被删除的人请告诉他们下次一起共进晚餐,而对于zhao si和ma hu告诉他们仍在受邀请之列。
names = ['li hua', 'zhao si', 'ma hu', 'liu wei', 'yu jin', 'fang hui', 'da yu', 'ma kai', 'hu jie']
for name in names:
if name == 'zhao si':
print(f"Dear {name}, you are still invited!")
elif name == 'ma hu':
print(f"Dear {name}, you are still invited!")
else:
uninvited_name = names.pop()
print(f"Sorry {uninvited_name}, let's have dinner next time!")
# 为什么除了'zhao si'和'ma hu'还有其他人在名单之中?
print(names)
Sorry hu jie, let's have dinner next time!
Dear zhao si, you are still invited!
Dear ma hu, you are still invited!
Sorry ma kai, let's have dinner next time!
Sorry da yu, let's have dinner next time!
Sorry fang hui, let's have dinner next time!
['li hua', 'zhao si', 'ma hu', 'liu wei', 'yu jin']
使用for循环遍历列表,如果名字是'zhao si'或者'ma hu'就输出一句话,其他的则删除列表并致歉。
列表中只剩'zhao si'和'ma hu'
对于一边循环一边删除的操作,可以用倒序循环。
你题目的解答代码如下:
names = ['li hua', 'zhao si', 'ma hu', 'liu wei', 'yu jin', 'fang hui', 'da yu', 'ma kai', 'hu jie']
for i in range(len(names)-1,-1,-1):
name = names[i]
if name == 'zhao si':
print(f"Dear {name}, you are still invited!")
elif name == 'ma hu':
print(f"Dear {name}, you are still invited!")
else:
uninvited_name = names.pop(i)
print(f"Sorry {uninvited_name}, let's have dinner next time!")
# 为什么除了'zhao si'和'ma hu'还有其他人在名单之中?
print(names)
要正序循环可以这样
names = ['li hua', 'zhao si', 'ma hu', 'liu wei', 'yu jin', 'fang hui', 'da yu', 'ma kai', 'hu jie']
i = 0
while i < len(names):
name = names[i]
if name == 'zhao si' or name == 'ma hu':
print(f"Dear {name}, you are still invited!")
i += 1
else:
uninvited_name = names.pop(i)
print(f"Sorry {uninvited_name}, let's have dinner next time!")
print(names)
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
pop()方法删除的是最后一个元素,
names = ['li hua', 'zhao si', 'ma hu', 'liu wei', 'yu jin', 'fang hui', 'da yu', 'ma kai', 'hu jie']
遍历'li hua', 'zhao si', 'ma hu', 'liu wei', 'yu jin','fang hui'六个的时候, 'zhao si', 'ma hu'分别输出了邀请的话,而其余四个则删除了列表末尾的四个元素,等于列表有9个人,但for循环只循环了6次。