[小甲鱼] 零基础入门python第029讲课后测试题及答案:文件:一个任务

测试题:
0.编写一个程序,接收用户的输入并保存为新的文件,程序实现如图:

file_name = input('请输入文件名:')
txt_file = open(file_name,'w')
print("请输入内容【单独输入':w'保存退出】:")

while 1:
    line=input()
    if line==':w':
        txt_file.close()
        break
    else:
        txt_file.write(line+'\n')


1.编写一个程序,比较用户输入的两个文件,如果不同,显示出所有不同处的行号与第一个不同字符的位置,程序实现如图:

def compare_file(file_name1,file_name2):
    f1=open(file_name1,'r')
    f2=open(file_name2,'r')
    count=0
    while 1:
        a=f1.readline()
        b=f2.readline()
        count+=1
        if a:
            if a==b:
                continue
            else:
                print('第%d行不一样'% count)
        else:
            break
    f1.close()
    f2.close()

file_name1 = input('请输入需要比较的头一个文件名:')
file_name2 = input('请输入需要比较的另一个文件名:')
compare_file(file_name1,file_name2)

答案:
 

def file_compare(file1,file2):
    f1=open(file1)
    f2=open(file2)
    count=0 #统计行数
    differ=[] #统计不一样的数量
    
    for line1 in f1:
        line2=f2.readline()
        count+=1
        if line1!=line2:
            differ.append(count)

    f1.close()
    f2.close()
    return differ

file1 = input('请输入需要比较的头一个文件名:')
file2 = input('请输入需要比较的另一个文件名:')

differ = file_compare(file1,file2)

if len(differ) == 0:
    print('两个文件完全一样!')
else:
    print('两个文件共有【%d】处不同:' % len(differ))
    for each in differ:
        print('第%d行不一样' % each)



def output_lines(file,line):
    f = open(file,'r')
    print('文件'+file+'的前'+str(line)+'的内容如下:')
    count=0
    for each in f:
            count+=1
            if count <= line:
                print(each)
            else:
                break
    f.close()

file=input('请输入要打开的文件(C:\\test.txt):')
line=int(input('请输入需要显示该文件的前几行:'))
output_lines(file,line)

答案:

def file_view(file_name,line_num):
    print('\n文件%s的前%s的内容如下:\n'%(file_name,line_num))
    f = open(file_name)
    for i in range(int(line_num)):
        print(f.readline(),end='')

    f.close()
file_name = input(r'请输入要打开的文件(C:\\test.txt):')
line_num = input('请输入需要显示该文件前几行:')
file_view(file_name,line_num)


def file_view(file_name,line_num):
    number = line_num.split(':')
    count = len(open(file_name).readlines())
    if number[0]=='' and number[1]=='':
        print('\n%s文件全文的内容如下:\n'%(file_name))
        f = open(file_name)
        for i in range(count):
            print(f.readline(),end='')
    elif number[0]=='' and number[1]!='':
        print('\n文件%s从开始到%s行的内容如下:\n'%(file_name,number[1]))
        f = open(file_name)
        for i in range(int(number[1])):
            print(f.readline(),end='')

        f.close()
    elif number[0]!='' and number[1]=='':
        print('\n文件%s从%s行到末尾的内容如下:\n'%(file_name,number[0]))
        f = open(file_name)
        for i in range(count):
            if i >= int(number[0])-1:
                print(f.readline(),end='')
            else:
                f.readline()

        f.close()
    else:
        print('\n文件%s从%s行到%s行的内容如下:\n'%(file_name,number[0],number[1]))
        f = open(file_name)
        for i in range(count):
            if i >= int(number[0])-1 and i<= int(number[1])-1:
                print(f.readline(),end='')

        f.close()
file_name = input(r'请输入要打开的文件(C:\\test.txt):')
line_num = input('请输入需要显示的行数【格式如13:21或:21或21:】:')
file_view(file_name,line_num)


def replace(file_name,old_word,new_word,yes_or_no):
    f = open(file_name,'r+')
    str_all = f.read()
    f.seek(0)
    num = str_all.count(old_word)
    if yes_or_no=='yes' or 'YES':
        str_all = str_all.replace(old_word,new_word)
        f.write(str_all)
    else:
        pass

file_name = input('请输入文件名:')
old_word = input('请输入需要替换的单词或字符:')
new_word = input('请输入新的单词或字符:')

print('\n文件 %s 中共有 %d 个【%s】'%(file_name,open(file_name).read().count(old_word),old_word))
print('您确定要吧所有的【%s】替换为【%s】吗?'%(old_word,new_word))
yes_or_no = input('【YES/NO】:')
replace(file_name,old_word,new_word,yes_or_no)


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值