标签:only imp 范围 flag rand else 完成 随机数 lan
数字统计随机产生取值范围为[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)))
标签:only imp 范围 flag rand else 完成 随机数 lan
原文地址:https://blog.51cto.com/zhaochj/2526361