鱼C论坛

 找回密码
 立即注册
查看: 1631|回复: 4

[已解决]小白求助python29讲课后习题

[复制链接]
发表于 2021-10-19 14:58:54 | 显示全部楼层 |阅读模式
5鱼币
#  编写一个程序,当用户输入文件名和行数(N)后,将该文件的前N行内容打印到屏幕上
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)): #这两行循环不知道怎么翻译 i是哪里来的??
        print(f.readline(),end='')

    f.close() #关闭了文件但是这个函数没有返回return会造成什么后果吗

file_name = input(r'请输入要打开的文件(C:\\test.txt:') #r'是原始字符串 这里用原始字符串的原因是有\\那样\t就不会自己转义成制表符了
line_num = input('请输入需要显示该文件前几行:')
file_view(file_name,line_num)
问题如下:
①对于for i in range(int(line_num))不知道如何进行翻译 i是哪里来的?它好像都没被定义 为什么能够使用不报错
② 函数没有返回值会造成什么后果吗?
③file_name中使用r' 是不是因为r'是原始字符串 用原始字符串的原因是有\\,使用后\t就不会自己转义成制表符了
quq谢谢!!
最佳答案
2021-10-19 14:58:55
1、用for语句就不用考虑该迭代变量是否声明过,语法就是这样
2、有无返回值不影响该函数的运行,跟你的需求有关,如果你想在一个函数计算1到10的和并在主函数引用,那就要将函数计算的结果return回主函数,如果你不需要在主函数引用,你也可以直接在函数print
3、"\\"和"\t"咋联系上的,文件路径用"\"做分割的时候,需要两个"\\",因为单个"\"有转义功能,所以像"C:\Users\14326\Desktop\新建文件夹"的路径是不合法的,要加上r"C:\Users\14326\Desktop\新建文件夹"

最佳答案

查看完整内容

1、用for语句就不用考虑该迭代变量是否声明过,语法就是这样 2、有无返回值不影响该函数的运行,跟你的需求有关,如果你想在一个函数计算1到10的和并在主函数引用,那就要将函数计算的结果return回主函数,如果你不需要在主函数引用,你也可以直接在函数print 3、"\\"和"\t"咋联系上的,文件路径用"\"做分割的时候,需要两个"\\",因为单个"\"有转义功能,所以像"C:%users\14326\Desktop\新建文件夹"的路径是不合法的,要加上r"C: ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-19 14:58:55 | 显示全部楼层    本楼为最佳答案   
1、用for语句就不用考虑该迭代变量是否声明过,语法就是这样
2、有无返回值不影响该函数的运行,跟你的需求有关,如果你想在一个函数计算1到10的和并在主函数引用,那就要将函数计算的结果return回主函数,如果你不需要在主函数引用,你也可以直接在函数print
3、"\\"和"\t"咋联系上的,文件路径用"\"做分割的时候,需要两个"\\",因为单个"\"有转义功能,所以像"C:\Users\14326\Desktop\新建文件夹"的路径是不合法的,要加上r"C:\Users\14326\Desktop\新建文件夹"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-19 18:17:41 | 显示全部楼层
1,i是变量,被赋值时就被定义了,它的取值范围是range(0,int(line_num)),里边的0是默认值,可以不写,也可以改为其他值,那样取值范围就变了。
2,根据需求可返回可不返,没有影响。
3,r是原始字符串,和双引号一样,为了输出里边的字符串,\\是window下的路径符号,用\转义后面的\,同理\t也是一样的,用 \ 的目的是为了转义,否则会按原字符输出,比如d:\yinyue\是路径, 不加 \ ,就会输出成“d:\yinyue\”的字符串,而不是真正的路径了,\t代表制表符,没有 \ 就单纯是个字符"t",所以才把 \ 叫转义字符。
不知道我说清楚了没有?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-10-20 23:43:25 | 显示全部楼层
大马强 发表于 2021-10-19 14:58
1、用for语句就不用考虑该迭代变量是否声明过,语法就是这样
2、有无返回值不影响该函数的运行,跟你的需 ...

谢谢qwq
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-10-20 23:44:18 | 显示全部楼层
myqf123 发表于 2021-10-19 18:17
1,i是变量,被赋值时就被定义了,它的取值范围是range(0,int(line_num)),里边的0是默认值,可以不写,也 ...

谢谢qwq
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 22:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表