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

wecizke3  于 2022-11-26  发布在  Python
关注(0)|答案(1)|浏览(111)

关于第20行以下的代码有一些问题。
问题:
该函数返回位于文件中心的50个字符串的列表。
一个文件有n行,那么n/2是中心。返回一个长度为50的列表,其中第一行是n/2 - 25,最后一行是n/2 + 25。

  • 如果文件中有n〈50行,则只返回这些行。
  • 如果文件中没有行,则返回空列表对象。
  • 如果因为档案不存在而无法开启,您必须拦截FileNotFoundError对象,并掷回新的例外状况FileNotFoundError,例外状况的内容为文件名称。任何其他无法开启档案的例外状况都不会拦截。
  • 如果参数filename不是字符串类型,则会引发TypeError异常,异常的内容为字符串“parameter filename is not a string”。

示例:

  • 该文件有200行。将返回第75 - 124行
  • 文件有201行。返回第75 - 124行(n是奇数)
  • 该文件有202行。将返回第76 - 125行
  • 文件有700行。返回第325 - 374行
  • 该文件有10行。返回行1 - 10

请参阅附录中的open()、close()、readlines()和isinstance()以支持此问题。
限制条件:仅允许:while循环、if语句、函数len()、type()、isinstance()、列表方法append()、字符串方法split()、format()。关键字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
gcuhipw9

gcuhipw91#

错误消息指示您检查语法的有效性。在这种情况下,您缺少冒号。它应该是elif len(lines)>=50:

相关问题