问题描述
问题: 有一场马拉松比赛,并且您有参与者列表。 (例如:[“ jack”,“ mike”,“ john”]) 参加人数是1到100000之间的随机整数。 您也有完成马拉松比赛的参与者列表。完成的参与者数量比总参与者少1。 可能有同名参与者。 您必须构建一个函数来打印未完成马拉松的参与者。
我的尝试:
def solution(participant,completion):
for i in completion:
if i in participant:
participant.remove(i)
answer = print ('"' + str(*participant) + '"')
return(answer)
例如,如果参与者= [“ john”,“ mike”],完成= [“ john”], 预期的答案是“迈克” 我认为我尝试的代码没有错。 如果有,你们能指出我错过的部分吗? 最重要的是,有没有更优雅的方法来构建此功能?
解决方法
for i in completion:
if i in participant:
participant.pop(i)
answer = print ('"' + str(*participant) + '"')
return(answer)
,
两个可能的改进:第一,如果总是只有一个参与者没有完成。
def solution(participant,completion):
for p in participant:
if p not in completion:
print( p )
return p
如果n名参与者未完成,则为第二:
def solution(participant,completion):
answer = []
for p in participant:
if p not in completion:
print( p )
answer.add(append)
#print( answer ) # if needed
return answer
如果您使用集合,则只需添加它们即可
def short(participant,completion):
return set(participant) - set(completion)
请参阅:
一个小提示:
还有你的
answer = print ('"' + str(*participant) + '"')
仅适用于Python 3,Python2引发SyntaxError,因为print不返回任何内容(Python 3中为None)。