鱼C论坛

 找回密码
 立即注册
查看: 1405|回复: 7

[已解决]python 零基础学习作业题求解

[复制链接]
发表于 2020-8-7 17:49:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def file_display(file_name,line_num):
   
   
    line_num = line_num.strip()
    (begin,end) = line_num.split(":")

    if begin == " ":
        begin = "1"
    if end == " ":
        end = "-1"
        
    if begin == "1" and end == "-1":
        promt = "全文"
    elif begin == "1":
        prompt = "从开始到第%s行"%end
    elif end == "-1":
        prompt = "从第%s行到结束"%begin
    else:
        prompt = "从第%s行到第%s行"%(begin,end)
        
            
    print("\n文件%s%s的内容如下:\n"%(file_name,prompt))   
   
    file = open("F:/record.txt")
    begin = int(begin) - 1
    #begin = int(begin)
    end = int(end)      #把字符转换成数字类型
    lines = end - begin
   
    for i in range(begin):
        file.readline()    #此时指针指向了第begin行
        
    if lines < 0:
        print(file.read()) # read是读取剩余所有字符
    else:
        for j in range(lines):
            print(file.readline(),end = " ")  # readline是只读取一行
            
    file.close()   
        
   
#file_name = "F:/record.txt"  
#line_num = ":"
file_name = input(r'请输入要打开的文件(C:\\test.txt):')
line_num = input('请输入需要显示的行数【格式如 13:21 或 :21 或 21: 或 : 】:')
file_display(file_name, line_num)


请输入要打开的文件(C:\\test.txt):F:/record.txt
请输入需要显示的行数【格式如 13:21 或 :21 或 21: 或 : 】::

文件F:/record.txt从第行到第行的内容如下:


---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-19-54e6c973cee7> in <module>
     44 file_name = input(r'请输入要打开的文件(C:\\test.txt):')
     45 line_num = input('请输入需要显示的行数【格式如 13:21 或 :21 或 21: 或 : 】:')
---> 46 file_display(file_name, line_num)

<ipython-input-19-54e6c973cee7> in file_display(file_name, line_num)
     23
     24     file = open("F:/record.txt")
---> 25     begin = int(begin) - 1
     26     #begin = int(begin)
     27     end = int(end)      #把字符转换成数字类型

ValueError: invalid literal for int() with base 10: ''

错误原因是什么?如何修改?
最佳答案
2020-8-7 18:01:53
Bonnie_9999 发表于 2020-8-7 18:00
有东西啊,begin,end不是赋值了吗?

看看我那段代码行不行 https://fishc.com.cn/forum.php?m ... 054&pid=4893240
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-7 17:51:50 | 显示全部楼层
这样试试:
def file_display(file_name, line_num):
    line_num = line_num.strip()
    (begin, end) = line_num.split(":")

    if begin == "":
        begin = "1"
    if end == "":
        end = "-1"

    if begin == "1" and end == "-1":
        promt = "全文"
    elif begin == "1":
        prompt = "从开始到第%s行" % end
    elif end == "-1":
        prompt = "从第%s行到结束" % begin
    else:
        prompt = "从第%s行到第%s行" % (begin, end)

    print("\n文件%s%s的内容如下:\n" % (file_name, prompt))

    file = open("F:/record.txt")
    begin = int(begin) - 1
    # begin = int(begin)
    end = int(end)  # 把字符转换成数字类型
    lines = end - begin

    for i in range(begin):
        file.readline()  # 此时指针指向了第begin行

    if lines < 0:
        print(file.read())  # read是读取剩余所有字符
    else:
        for j in range(lines):
            print(file.readline(), end=" ")  # readline是只读取一行

    file.close()


# file_name = "F:/record.txt"  
# line_num = ":"
file_name = input(r'请输入要打开的文件(C:\\test.txt):')
line_num = input('请输入需要显示的行数【格式如 13:21 或 :21 或 21: 或 : 】:')
file_display(file_name, line_num)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-7 17:52:03 | 显示全部楼层
错误原因是你没有输入东西,却还要int它,这样试试:
def file_display(file_name,line_num):   
    line_num = line_num.strip()
    if not all(begin,end := line_num.split(":")):
        return

    if begin == " ":
        begin = "1"
    if end == " ":
        end = "-1"
        
    if begin == "1" and end == "-1":
        promt = "全文"
    elif begin == "1":
        prompt = "从开始到第%s行"%end
    elif end == "-1":
        prompt = "从第%s行到结束"%begin
    else:
        prompt = "从第%s行到第%s行"%(begin,end)
        
            
    print("\n文件%s%s的内容如下:\n"%(file_name,prompt))   
   
    file = open("F:/record.txt")
    begin = int(begin) - 1
    #begin = int(begin)
    end = int(end)      #把字符转换成数字类型
    lines = end - begin
   
    for i in range(begin):
        file.readline()    #此时指针指向了第begin行
        
    if lines < 0:
        print(file.read()) # read是读取剩余所有字符
    else:
        for j in range(lines):
            print(file.readline(),end = " ")  # readline是只读取一行
            
    file.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-7 18:00:21 | 显示全部楼层
qiuyouzhi 发表于 2020-8-7 17:52
错误原因是你没有输入东西,却还要int它,这样试试:

有东西啊,begin,end不是赋值了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-7 18:01:33 | 显示全部楼层
Bonnie_9999 发表于 2020-8-7 18:00
有东西啊,begin,end不是赋值了吗?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-7 18:01:53 | 显示全部楼层    本楼为最佳答案   
Bonnie_9999 发表于 2020-8-7 18:00
有东西啊,begin,end不是赋值了吗?

看看我那段代码行不行 https://fishc.com.cn/forum.php?m ... 054&pid=4893240
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-7 18:06:23 | 显示全部楼层
Bonnie_9999 发表于 2020-8-7 18:00
有东西啊,begin,end不是赋值了吗?

赋值了,可它的内容是个空字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-7 18:20:39 | 显示全部楼层
qiuyouzhi 发表于 2020-8-7 18:06
赋值了,可它的内容是个空字符串

明白了,谢谢!虽然小问题,但困扰我一天。找了个对比软件才发现我错在哪里。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 14:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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