python核心程式設計第九章答案

2021-06-26 08:25:04 字數 2698 閱讀 7523

9.1 比較簡單 看每一行開頭是不是# 是的話,忽略這一行

#!/usr/bin/env python

import os

while true:

inputfile = raw_input("please input the file name:")

if not os.path.exists(inputfile):

print "the file you input dose't exists"

continue

print "the name you input does not exists"

f1 = open(inputfile, 'r')

for each_line in f1:

if not each_line.strip().startswith('#'):

print each_line

f1.close()

9.2 設乙個標記=0, 每列印一行,標記+1

#!/usr/bin/env python

import os

infile = raw_input("please input n(n lins) f(file you want to read n lines):")

n, filein = infile.split()

n = int(n)

print n

print filein

if not os.path.isfile(filein):

print "the file you input does not exists"

f1 = open(filein, 'r')

line = 0

for each_line in f1:

if line < n:

print each_line,

line += 1

else:

break

f1.close()

9.3 每讀一行標記+1,這裡發現乙個有意思的問題, 如果你最後沒有寫 f.close() 用這段程式讀自己的話,有可能自己的程式沒有了

infile = raw_input('please input filename:')

f1 = open(infile)

num = 0

for each_line in f1:

num+=1

print "the file you input has %d lines" % num

f1.close()

看有人給出了乙個**更少的方法

filename = raw_input("please input the filename")

print len( [line for line in open(filename)] )

print [line for line in open(filename)]

雖然記憶體開銷大了一點,但是在檔案比較小的情況下可以忽略不計了,

另外發現乙個有意思的事 最後一行顯示如果是空行的話,有時候我們的顯示結果會多一行, 把列表列印出來發現這是最後一行油乙個'\n'的緣故

如果有興趣的話可以加一行判斷最後一行是否為空的**~

9.4 windows上比較簡單 直接os.sys('pause')

linux 別人部落格上搜到的不太好用,那位大牛解決了望告知

9.5不能理解那個開啟多個檔案~

這裡簡單的實現乙個,建立乙個隨機的五位到十位的姓名,乙個20到一百的隨機數

並且用了兩種方法來計算平均數 一種正常的開啟檔案,一行一行讀,然後另乙個用了列表解析

開始的時候一直平均數不同

列表解析這樣寫的(int (score) for line in f1, for score in line.split()[1])

這樣的結果是把乙個兩位數也給分解了~ 最後列印出來是一堆各位數.....

這樣寫就好   (int (line.split()[1]) for line in f1)

#!/usr/bin/env python

import random

import string

srstring = string.letters;

f1 = open('source.txt', 'w')

for i in range(0, 10):

name = ''

length = random.randint(5,10)

for j in range(length):

name += random.choice(srstring)

score = random.randint(20, 100)

score = str(score)

outstring = name + ' ' +score + '\n'

f1.write(outstring)

f1.close()

f1 = open('source.txt', 'r')

sum1 = 0

n = 0

for each_line in f1:

sum1 += int(each_line.split()[1])

n += 1

print sum1, sum1/n

f1.seek(0)

print sum(int(line.split()[1]) for line in f1)

f1.close()

python核心程式設計 第九章 9 11 練習

usr bin python coding utf 8 9 1.檔案過濾.顯示乙個檔案的所有行,忽略以井號 開頭的行.這個字元被用做python,perl,tcl,等大多指令碼檔案的注釋符號.附加題 處理不是第乙個字元開頭的注釋.import os,sys filename for filename...

C primer 第九章課後答案

b 在乙個檔案中將secret直接定義成外部,其他檔案或者說另乙個檔案要用的時候用extern來宣告下 c static auto topsecret d 在這個函式中定義個 靜態變數 static int beencalled 0 using 宣告更加的安全,用using namespace編譯指...

Python核心程式設計 第二版 第九章 習題答案

已放在我的github import os f open input.txt r for line in f idx line.find if idx 0 line elif idx 0 line line idx os.linesep print line,end n int input ente...