davidmou 发表于 2023-7-18 21:09:19

这玩意太诡异了

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 not in range(10) and temp1 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 in range(10) and temp1 in range(10):
    print("从第%d行到第%d行的内容如下:" % (funchange(0, 0, 0), funchange(0, 0, 1)))
    list_result=list_空
    print('\n'.join(map(str, list_result)))
elif temp1 in range(10) and temp1 not in range(10):
    print("从第%d行到第末尾的内容如下:" % (funchange(0, 1, 0))
    list_result=list_空
    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:09:32

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

为了解决这个问题,你需要将冒号放在索引值之间,如下所示:

list_result = list_空[:funchange(1, 0, 0)]


这样,你就可以正确地使用切片操作获取list_空列表中从开头到funchange(1, 0, 0)行的内容。

希望这能帮到你!如果你有任何其他问题,请随时提问。

isdkz 发表于 2023-7-18 21:10:09

你的代码中有一些错误,我会逐个解释一下。

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

2. 在这个代码行 if temp1 not in range(10) and temp1 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_空 中,你试图通过一对索引来截取列表,但在Python中,你应该使用 : 而不是 , 来表示范围。这行应该修改为 list_result = list_空 。

希望这些信息可以帮助你解决问题。如果还有其他问题,欢迎继续提问。

sfqxx 发表于 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)))
这样应该可以解决你遇到的问题。

求最佳答案{:10_254:}

sfqxx 发表于 2023-7-18 23:45:23

我不理解为什么每次最佳都给isdkz
页: [1]
查看完整版本: 这玩意太诡异了