list_num = [] list_num_count = 0 dict_num ={} #从文件读入,文件第一行为集合中元素的个数,以后每一行为一个元素 list_num_count = int(open('input.txt','r').readline()) for line_num, line in enumerate(open("input.txt",'r')): if line_num > 0: list_num += line.split() #将读到的元素加入的字典中 for item in list_num: if dict_num.has_key(item): dict_num[item] += 1 else: dict_num.setdefault(item,1) pass #找到出现次数最多的那个数,找到重数 dict_sort_by_top = {} top_value = 0 for valus in dict_num.itervalues(): if valus> top_value: top_value = valus pass #根据重数找到众数...这是因为考虑到可能有多个元素有相同多的重数 the_pop_num = 0 the_pop_num_count = 0 for keys,values in dict_num.iteritems(): if values == top_value: print 'the pop num is %s,and the appear num is %s' % (keys,values) the_pop_num = keys the_pop_num_count = values #输出到文件,第一行为从数,第二行为重数 write_line = '%s\n%s' %(the_pop_num, the_pop_num_count) open("output.txt",'w').write(write_line)
时间: 2023-06-17 14:02:03 浏览: 87
这段代码的作用是读取一个文件中的数字集合,然后统计每个数字出现的次数,最后找到出现次数最多的数字,输出到另一个文件中。
具体解释如下:
1. 定义了一个空列表 list_num 用于存储文件中读取到的数字集合,以及一个字典 dict_num 用于存储每个数字出现的次数。
2. 从文件中读取第一行,该行为数字集合的元素个数,将其赋值给 list_num_count。
3. 通过 enumerate() 函数遍历文件中的每一行,当行号大于 0 时,将该行使用 split() 函数分隔开,将得到的数字添加到 list_num 列表中。
4. 遍历 list_num 列表,将其中的数字统计到 dict_num 字典中,如果字典中已有该数字,则将其出现次数加 1,否则将该数字添加到字典中,并将其出现次数设为 1。
5. 遍历 dict_num 字典,找到出现次数最多的数字(众数),将其赋值给 the_pop_num 变量,并将其出现次数赋值给 the_pop_num_count 变量。由于可能有多个数字出现次数相同,因此这里还需要考虑到可能有多个众数的情况。
6. 将找到的众数和其出现次数写入到另一个文件 output.txt 中,第一行为众数,第二行为其出现次数。
相关问题
【问题描述】 输入一组无序的整数,编程输出其中出现次数最多的整数及其出现次数。 【输入形式】 先从标准输入读入整数的个数(大于等于1,小于等于100),然后在下一行输入这些整数,各整数之间以一个空格分隔。 【输出形式】 在标准输出上输出出现次数最多的整数及其出现次数,两者以一个空格分隔;若出现次数最多的整数有多个,则按照整数升序分行输出。 【样例输入】 10 0 -50 0 632 5813 -50 9 -50 0 632 【样例输出】 -50 3 0 3 【样例说明】 输入了10个整数,其中出现次数最多的是-50和0,都是出现3次。
以下是Python的代码实现:
```python
n = int(input()) # 读入整数个数
nums = list(map(int, input().split())) # 读入整数列表
# 使用字典记录每个整数的出现次数
count_dict = {}
for num in nums:
if num in count_dict:
count_dict[num] += 1
else:
count_dict[num] = 1
# 找到出现次数最多的整数及其出现次数
max_count = 0
max_num = []
for num, count in count_dict.items():
if count > max_count:
max_count = count
max_num = [num]
elif count == max_count:
max_num.append(num)
# 按照整数升序输出出现次数最多的整数及其出现次数
max_num.sort()
for num in max_num:
print(num, max_count)
```
以上代码首先读入整数个数和整数列表,然后使用一个字典记录每个整数的出现次数。接着找到出现次数最多的整数及其出现次数,最后按照整数升序输出结果。
编写程序,实现从键盘读入一行数字(数字个数不定,各数字以空格隔开),统计并输出各数字出现的次数。输出的格式如:数字2出现的次数为3 数字40出现的次数为1
下面是Python的实现代码:
```python
num_list = input("请输入数字,以空格隔开:").split() # 读入一行数字并分割
num_dict = {} # 用字典统计各数字出现次数
for num in num_list:
if num in num_dict:
num_dict[num] += 1
else:
num_dict[num] = 1
# 输出结果
for num, count in num_dict.items():
print("数字{}出现的次数为{}".format(num, count))
```
输入样例:
```
请输入数字,以空格隔开:1 2 3 2 1 4 5 3 2
```
输出样例:
```
数字1出现的次数为2
数字2出现的次数为3
数字3出现的次数为2
数字4出现的次数为1
数字5出现的次数为1
```
阅读全文