import os # 第一步:创建目录 dir_name = "fibonacci" if not os.path.exists(dir_name): os.mkdir(dir_name) # 第二步:将斐波那契数列的前1000个数据写入文件fib_data.txt print("正在将斐波那契数列的前1000个数据写入文件...") fib_list = [0, 1] for i in range(2, 1000): fib_list.append(fib_list[i-1] + fib_list[i-2]) with open(os.path.join(dir_name, "fib_data.txt"), "w") as f: for i, num in enumerate(fib_list): f.write("第 {} 个数是:{}\n".format(i+1, num+1)) print("完成!") print("fib_data 已保存") # 第三步:截取fib_data.txt文件的第899-920行,并写入新文件fib_part_data.txt print("正在截取数据...") with open(os.path.join(dir_name, "fib_data.txt"), "r") as f1: lines = f1.readlines() with open(os.path.join(dir_name, "fib_part_data"), "w") as f2: for line in lines[898:919]: f2.write(line) print("完成!") print("fib_part_data 已保存") # 第四步:显示fib_part_data.txt文件内容 with open(os.path.join(dir_name, "fib_part_data.txt"), "r") as f: print(f.read())截取的切片怎么隔一行输出一行
时间: 2024-02-24 11:53:06 浏览: 23
要让截取的内容每行隔一行输出,可以在写入新文件 fib_part_data.txt 时,每写入一行数据后再写入一个空行即可。修改代码如下:
```
print("正在截取数据...")
with open(os.path.join(dir_name, "fib_data.txt"), "r") as f1:
lines = f1.readlines()
with open(os.path.join(dir_name, "fib_part_data.txt"), "w") as f2:
for i, line in enumerate(lines[898:919]):
f2.write(line)
if i % 2 == 0: # 每隔一行写入一个空行
f2.write("\n")
print("完成!")
print("fib_part_data 已保存")
# 第四步:显示fib_part_data.txt文件内容
with open(os.path.join(dir_name, "fib_part_data.txt"), "r") as f:
print(f.read())
```
这样就可以实现每行隔一行输出了。
相关问题
if __name__ == '__main__':含义
在Python中,每个模块都有一个__name__属性,该属性的值为模块的名字。当一个模块被直接运行时,其__name__属性的值为'__main__',而当被导入时,__name__属性的值为模块名。
因此,当我们想要在一个模块中定义一些函数或语句,在该模块被直接运行时执行,而在该模块被导入时不执行时,可以使用if __name__ == '__main__':语句来实现。这段代码会检查当前模块的__name__属性是否为'__main__',如果是,则执行该语句块中的代码,否则不执行。
在本段代码中,if __name__ == '__main__':语句的作用是,当该模块被直接运行时(而不是被导入时),执行print(fib(35))语句,计算并输出斐波那契数列的第35项。
# -*- coding: UTF-8 -*- def fibonacci_inner(n, cache): if n == 1 or n == 2: return 1 r = 0 # TODO(You): 实现缓存 def fibonacci(n): return fibonacci_inner(n, {}) if __name__ == '__main__': print(fibonacci(6))
下面是实现缓存的代码:
# -*- coding: UTF-8 -*-
def fibonacci_inner(n, cache):
if n == 1 or n == 2:
return 1
if n in cache:
return cache[n] # 如果已经计算过,直接返回缓存结果
r = fibonacci_inner(n-1, cache) + fibonacci_inner(n-2, cache)
cache[n] = r # 将结果加入缓存
return r
def fibonacci(n):
return fibonacci_inner(n, {})
if __name__ == '__main__':
print(fibonacci(6))
在这个代码中,我们使用了一个字典作为缓存。在计算斐波那契数列的某个数时,先检查缓存中是否已经有计算结果,如果有,就直接返回缓存结果;否则,进行计算,并将结果加入缓存。这样就可以避免重复计算,提高了程序的效率。