关于第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
1条答案
按热度按时间gcuhipw91#
错误消息指示您检查语法的有效性。在这种情况下,您缺少冒号。它应该是
elif len(lines)>=50: