好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

数字统计

数字统计

数字统计一

随机产生取值范围为[1, 20]的10个数字,统计各个数字出现的次数。

方法一:

利用List的索引实现数字统计。10个数字,范围为1至20,可以以一个列表来记录数字出现的次数

 import random

random_nums = [random.randint(1, 20) for _ in range(10)]
print(random_nums)
record_nums = [0] * 21  # 索引从0开始,为了与[1, 20]一一对应索引,所以生成21个元素的列表,索引为0不使用
for i in random_nums:
    record_nums[i] += 1
print(record_nums)

for i, d in enumerate(record_nums):
    if d > 1:
        print('数字{0},重复出现{1}次'.format(i, d))
    elif d == 1:
        print('数字{0}, 只出现了一次'.format(i)) 

方法二:

list自带count方法,只需要调用一次该方法即可完成数字出现次数统计,只是当有重复数字出现时会多次count,所以需要额外记录一下哪些数字被count过。

 import random

random_nums = [random.randint(1, 20) for _ in range(10)]
print(random_nums)

counted = [] # 记录已被count过的数字
for i in random_nums:
    if i not in counted:
        print('数字{},出现{}次'.format(i, random_nums.count(i)))
        counted.append(i) 

数字统计二

随机产生取值范围为[1, 20]的10个数字,统计哪些数字只出现了一次,哪些数字有重复出现。

只关心有无重复出现,不关心重复出现的次数,所以不用统计次数。

 import random

random_nums = [random.randint(1, 20) for _ in range(10)]
print(random_nums)

only_nums = []  # 存放只出现一次的数字
repeat_nums = []  # 存放有重复出现的数字
nums_state = [0] * len(random_nums)  # 记录随机数的状态,随机数有重复则对应索引位元素置为1

for i in range(len(random_nums)):
    if nums_state[i] == 1:
        continue
    flag = False
    for j in range(i + 1, len(random_nums)):
        if nums_state[j] != 1:
            if random_nums[j] == random_nums[i]:  # 有重复时
                nums_state[j] = 1 # 状态置为1
                flag = True
    if flag:
        nums_state[i] = 1  # 状态置为1
        repeat_nums.append(random_nums[i])
    else:
        only_nums.append(random_nums[i])

print('不重复数字 {}'.format(only_nums))
print('重复数字 {}'.format(repeat_nums))
# print(list(zip(nums_state, random_nums)))
 

查看更多关于数字统计的详细内容...

  阅读:31次

上一篇: 杨辉三角

下一篇:求斐波那契数列和素数