鱼C论坛

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

[已解决]这玩意太诡异了

[复制链接]
发表于 2023-7-18 21:09:19 | 显示全部楼层 |阅读模式

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

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

x
import os
os.chdir("D:\\编程\\编程垃圾库")

def funchange(first, second, third):
    temp2 = list(temp1)
    suoyinzhi = temp2.index(':')
    if first == 1 and second == 0 and third == 0:
        listfen1 = temp2[(suoyinzhi + 1) : ]
        result =int(''.join(map(str, listfen1)))
        return result
    elif first == 0 and second == 0 :
        listfen_2 = temp2[(suoyinzhi + 1) : ]
        listfen_1 = temp2[ : suoyinzhi]
        result1 = int(''.join(map(str, listfen_1)))
        result2 = int(''.join(map(str, listfen_2)))
        if third == 0:
            return result1
        elif third == 1:
            return result2
    elif first == 0 and second == 1 and third == 0:
        listfen1 = temp2[ : suoyinzhi]
        result = int(''.join(map(str, listfen1)))
        return result
   
list_空 = []
name = input("请输入文件名:")
temp1 = input("请输入需要显示的行数,如 【:21】或【21:】 或 【13:21】 或 【:】:")
f = open(name)
for each_line in f:
    list_空.append(each_line)
if temp1[0] not in range(10) and temp1[len(temp1) - 1] in range(10):
    print("从开始到第%d行的内容如下:" % (funchange(1, 0, 0))
    list_result = list_空[: funchange(1, 0, 0)]
    print('\n'.join(map(str, list_result)))
elif temp1[0] in range(10) and temp1[len(temp1) - 1] in range(10):
    print("从第%d行到第%d行的内容如下:" % (funchange(0, 0, 0), funchange(0, 0, 1)))
    list_result=list_空[funchange(0, 0, 0) - 1, funchange(0, 0, 1)]
    print('\n'.join(map(str, list_result)))
elif temp1[0] in range(10) and temp1[len(temp1) - 1] not in range(10):
    print("从第%d行到第末尾的内容如下:" % (funchange(0, 1, 0))
    list_result=list_空[funchange(0, 1, 0) - 1 : ]
    print('\n'.join(map(str, list_result)))
else:
    print("全文的内容如下:")
    print('\n'.join(map(str, list_空)))

不知道为什么list_result = list_空[: funchange(1, 0, 0)]这一行会出现语法错误,求助

最佳答案
2023-7-18 21:10:09
你的代码中有一些错误,我会逐个解释一下。

1. 函数 funchange 被你在后面的代码中使用了,但在你定义这个函数的地方,它试图使用 temp1 这个变量,而这个变量并没有在函数定义的时候作为参数传入。你需要将这个变量作为函数的参数传入。

2. 在这个代码行 if temp1[0] not in range(10) and temp1[len(temp1) - 1] in range(10): 中,你试图将字符串和数字进行比较。这在Python中是不被允许的。你应该先将字符串转换为整数,然后再进行比较。

3. 在你尝试打印列表内容的语句中,如 print('\n'.join(map(str, list_result))) ,由于你的列表中的元素已经是字符串类型,所以不需要再调用 map(str, list_result) 进行转换,直接使用 '\n'.join(list_result) 就可以。

4. 在你的print语句中,你忘记了关闭括号,例如 print("从开始到第%d行的内容如下:" % (funchange(1, 0, 0)) 应该改为 print("从开始到第%d行的内容如下:" % funchange(1, 0, 0)) 。

5. 在这行 list_result=list_空[funchange(0, 0, 0) - 1, funchange(0, 0, 1)] 中,你试图通过一对索引来截取列表,但在Python中,你应该使用 : 而不是 , 来表示范围。这行应该修改为 list_result = list_空[funchange(0, 0, 0) - 1 : funchange(0, 0, 1)] 。

希望这些信息可以帮助你解决问题。如果还有其他问题,欢迎继续提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-18 21:09:32 | 显示全部楼层
在给定的代码中,list_result = list_空[: funchange(1, 0, 0)]这一行出现语法错误的原因是冒号的位置不正确。在切片操作中,冒号用于指定起始和结束位置,但你的代码似乎将冒号放在了索引值后面。

为了解决这个问题,你需要将冒号放在索引值之间,如下所示:
list_result = list_空[:funchange(1, 0, 0)]
这样,你就可以正确地使用切片操作获取list_空列表中从开头到funchange(1, 0, 0)行的内容。

希望这能帮到你!如果你有任何其他问题,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 21:10:09 | 显示全部楼层    本楼为最佳答案   
你的代码中有一些错误,我会逐个解释一下。

1. 函数 funchange 被你在后面的代码中使用了,但在你定义这个函数的地方,它试图使用 temp1 这个变量,而这个变量并没有在函数定义的时候作为参数传入。你需要将这个变量作为函数的参数传入。

2. 在这个代码行 if temp1[0] not in range(10) and temp1[len(temp1) - 1] in range(10): 中,你试图将字符串和数字进行比较。这在Python中是不被允许的。你应该先将字符串转换为整数,然后再进行比较。

3. 在你尝试打印列表内容的语句中,如 print('\n'.join(map(str, list_result))) ,由于你的列表中的元素已经是字符串类型,所以不需要再调用 map(str, list_result) 进行转换,直接使用 '\n'.join(list_result) 就可以。

4. 在你的print语句中,你忘记了关闭括号,例如 print("从开始到第%d行的内容如下:" % (funchange(1, 0, 0)) 应该改为 print("从开始到第%d行的内容如下:" % funchange(1, 0, 0)) 。

5. 在这行 list_result=list_空[funchange(0, 0, 0) - 1, funchange(0, 0, 1)] 中,你试图通过一对索引来截取列表,但在Python中,你应该使用 : 而不是 , 来表示范围。这行应该修改为 list_result = list_空[funchange(0, 0, 0) - 1 : funchange(0, 0, 1)] 。

希望这些信息可以帮助你解决问题。如果还有其他问题,欢迎继续提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 21:34:12 | 显示全部楼层
从你的代码和问题描述来看,我注意到在以下几行中,你打印了一个字符串,但是在调用`print`函数后的括号没有正确地关闭。
print("从开始到第%d行的内容如下:" % (funchange(1, 0, 0))
print("从第%d行到第末尾的内容如下:" % (funchange(0, 1, 0))

在上面的两行中,你打开了两个括号(一个是`print`函数的括号,一个是字符串格式化的`%`操作符的括号)但只关闭了一个。这可能是导致语法错误的原因。

你需要在`funchange(1, 0, 0)`和`funchange(0, 1, 0)`后面添加一个括号来关闭`%`操作符的括号。修正后的代码如下:
print("从开始到第%d行的内容如下:" % (funchange(1, 0, 0)))
print("从第%d行到第末尾的内容如下:" % (funchange(0, 1, 0)))
这样应该可以解决你遇到的问题。

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

使用道具 举报

发表于 2023-7-18 23:45:23 | 显示全部楼层
我不理解为什么每次最佳都给isdkz
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 11:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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