我遇到了这个功能的问题。 当我尝试运行代码时,在函数外弹出一条消息“return”。
感谢。
def find_details(id2find):
surfistas_f = open("surfing_data.csv")
for each_line in surfistas_f:
s={}
(s['id'], s['nome'],s['pais'],s['media'],s['prancha'],s['idade'])= each_line.split(";")
if id2find == int(s['id']):
surfistas_f.close()
return(s)
surfistas_f.close()
return({})
lookup_id=int(input(" Entre com a identificação do surfista: "))
surfer = find_details(lookup_id)
if surfer:
print("ID: " + surfer['id'])
print("Nome: " + surfer['nome'])
print("País: " + surfer['pais'])
print("Média: " + surfer['media'])
print("Prancha: " + surfer['prancha'])
print("Idade: " + surfer['idade'])
答案 0 :(得分:3)
return({})
不在函数find_details
之内。你只需要缩进它,就像这样:
def find_details(id2find):
surfistas_f = open("surfing_data.csv")
for each_line in surfistas_f:
s={}
(s['id'], s['nome'],s['pais'],s['media'],s['prancha'],s['idade'])= each_line.split(";")
if id2find == int(s['id']):
surfistas_f.close()
return(s)
surfistas_f.close()
return({})
lookup_id=int(input(" Entre com a identificação do surfista: "))
surfer = find_details(lookup_id)
if surfer:
print("ID: " + surfer['id'])
print("Nome: " + surfer['nome'])
print("País: " + surfer['pais'])
print("Média: " + surfer['media'])
print("Prancha: " + surfer['prancha'])
print("Idade: " + surfer['idade'])
答案 1 :(得分:2)
在Python中,空格和缩进非常重要。 Python不像其他语言那样使用大括号,因此它识别哪些行是缩进的一部分。例如,这个简单的函数:
def print_nums(num):
for i in range(num):
print(i)
如果Python使用大括号(我在思考时不寒而栗),可以这样思考:
def print_nums(num):
{
for i in range(num):
{
print(i)
}
}
如果我们将其更改为:
,此方法的结果将发生巨大变化def print_nums(num):
for i in range(num):
print(i)
如大括号所示:
def print_nums(num):
{
for i in range(num):
{
}
print(i)
}
因此,确保所有内容都正确缩进在Python中非常重要。因此,特别是对于您的方法,return将缩进到与方法名称相同的级别,这意味着Python解释器会将其视为在方法之外。您无法在方法/函数之外使用关键字return
,这就是您看到错误的原因。但是,如果你使用print()
或者最后使用其他东西,你会看到一些意想不到的结果。
我还建议使用Python的with
语句来打开文件,它会为你处理关闭和打开文件:
with open('surfing_data.csv') as sufista_s:
do_stuff()
答案 2 :(得分:1)
请注意代码格式。 在这两行之前你需要4个额外的空间:
surfistas_f.close()
return({})