编写一个程序读入整数n,返回该数字中出现频率最高的数字。给定的数字可以是正数或负数,但返回的最频繁数字应始终为非负数。如果最频繁的数字有多个,则应返回最大的数字。用字典or集合解决此问题,下面是一些示例调用:mode_digit(12121) #1
时间: 2024-02-13 18:06:40 浏览: 24
可以使用字典来实现,示例代码如下:
```python
def mode_digit(n):
# 将n转化为字符串
n_str = str(n)
# 创建一个空字典
freq_dict = {}
# 遍历字符串中的每个字符
for char in n_str:
# 如果该字符是数字
if char.isdigit():
# 将其转化为整数
num = int(char)
# 将该数字的出现次数加1
freq_dict[num] = freq_dict.get(num, 0) + 1
# 找出出现次数最多的数字
max_freq = max(freq_dict.values())
mode = max(num for num, freq in freq_dict.items() if freq == max_freq)
# 返回最频繁的数字
return mode
```
在这个函数中,我们首先将输入的数字`n`转化为字符串`n_str`,然后遍历该字符串中的每个字符,将其中的数字转化为整数,并将其出现次数加1,存储在一个字典`freq_dict`中。
接着,我们使用`max()`函数来找出`freq_dict`中出现次数最多的数字,然后再使用列表推导式来找出其中最大的数字,并将其作为最频繁的数字返回。
例如,`mode_digit(12121)`的输出结果为`1`。