Python之字典巩固练习(随机生成银行卡号、重复数字统计、模拟轮盘抽奖游戏等)

一、检测并输出重复单词

需求:

重复的单词: 此处认为单词之间以空格为分隔符, 并且不包含,和.>;
     1. 用户输入一句英文句子;
     2. 打印出每个单词及其重复的次数;
 输入:"hello java hello python"
 输出: hello 2
       java 1
   	   python 1

代码实现:

User_w = input('输入:')

#对单词进行分割处理
li_u = User_w.split()

#定义一个空字典来存储单词和出现的次数
di_u = {}

"""
循环遍历列表:
    如果元素不在字典的key中,将元素作为key,1作为value值
    如果元素在字典的key中,更新元素的value值,在原有的value值+1
"""
for item in li_u:
    if item in di_u:
        di_u[item] += 1
    else:
        di_u[item] = 1

for i,v in di_u.items():
    print('%s\t%s'%(i,v))

执行效果:
Python之字典巩固练习(随机生成银行卡号、重复数字统计、模拟轮盘抽奖游戏等)_第1张图片

二、数字重复统计:

需求:

数字重复统计:
    1) 随机生成1000个整数
    2) 数字范围[20,100]
    3) 升序输出所有不同的数字及其每个数字的重复次数

代码实现:

import random

#定义列表用于接收随机数以及排序
#定义字典用于记录重复次数及随机数
li = []
di = {}

#生成1000个随机数并存放在列表中
for i in range(1000):
    li.append(random.randint(20,100))

#排序
li.sort()

#遍历列表,统计重复次数
for item in li:
    if item in di:
        di[item] += 1
    else:
        di[item] = 1
print(di)

执行效果:
在这里插入图片描述

三、生成1000个随机卡号,并且设定初始密码均为redhat

需求:

1. 随机生成100个卡号;
   卡号以6102009开头, 后面3位依次是 (001, 002, 003, 100),
2. 生成关于银行卡号的字典, 默认每个卡号的初始密码为"redhat";

3. 输出卡号和密码信息, 格式如下:
卡号                  密码
6102009001              000000

代码实现:

#定义列表用于存储卡号
s = []

#for循环生成连续100个卡号,存储在列表中
for i in range(100):
    s1 = '6101009%.3d' %(i+1)
    s.append(s1)

#使用fromkeys函数创建并返回一个新字典,s为key,value值设为redhat
s2={}.fromkeys(s,'redhat')
print('银行卡号:\t\t\t密码:')

#使用for循环输出卡号及密码
for key, value, in s2.items():
    print('%s\t\t\t%s' % (key, value))

执行效果:
Python之字典巩固练习(随机生成银行卡号、重复数字统计、模拟轮盘抽奖游戏等)_第2张图片

四、模拟轮盘抽奖游戏

需求:

轮盘分为三部分: 一等奖, 二等奖和三等奖;
轮盘转的时候是随机的,
      如果范围在[0,0.08)之间,代表一等奖,
      如果范围在[0.08,0.3)之间,代表2等奖,
      如果范围在[0.3, 1.0)之间,代表3等奖,

模拟本次活动1000人参加, 模拟游戏时需要准备各等级奖品的个数.

代码实现:

import random

li = []
rewardDict = {
    '一等奖': 0,
    '二等奖': 0,
    '三等奖': 0
}

for num in range(1000):
    a = random.random()
    li.append(a)

for item in li:
    if 0<= item <0.08:
        rewardDict['一等奖'] += 1
    elif 0.08<= item <0.3:
        rewardDict['二等奖'] += 1
    elif 0.3<= item <1:
        rewardDict['三等奖'] += 1

for i,v in rewardDict.items():
    print(i,v)

执行效果:
Python之字典巩固练习(随机生成银行卡号、重复数字统计、模拟轮盘抽奖游戏等)_第3张图片

你可能感兴趣的:(Python)