数字统计
数字统计一
随机产生取值范围为[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)))
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did169432