鱼C论坛

 找回密码
 立即注册
查看: 1588|回复: 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
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-8-7 17:51:50 | 显示全部楼层
这样试试:

  1. def file_display(file_name, line_num):
  2.     line_num = line_num.strip()
  3.     (begin, end) = line_num.split(":")

  4.     if begin == "":
  5.         begin = "1"
  6.     if end == "":
  7.         end = "-1"

  8.     if begin == "1" and end == "-1":
  9.         promt = "全文"
  10.     elif begin == "1":
  11.         prompt = "从开始到第%s行" % end
  12.     elif end == "-1":
  13.         prompt = "从第%s行到结束" % begin
  14.     else:
  15.         prompt = "从第%s行到第%s行" % (begin, end)

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

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

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

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

  29.     file.close()


  30. # file_name = "F:/record.txt"  
  31. # line_num = ":"
  32. file_name = input(r'请输入要打开的文件(C:\\test.txt):')
  33. line_num = input('请输入需要显示的行数【格式如 13:21 或 :21 或 21: 或 : 】:')
  34. file_display(file_name, line_num)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  5.     if begin == " ":
  6.         begin = "1"
  7.     if end == " ":
  8.         end = "-1"
  9.         
  10.     if begin == "1" and end == "-1":
  11.         promt = "全文"
  12.     elif begin == "1":
  13.         prompt = "从开始到第%s行"%end
  14.     elif end == "-1":
  15.         prompt = "从第%s行到结束"%begin
  16.     else:
  17.         prompt = "从第%s行到第%s行"%(begin,end)
  18.         
  19.             
  20.     print("\n文件%s%s的内容如下:\n"%(file_name,prompt))   
  21.    
  22.     file = open("F:/record.txt")
  23.     begin = int(begin) - 1
  24.     #begin = int(begin)
  25.     end = int(end)      #把字符转换成数字类型
  26.     lines = end - begin
  27.    
  28.     for i in range(begin):
  29.         file.readline()    #此时指针指向了第begin行
  30.         
  31.     if lines < 0:
  32.         print(file.read()) # read是读取剩余所有字符
  33.     else:
  34.         for j in range(lines):
  35.             print(file.readline(),end = " ")  # readline是只读取一行
  36.             
  37.     file.close()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

有东西啊,begin,end不是赋值了吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

小甲鱼最新课程 -> https://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
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

赋值了,可它的内容是个空字符串
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

明白了,谢谢!虽然小问题,但困扰我一天。找了个对比软件才发现我错在哪里。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-25 05:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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