一.任务描述
这大概是某个班的python小练习题,恰好同学问我,我就写一下练练手。
二.代码
from random import*
# 设置种子
seed(1000)
# 随机生成十行数据,每行有3-8个(随机)(-50, 50)的整数,并且存在data.txt中
def f_write():
fo = open("data.txt", "w")
for i in range(10):
ls = []
a = randint(3, 8)
for j in range(a):
# 注意:只能向文件中写入string,所以要强制转换一下类型
b = str(randint(-50, 50))
ls.append(b)
# 插入分隔符
ls.append(',')
# 写入一行
fo.writelines(ls)
# 换行
fo.write('\n')
fo.close()
# 寻找data.txt中数值最大值
def f_read():
fo = open("data.txt", "r+")
# 按照逗号','分隔
file_context = fo.read().split(',')
# 删除换行符"\n"
for i in file_context:
if i == "\n":
file_context.remove(i)
# (调试)输出未转化前的内容
# print(file_context)
# 将list中的所有string类型数据转化为int类型
file_context = list(map(int, file_context))
# (调试)看一下转换后输出情况
# print(file_context)
# 查找最大值
max = file_context[0]
for i in file_context:
if i > max:
max = i
fo.close()
# 输出最大值
print("The maximum of all numbers is:{0}".format(max))
# 寻找data.txt中各行数据加和的最大值
def f_readlines():
fo = open("data.txt", "r+")
# 用于存放各行和
sumList = []
for line in fo.readlines():
# 按照逗号切割并且去除行尾的换行符
line_contxt = line.split(",")
for i in line_contxt:
# 删除'\n'
if i == '\n':
line_contxt.remove(i)
# 将读取出来的string类型数据转化成int类型
line_contxt = list(map(int, line_contxt))
# (调试)输出各行值
# print(line_contxt)
sumList.append(sum(line_contxt))
# 寻找各行和的最大值
# (调试)读取各行的最大值
# print(sumList)
line_max = sumList[0]
for i in sumList:
if i > line_max:
line_max = i
print("The maximum of the sum of every line is:{0}".format(line_max))
f_write()
f_read()
f_readlines()
三.输出结果(seed=1000)
[Running] python -u "d:\Aven\vsCode\新建文件夹\pra.py"
The maximum of all numbers is:49
The maximum of the sum of every line is:99
[Done] exited with code=0 in 0.386 seconds
data.txt
35,47,-38,0,-5,-42,
-29,18,5,-34,-22,35,
-4,36,12,-25,
35,-4,-21,8,-27,-45,36,45,
-32,9,41,40,3,38,
-48,47,18,9,
48,-23,19,-28,39,40,-37,-18,
-14,-39,-50,-10,
31,-18,-13,
49,48,20,-35,-26,-13,-2,