鱼C论坛

 找回密码
 立即注册
查看: 845|回复: 9

[已解决]029文件,再次提问课后作业3

[复制链接]
发表于 2019-1-16 15:31:31 | 显示全部楼层 |阅读模式

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

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

x
def read(filename,num):

    if num.strip() == ':':
        begin = '1'
        end = '-1'
#为什么begin和end不用提前定义?
    (begin,end) = num.split(':')
    if begin == '':
        begin = '1'
    if end == '':
        end = '-1'

    if begin == '1' and end == '-1':
        prompt = '的全文'

    elif begin == '1':
        prompt = '从开始到%s行' % end

    elif end == '-1':
        prompt = '从%s行到结束' % begin
            
    else:
        prompt = '从%s行到%行' % (begin,end)
    print('文件%s%s内容如下:'% (filename,prompt))
   
    begin = int(begin) - 1
    end = int(end)
    lines = end - begin
    f = open(filename)      
    for i in range(begin):
        f.readline()
    if lines < 0:            #如果小于0,为什么考虑小于0的情况,代码执行后,输入3:1,代码报错,没有体现小于0的效果啊
        print(f.read())
    else:
        for j in range(lines):
            print(f.readline(),end='')
    f.close()

   

filename = input(r'请输入要打开的文件(c:\\test.txt):')
num = input('请输入需要显示的行数【格式如13:21 或 :21 或 21:】:')
read(filename,num)


共2个问题:
#为什么begin和end不用提前定义?
#如果lines小于0,为什么考虑小于0的情况,代码执行后,输入3:1,代码报错,没有体现小于0的效果啊
最佳答案
2019-1-16 15:37:59
#为什么begin和end不用提前定义?
python中的变量都能直接拿来赋值,赋值过程就顺便定义了

#如果lines小于0,为什么考虑小于0的情况,代码执行后,输入3:1,代码报错,没有体现小于0的效果啊
这里主要针对负数情况,你的报错提示是什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-1-16 15:37:59 | 显示全部楼层    本楼为最佳答案   
#为什么begin和end不用提前定义?
python中的变量都能直接拿来赋值,赋值过程就顺便定义了

#如果lines小于0,为什么考虑小于0的情况,代码执行后,输入3:1,代码报错,没有体现小于0的效果啊
这里主要针对负数情况,你的报错提示是什么

评分

参与人数 1荣誉 +3 鱼币 +3 贡献 +3 收起 理由
yanner + 3 + 3 + 3

查看全部评分

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

使用道具 举报

发表于 2019-1-16 15:38:22 | 显示全部楼层
1你提前定义了,后边也是根据情况赋值修改
2代码报什么错?

评分

参与人数 1荣誉 +3 鱼币 +3 贡献 +3 收起 理由
yanner + 3 + 3 + 3

查看全部评分

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

使用道具 举报

 楼主| 发表于 2019-1-16 15:42:45 | 显示全部楼层
请输入要打开的文件(c:\\test.txt):yanner2.txt
请输入需要显示的行数【格式如13:21 或 :21 或 21:】:3:1
Traceback (most recent call last):
  File "C:\test\029随意输入需要显示的行数.py", line 43, in <module>
    read(filename,num)
  File "C:\test\029随意输入需要显示的行数.py", line 23, in read
    prompt = '从%s行到%行' % (begin,end)
ValueError: unsupported format character '?' (0x884c) at index 6
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-16 15:49:58 | 显示全部楼层
BngThea 发表于 2019-1-16 15:37
#为什么begin和end不用提前定义?
python中的变量都能直接拿来赋值,赋值过程就顺便定义了

输入1:3正常打印,输入3:1则报错

请输入要打开的文件(c:\\test.txt):yanner2.txt
请输入需要显示的行数【格式如13:21 或 :21 或 21:】:3:1
Traceback (most recent call last):
  File "C:\test\029随意输入需要显示的行数.py", line 43, in <module>
    read(filename,num)
  File "C:\test\029随意输入需要显示的行数.py", line 23, in read
    prompt = '从%s行到%行' % (begin,end)
ValueError: unsupported format character '?' (0x884c) at index 6
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-16 15:50:16 | 显示全部楼层
yanner 发表于 2019-1-16 15:42
请输入要打开的文件(c:\\test.txt):yanner2.txt
请输入需要显示的行数【格式如13:21 或 :21 或 21:】:3: ...

你的%后边少了s
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-16 15:52:11 | 显示全部楼层
塔利班 发表于 2019-1-16 15:38
1你提前定义了,后边也是根据情况赋值修改
2代码报什么错?

就是奇怪,平时会提前定义赋值比如,begin=0,end=0,这次直接赋值字符串1和-1,有点茫然~

输入1:3正常打印,输入3:1则报错

请输入要打开的文件(c:\\test.txt):yanner2.txt
请输入需要显示的行数【格式如13:21 或 :21 或 21:】:3:1
Traceback (most recent call last):
  File "C:\test\029随意输入需要显示的行数.py", line 43, in <module>
    read(filename,num)
  File "C:\test\029随意输入需要显示的行数.py", line 23, in read
    prompt = '从%s行到%行' % (begin,end)
ValueError: unsupported format character '?' (0x884c) at index 6
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-16 15:56:45 | 显示全部楼层
yanner 发表于 2019-1-16 15:52
就是奇怪,平时会提前定义赋值比如,begin=0,end=0,这次直接赋值字符串1和-1,有点茫然~

输入1:3正常 ...

prompt = '从%s行到%s行' % (begin,end)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-16 15:57:15 | 显示全部楼层
yanner 发表于 2019-1-16 15:52
就是奇怪,平时会提前定义赋值比如,begin=0,end=0,这次直接赋值字符串1和-1,有点茫然~

输入1:3正常 ...

n你是格式化字符串那里不清楚,你第一个是进入不同的if,出错的地方要格式化begin和end,
1:3是'从开始到%s行' % end这里格式化没出错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-16 16:08:04 | 显示全部楼层
666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-18 06:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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