用physon完成这个问题

请用随机函数产生 20 行,每行10个数字,数字范围在 1-100 之间的随机整数存入文件 random.txt 中,编程寻找这些整数的众数并输出,众数即为一组数中出现最多的数。

#请用随机函数产生 20 行,每行10个数字,数字范围在 1-100 之间的随机整数存入文件 random.txt 中,
#编程寻找这些整数的众数并输出,众数即为一组数中出现最多的数。

from collections import Counter
import random
lst = []
for i in range(20):
    for j in range(10):
        temp = random.randint(1,100)
        #print(temp, end = ' ')
        lst.append(temp)
        with open('random.txt', 'a') as f1:
            f1.write(str(temp) + ' ')
            if j==9:
                f1.write('\n')

counts = Counter(lst)
print(max(counts.keys(), key=counts.get))

代码如下

# 请用随机函数产生 20 行,每行10个数字,
# 数字范围在 1-100 之间的随机整数存入文件 random.txt 中,
# 编程寻找这些整数的众数并输出,众数即为一组数中出现最多的数。
import random

output_file = 'random.txt'

num = 20
many_num = None
_list = []

with open(output_file, "w") as fw:
    for i in range(num):
        # random_nums_list = random.sample(range(1, 101), 10)  # [92, 31, 37, 60, 58, 42, 25, 44, 48, 85]
        random_nums_list = [random.randint(1, 100) for x in range(10)]
        random_nums_list = [str(x) for x in random_nums_list]
        _list.extend(random_nums_list)
        line = ",".join(random_nums_list)  # 92, 31, 37, 60, 58, 42, 25, 44, 48, 85
        print(f'第{i + 1}组数为:', line)
        fw.write(line)
        fw.write("\n")

max_label = max(_list, key=_list.count)
print("这些数中出现最多的数为:", max_label)
print("次数为:", _list.count(max_label))

输出为:

1组数为: 34,40,11,51,91,26,49,52,28,242组数为: 33,9,17,47,6,14,26,79,39,373组数为: 39,42,29,62,67,19,65,43,64,254组数为: 14,97,69,41,50,95,62,8,7,805组数为: 19,30,84,81,11,28,22,67,4,146组数为: 94,53,31,95,65,78,14,61,8,177组数为: 93,23,3,72,27,2,40,92,34,338组数为: 76,4,91,82,41,15,28,22,92,799组数为: 32,92,19,5,80,53,74,75,99,110组数为: 55,54,63,69,12,43,14,92,84,8211组数为: 22,63,61,71,12,41,11,31,15,8012组数为: 92,61,41,18,69,16,27,91,83,1113组数为: 21,63,13,95,2,84,53,16,47,3814组数为: 50,9,91,40,55,95,30,42,29,7815组数为: 54,63,26,7,36,16,82,60,62,9216组数为: 94,57,2,92,52,33,8,35,14,2517组数为: 36,93,3,81,80,97,39,72,74,2418组数为: 17,69,18,62,10,48,93,100,91,519组数为: 81,10,84,34,16,93,31,64,23,7820组数为: 99,1,93,18,22,53,13,74,61,60
这些数中出现最多的数为: 92
次数为: 7

保存文件 random.txt为:

34,40,11,51,91,26,49,52,28,24
33,9,17,47,6,14,26,79,39,37
39,42,29,62,67,19,65,43,64,25
14,97,69,41,50,95,62,8,7,80
19,30,84,81,11,28,22,67,4,14
94,53,31,95,65,78,14,61,8,17
93,23,3,72,27,2,40,92,34,33
76,4,91,82,41,15,28,22,92,79
32,92,19,5,80,53,74,75,99,1
55,54,63,69,12,43,14,92,84,82
22,63,61,71,12,41,11,31,15,80
92,61,41,18,69,16,27,91,83,11
21,63,13,95,2,84,53,16,47,38
50,9,91,40,55,95,30,42,29,78
54,63,26,7,36,16,82,60,62,92
94,57,2,92,52,33,8,35,14,25
36,93,3,81,80,97,39,72,74,24
17,69,18,62,10,48,93,100,91,5
81,10,84,34,16,93,31,64,23,78
99,1,93,18,22,53,13,74,61,60

如有问题及时沟通

这个题有很多处理方法可以获取到结果,不过是一些细节的差异。

比如写入文件中的格式要求?之类的,此外是否允许有多个众数?(实际可能最多的数字并不是只有1个,可能存在并列情况)。

这之外就是一些开发细节处理上的问题啦,比如下面这个,我可以一次性生成200个数据,但分别写入文件。

import random
 
output_file = 'random.txt'
 
num = 20
many_num = None
_list =[random.randint(1,100) for i in range(200)] # 这里一次性生成符合要求的200个数据写入到列表中,然后再是写入文件的处理
#print(_list)

with open(output_file, "w") as fw:
    for i in range(num):
        random_nums_list =_list[i*10:i*10+10] # 用大列表切片的方式获得1行数据
        line = ",".join([str(x) for x in random_nums_list])  # 用','来连接1行数据,也可以换成' ' 就是用空格来连
        print(f'第{i+1}组数为:', line)
        fw.write(line)
        fw.write("\n")
 
max_label = max(_list, key=_list.count)
print("这些数中出现最多的数为:", max_label)
print("次数为:", _list.count(max_label))