python之字典练习题

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

第一种:

import random

all_nums = []                  ##定义一个空列表
for item in range(1000):       ##生成1000个随机数放到列表中
    all_nums.append(random.randint(20,100))    ##随机数范围在20-100之间

#对生成的1000个数进行排序,然后加到字典中
sorted_nums = sorted(all_nums)    ##排序
num_dict = {}                  ##定义一个空字典
for num in sorted_nums:    ##遍历排序好的列表
    if num in num_dict:
        num_dict[num] += 1     ##key存在,则更新value值
    else:
        num_dict[num] = 1       ###在空字典num_dict中添加新key—value的键值对
print('数字\t\t出现次数')
for i in num_dict:
    print('%d\t\t%d' %(i,num_dict[i]))

第二种:

import random

num_dirc = {}

#统计数字及对应的次数
for i in range (1000):
    num_key = random.randint(20,100)
    if num_key in num_dirc:
        num_dirc[num_key] += 1
    else:
        num_dirc[num_key] = 1
##排序,便历输出
for i in sorted(num_dirc.keys()):
    print('%d,%d' %(i,num_dirc[i]))
  • 结果:
数字		出现次数
20		8
21		5
22		10
23		12
24		12
25		11
26		12
...##后面省略部分输出
  1. 统计句子中重复的单词
    题目要求:
  • 重复的单词: 此处认为单词之间以空格为分隔符, 并且不包含,和.;
  1. 用户输入一句英文句子;
  2. 打印出每个单词及其重复的次数;
  • 示例:
    输入: “hello java hello python”
    输出:
    hello 2
    java 1
    python 1
language = input('请输入一句英文:')
languages = language.split(' ')		#先按照空格分离字符串,成为列表
words = {}				#设置一个新的字典
for i in languages:			#遍历列表
    if i == ',' or i == '.':		#当循环到符号的时候跳出此次循环
        continue
    count = languages.count(i)		#统计次数
    words[i] = count			
    #key=单词,value=重复的次数,添加到字典中,字典中如果key值存在则更新value值,所以生成的字典中key不会重复。
for a in words:
    print('%s\t\t%s' %(a,words[a]))		#遍历打印字典
  • 其中:
    count = languages.count(i) #统计次数
    words[i] = count

  • 可等效为:
    if i in words:
    words[i] += 1
    else:
    words[i] = 1

  • 结果:

请输入一句英文:hello java hello python
hello		2
java		1
python		1
  1. 随机生成银行卡号

题目要求:

随机生成100个卡号;
卡号以6102009开头, 后面3位依次是 (001, 002, 003, 100),

生成关于银行卡号的字典, 默认每个卡号的初始密码为"redhat";

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

提示:

  • fromkeys第一个参数可以是 list/tuple/str/set,将第一个参数的元素作为字典的key值,并且所有key的value值一致,为’00000000’

代码:

card_ids = []			#创建一个空列表
for i in range(100):		#要求生成100个卡号所以循环100次
    s = '6102009%.3d' %(i+1)	#指定前几位为6102009 后三位依次加1
    card_ids.append(s)	#添加元素
card_ids_dict = {}.fromkeys(card_ids,'redhat')	
#将刚才生成含有100个元素的cards_ids作为key,value全为redhat
print('卡号\t\t\t\t\t密码')
for key in card_ids_dict:	#遍历字典
    print('%s\t\t\t%s' %(key,card_ids_dict[key]))

结果:

卡号			        密码
6102009001			redhat
6102009002			redhat
6102009003			redhat
6102009004			redhat
6102009005			redhat
6102009006			redhat
6102009007			redhat
6102009008			redhat
6102009009			redhat
6102009010			redhat
6102009011			redhat
6102009012			redhat
...
6102009098			redhat
6102009099			redhat
6102009100 		    redhat

##
  • 4
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值