[英]Return in python, reading values from .txt file
级别:初学者
嘿,我正在尝试解决Python中的一个练习。
代码正在比较函数参数print(getUserPoint("Benny"))
给定的userName,如果该名称存在于userScores.txt中,则我想返回用户分数,否则我想返回字符串“ -1” 。
如果我使用print
,结果将按预期打印,但是,如果我使用return
,即使文件中存在userName,函数也始终返回“ -1”。
看起来它只读取第一个用户,即.txt文件中的得分值。
有人可以解释为什么在这种情况下“返回”以这种方式起作用吗?
userScores.txt:
Ann, 100
Benny, 102
Carol, 214
Darren, 129
码:
try:
def getUserPoint(userName):
f = open("userScores.txt", "r")
file = f.readlines()
print(file)
for item in file:
print(item)
content = item.split(',')
if content[0] == userName:
f.close()
return content[1]
#print(content[1])
else:
f.close()
return "-1"
#print("-1")
except IOError:
print("File not found")
f = open("userScores.txt", "w")
f.close()
print("-1")
第一次迭代后要关闭文件,应该消除循环中的else
并将其提取到外部。 实际上,我建议您应该重构代码以with
一起使用,这是处理关闭文件的一种更简洁的方法:
def getUserPoint(userName):
try:
with open("userScores.txt", "r") as file:
for item in file:
print(item)
content = item.split(',')
if content[0] == userName:
return content[1]
return "-1"
except IOError:
print("File not found")
return "-1"
在循环的第一次迭代中,文件中的名称与您传递给函数的名称不匹配时,它将返回并且不继续循环。
例如,如果您调用getUserPoint('Benny')
在循环的第一次迭代中,它将比较"Ann" == "Benny"
这返回false
,因此控件转到您的else
子句并从函数return
-不再循环。
import os
def getUserPoint(userName):
f=open('userScores.txt')
file=f.readlines()
for item in file:
content=item.split(',')
if content[0]==userName:
f.close()
return content[1]
else:
continue
f.close()
print('UserNotfound')
return '-1'
x=getUserPoint('Benny')
print(x)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.