题目要求输入两个数字,随机产生2000000个数字间的偶数,并记录每个偶数出现的次数和频率。
代码如下:
import random
def shu(a,b,d1,d2):
result={}
list=[] #初始化各个变量
numbers=[]
if(int(a)<int(b)):
d1=a
while(int(d1)<int(b)): #d1来代替a,为了不改变a的值,从偶数d1开始,每个数+2,到小于b结束,所有偶数放进list【】列表
list.append(int(d1))
d1=int(d1)+2
for x in range(2000000): #randrange(开始,结束,增加位数),随机产生[a,b)范围的偶数。这就是我开始限制a,b的原因
numbers.append(random.randrange(int(a),int(b),2)) #随机2000000的数据放在numbers[]列表中
for num in list:
count=numbers.count(num) #list【】列表中每个偶数在numbers【】中计数
result[num]=count #result{}字典保存每个偶数的个数
print("产生2000000个%d~%d之间的随机偶数...统计如下:"%(int(d1),int(d2)))
print("数值 次数 百分比")
for key in result.keys(): #字典中保存格式为result{’偶数‘:’个数‘,。。。},其中偶数就是key值,result[key]得到个数值
p=round((result[key]/2000000),2)
print(key," ",result[key]," ",'{:.2%}'.format(p)) #格式化输出百分比
def main():
s=[]
s=input("请输入两个数,以空格分隔:")
s=s.split(' ') #读取输入的两个字符,放在s[]列表中
d1=a=s[0]
d2=b=s[1] #输入的数赋值给a,b
if(int(a)%2==0) and (int(b)%2==0): #d1,d2记录才开始的a,b,用于第16行代码的输出问题
b=int(b)+1
shu(a,b,d1,d2)
elif(int(a)%2!=0) and (int(b)%2!=0):
a=int(a)+1
shu(a,b,d1,d2)
elif(int(a)%2!=0) and (int(b)%2==0):
b=int(b)+1
a=int(a)+1
shu(a,b,d1,d2)
elif(int(a)%2==0) and (int(b)%2!=0): #判断四种情况,将原来的a,b变换为a为偶数,b为奇,用于后边格式要求
shu(a,b,d1,d2) #四个参数传给shu()函数,进行运算统计次数
if __name__ == '__main__':
main() #固定格式,if为main()函数,运行main()