如何编写返回字符串列表的函数

时间:2019-05-09 02:55:40

标签: python-3.x

第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循环,如果语句,函数len(),type(),isinstance(),列表方法append(), 字符串方法split(),format()。关键字elif,否则,return,break,continue,def,self,None,try, 提高,除了,是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

0 个答案:

没有答案