新函数不接受来自其他函数的返回值
问题描述:
我从CSV文件读取并创建一个函数,将玩家与该文件分隔为2个列表:经验丰富的玩家和新玩家。新函数不接受来自其他函数的返回值
然后,我试着创建另一个函数来打印每个列表的长度。但是,当我运行脚本并调用2个函数时,Python返回一个错误,指出第二个函数的变量未定义。不知道我做错了什么。
import csv
with open('soccer_players.csv', newline='') as csvfile:
players_reader = csv.DictReader(csvfile, delimiter=',')
players = list(players_reader)
def separate(players):
experienced = []
fresh = []
for player in players:
if player['Soccer Experience'] == 'YES':
experienced.append(player)
else:
fresh.append(player)
return experienced, fresh
def countexperience (experienced, fresh):
players_experience = len(experienced)
players_fresh = len(fresh)
print(players_experience)
print(players_fresh)
while True:
start = input("Want to start? (Y/n) ").lower()
if start == "y":
separate(players)
countexperience(experienced, fresh)
break
elif start == "n":
print("goodbye")
break
else:
print("letter not accepted! Please write 'Y' to start or 'N' to exit!\n")
结果:
countexperience(experienced, fresh)
NameError: name 'experienced' is not defined
答
在separate()
局部变量不会添加到当前的范围,所以你需要分配的separate()
变量在当前范围内的回报,如:
experienced, fresh = separate(players)
注意:您可以使用任何你想要的名字,例如
e, f = separate(players)
countexperience(e, f)
您也可以扩大从separate()
直接在函数调用countexperience()
的tuple
回用*
,例如:
countexperience(*separate(players))