Python 第五次實驗


【1】 (程序設計)編寫程序,將二維列表數據寫入 CSV文件(命名為“out.csv”),用逗號隔開。二維列表如下:[['Name','Age','Gender'],
['Bob','10','male'],
['Ala','12','female'],
['Cindy','12','female'],
['Dan','13','male']]
注意CSV文件的格式

lst=[['Name','Age','Gender'],['Bob','10','male'],['Ala','12','female'],['Cindy','12','female'],['Dan','13','male']]
fo=open("out.csv","w")
for i in lst:
    for j in i:
        fo.write(j)
        fo.write(',')
    fo.write("\n")
fo.close()

【2】 (程序設計)編寫程序,按行讀取文件中的字符串,輸出其中長度最長的那一行字符串。

fo=open('in.txt','r')
str=fo.read()
lst=str.split('\n')
ans=''
for i in lst:
    if len(ans)<len(i):
        ans=i
print(ans)

【3】 (程序設計)編寫程序,讀取附件data.CSV文件中的數據,並進行如下格式轉換:
(1)按行進行倒序排列;(2)每行數據倒序排列;(3)使用分號(;)代替逗號(,)分割數據,無空格;按照上述要求轉換后將數據輸出。
例如:data.csv文件內容如下:
1,2,3
4,5,6
7,8,9
程序輸出:
9;8;7
6;5;4
3;2;1
  ★【附件下載】★

fo=open('data.csv','r')
str=fo.read()
last_lst=str.split('\n')
last_lst.reverse()
for i in last_lst:
    j=i.split(',')
    j.reverse()
    for k in range(len(j)):
        print(j[k],end='')
        if k+1!=len(j):
            print(';',end='')
        else:
            print()

【4】 (程序設計)編寫程序,計算1到100的階乘,把階乘結果保存到文本文件“階乘.txt”。

fo=open('階乘.txt','w')
ans=1
for i in range(1,101):
    ans=ans*i
    fo.write('{}!={}\n'.format(i,ans))
fo.close()

【5】 (程序設計)下載附件,編寫程序找出“整數.txt”中素數(質數)的個數,並求出這些素數(質數)的和。數據之間用逗號隔開,但可能有連續的空格,程序中要注意判斷。
  ★【附件下載】★

prime=[1]*10002
prime[0]=0
prime[1]=0
for i in range(2,10002):
    for j in range(i*2,10002,i):
        prime[j]=0

fo=open('整數.txt','r')
str=fo.read()
lst=str.split('\n')

prime_sum=0
prime_num=0

for line in lst:
    line_lst=line.split(',')
    for i in line_lst:
        try:
            key=int(i)
            if prime[key]==1:
                prime_num=prime_num+1
                prime_sum=prime_sum+key
        except:
            None

print(prime_num,prime_sum)

【6】 (程序設計)下載附件,“整數.txt”文件每行有三個整數,統計該批整數中,有多少行的整數可以組成一個直角三角形(注意有負數)。下圖紅線標示的兩行數可以組成直角三角形:2525=2424+77,55=33+44。要求輸出滿足條件的所有整數。

fo=open('整數.txt','r')
str=fo.read()
line=str.split('\n')
num=[0]*3
ans=0

for i in line:
    try:
        num_str=i.split(',')
        num[0]=int(num_str[0]);
        num[1]=int(num_str[1]);
        num[2]=int(num_str[2]);
        if(num[0]<=0 or num[1]<=0 or num[2]<=0):
            continue
        num.sort()
        if num[0]**2+num[1]**2==num[2]**2:
            print(i)
            ans=ans+1
    except:
        None
print('共有{}組數據可以構成直角三角形'.format(ans))

【7】 (程序設計)下載附件,每行有3個整數(有負數)。編寫程序,讀入所有數據,如果某行的三個整數能構成三角形則計算其面積,輸出所有面積的最大值(保留兩位小數)及三個邊長的值。若三角形三邊長分別為a,b,c,計算p=(a+b+c)/2,則該三角形的面積的平方=p(p-a)(p-b)*(p-c)。

fo=open('整數.txt','r')
str=fo.read()
line=str.split('\n')
num=[0]*3
maxs=0

for i in line:
    try:
        num_str=i.split(',')
        a=int(num_str[0]);
        b=int(num_str[1]);
        c=int(num_str[2]);
        if(a<=0 or b<=0 or c<=0):
            continue
        p=(a+b+c)/2
        S=(p*(p-a)*(p-b)*(p-c))**0.5
        if S>maxs:
            maxs=S
            ans=i
    except:
        None

print('最大面積為{},邊長分別是{}'.format(maxs,ans))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM