编写一个程序,可以读取文件并显示每种交通方式的学生人数

2024-09-30 02:16:19 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是场景 “文件”旅行.txt“按如下方式存储有关学生的数据:

First name, Surname, Programme, Means of transport.

样本数据为:

John Farmer BScCse Bus

Kevin Khan BScMCS Taxi

Janet Zuber BScMIS Bus

San Jacky BScAis PrivateCar

Sarah Forceps BScIS PrivateCar

我想阅读文件并以这样的形式显示每种交通方式的学生人数:

Taxi 1

Bus 2

PrivateCar 2

我编写了以下代码:

f1=open("travel.txt",'r')
line=f1.readline()
count1=0
count2=0
count3=0
while line!=" ":
    data=line.split()
    if data[3]=="Bus":
        count1=count1+1
    elif data[3]=="Taxi":
        count2=count2+1
    else:
        count3=count3+1
    line=f1.readline()
print("Taxi","\t",count1)
print("Bus","\t",count2)
print("Private Car","\t",count3)
f1.close()

但它不起作用 你能帮我吗


Tags: 文件数据txtdata方式line学生f1
3条回答

即使你可能已经有了答案,这里是另一个方法,这是一个简单一点,可以给你一些其他统计以及。您可以使用pandas进行读取,它会自动将其转换为DataFrame。这允许您对数据做一些很好的处理。你知道吗

假设数据之间有空格,您可以这样读取文件:

import  pandas as pd
cols = ['Name', 'Surname', 'Degree', 'Transport']
data = pd.read_csv('test.csv', sep='\s', engine='python', header=None, names=cols)

它将提供以下输出:

    Name    Surname Degree  Transport
0   John    Farmer  BScCse  Bus
1   Kevin   Khan    BScMCS  Taxi
2   Janet   Zuber   BScMIS  Bus
3   San     Jacky   BScAis  PrivateCar
4   Sarah   Forceps BScIS   PrivateCar

然后您可以按以下方式了解有多少学生使用每种交通方式:

data.groupby('Transport').count()['Name']

它将为您提供以下输出:

Transport
Bus           2
PrivateCar    2
Taxi          1

您还可以调用其他stats方法,例如mean。与“硬”编写方法相比,这使代码和数据更加灵活。你知道吗

你的问题似乎在while循环中。试试这个:

f1=open("travel.txt",'r')
lines=f1.readlines() # note the readlines() instead of readline()
count1=0
count2=0
count3=0
for line in lines:
    data=line.split()
    if data[3]=="Bus":
        count1=count1+1
    elif data[3]=="Taxi":
        count2=count2+1
    else:
        count3=count3+1
print("Taxi","\t",count1)
print("Bus","\t",count2)
print("Private Car","\t",count3)
f1.close()

试试这个:

f1=open("travel.txt",'r')
count1=0
count2=0
count3=0
for line in f1.readlines():
    if line.strip() != '':
        data = line.split()
        if data[3]=="Taxi":
            count1=count1+1
        elif data[3]=="Bus":
            count2=count2+1
        else:
            count3=count3+1
print("Taxi","\t",count1)
print("Bus","\t",count2)
print("Private Car","\t",count3)
f1.close()

相关问题 更多 >

    热门问题