Python 3.x 如何编写返回字符串列表的函数

Python 3.x 如何编写返回字符串列表的函数,python-3.x,Python 3.x,对第20行下面的代码有一些问题 问题: 函数返回一个包含50个字符串的列表,这些字符串位于 文件的中心 一个文件有n行,那么n/2是中心。返回长度为50的列表,其中第一行为n/2-25,最后一行为n/2+25 如果文件有n=502elif长度%2=0:?@Austin第二个在第一个为真时执行。你在第一个中遗漏了冒号。这也是错误的,我认为:len(lines)=length?@Netwave还有什么?程序运行,但只打印给定文件的第一行。您看到这两个elifs:1之间的区别是什么elif len(

对第20行下面的代码有一些问题

问题:
函数返回一个包含50个字符串的列表,这些字符串位于 文件的中心

一个文件有n行,那么n/2是中心。返回长度为50的列表,其中第一行为n/2-25,最后一行为n/2+25

  • 如果文件有n<50行,则仅返回这些行
  • 如果文件中没有行,则返回空列表对象
  • 如果文件不存在而无法打开,则必须捕获FileNotFoundError对象并抛出一个新的异常FileNotFoundError,该异常的内容为文件名。无法打开文件的任何其他异常都不会被捕获
  • 如果参数文件名不是字符串类型,则抛出TypeError异常,异常内容为字符串“参数文件名不是字符串”
示例:

  • 该文件有200行。返回第75-124行
  • 该文件有201行。返回第75-124行(n为奇数)
  • 该文件有202行。返回第76-125行
  • 该文件有700行。返回第325-374行
  • 该文件有10行。返回第1-10行
请参阅附录中的open()、close()、readlines()和isinstance()来支持此问题

限制: 仅允许:while循环、if语句、函数len()、类型()、isinstance()、列表方法append(), 字符串方法拆分(),格式()。关键词elif、else、return、break、continue、def、self、None、try、, raise、except、is、import sys和任何算术或布尔比较运算符

def get_first_and_last_24(filename):
    if type(filename)!=str:
        raise TypeError('parameter filename is not a string')
    try:
        f=open(filename)
    except FileNotFoundError:
        raise FileNotFoundError(filename)

lines=f.readlines()
len(lines)=length
f.close()
if len(lines)==0:
    return []
n=[]
index=0
while index<len(lines):
    if len(lines)<50:
        n.append(lines[index])
        index+=1            
    elif len(lines)>=50
        if length%2==0:
            if (index/2-25)<index and index < (index/2+25):
                n.append(lines[index])
            index+=1

        elif length%2!=0:
            if ((index-1)/2-25)<index and index<((index-1)/2+25):
                n.append(lines[index])
            index+=1
    return n    
print(get_first_and_last_24('tfre.tx')) 


actual results:
File "3beater.py", line 20
elif len(lines)>=50
                  ^
SyntaxError: invalid syntax
def get_first_和_last_24(文件名):
如果键入(文件名)=str:
raise TypeError('参数文件名不是字符串')
尝试:
f=打开(文件名)
除FileNotFoundError外:
raise FileNotFoundError(文件名)
行=f.读行()
len(线)=长度
f、 关闭()
如果len(行)==0:
返回[]
n=[]
索引=0

而index x这两个
elif
s:1之间的区别是什么<代码>elif len(行)>=50
2<代码>elif长度%2=0:?@Austin第二个在第一个为真时执行。你在第一个中遗漏了冒号。这也是错误的,我认为:
len(lines)=length
?@Netwave还有什么?程序运行,但只打印给定文件的第一行。您看到这两个
elif
s:1之间的区别是什么<代码>elif len(行)>=502<代码>elif长度%2=0:?@Austin第二个在第一个为真时执行。你在第一个中遗漏了冒号。这也是错误的,我认为:
len(lines)=length
?@Netwave还有什么?程序运行,但只打印给定文件的第一行