Python 为什么函数会接受所有的值?
我发现了一个问题。。。当我执行第一个函数时,它会从我导入的csv文件中删除数据并使用它,这就是为什么其他函数无法执行的原因。。。如何纠正这一点? 如果第二个函数单独执行,它将给出所需的结果 CSV文件有3行,即选民id号、县、候选人Python 为什么函数会接受所有的值?,python,Python,我发现了一个问题。。。当我执行第一个函数时,它会从我导入的csv文件中删除数据并使用它,这就是为什么其他函数无法执行的原因。。。如何纠正这一点? 如果第二个函数单独执行,它将给出所需的结果 CSV文件有3行,即选民id号、县、候选人 import csv with open('election_data_1-2.csv') as file1: reader1 = csv.reader(file1) def total_votes():
import csv
with open('election_data_1-2.csv') as file1:
reader1 = csv.reader(file1)
def total_votes():
f1 = [vote1[0] for vote1 in reader1]
print("The total number of voters are:",len(f1)-1)
def unique_candidates():
b = []
for cd1 in reader1:
if cd1[2] == "Candidate"
None
elif cd1[2] not in b:
b.append(cd1[2])
return ("\nThe candidates taking part in elections are",b)
total_votes()
unique_candidates()
--------------------------------------------------------------------------------
Result with the second function:
The candidates taking part in elections are ['Vestal','Torres','Seth','Khan']
Result with both the functions:
The total number of voters are: 4324001
The candidates taking part in elections are [ ]
协议如下。由于您在两个函数之间共享同一个reader对象,因此读取器在转到第二个函数之前已经到达迭代的末尾。当第二个函数通过调用读取器上的next()
获取记录时,它位于列表的末尾
您可以尝试以下方法之一:
导入csv
def总投票数(选举数据文件):
打开(选举数据文件)作为文件1:
reader1=csv.reader(文件1)
f1=[vote1[0]表示读取器1中的vote1]
打印(f“选民总数为:{len(f1)-1}”)
def唯一候选人(选举数据文件):
b=[]
打开(选举数据文件)作为文件1:
reader1=csv.reader(文件1)
对于reader1中的cd1:
如果cd1[2]=“候选者”:
没有一个
elif cd1[2]不在b中:
b、 追加(cd1[2])
return f“\n参加选举的候选人是{b}”
选举数据文件='选举数据1-2.csv'
总票数(选举数据文件)
唯一候选人(选举数据文件)
导入csv
def总投票数(选举数据):
f1=[vote1[0]表示选举数据中的vote1]
打印(f“选民总数为:{len(f1)-1}”)
def唯一候选人(选举数据):
b=[]
对于选举数据中的cd1:
如果cd1[2]=“候选者”:
没有一个
elif cd1[2]不在b中:
b、 追加(cd1[2])
return f“\n参加选举的候选人是{b}”
选举数据=[]
打开('election_data_1-2.csv')作为文件1:
reader1=csv.reader(文件1)
选举数据=列表(读取器1)
总票数(选举数据)
唯一候选人(选举数据)
关闭读取器1
并在功能之间再次打开它?