练习1:
"""
# 数字重复统计:
1). 随机生成1000个整数;
2). 数字的范围[20, 100],
3). 升序输出所有不同的数字及其每个数字重复的次数
"""
import random
# (1)创建一个容器保存数字
list1 = []
# (2)随机产生1000个数字保存在列表中
for i in range(1000):
list1.append(random.randint(20, 100))
# (3)对生成好的1000个数进行排序(没有要求去重),然后加到子字典里
sort_num = sorted(list1)
print(sort_num, type(sort_num))
# print(type(sort_num))
# (4)产生字典-->key(元素);value(count的次数)
dict_num = {}
# 说明利用了list的特性
for num in sort_num:
if num in dict_num:
# 存在之后就是根据键修改值!
dict_num[num] += 1
# 第一次肯定不存在,就是添加字典元素!
else:
dict_num[num] = 1
print(dict_num)
练习2:
"""
# 1. 随机生成100个卡号;
# 卡号以6102009开头, 后面3位依次是 (001, 002, 003, 100),
# 2. 生成关于银行卡号的字典, 默认每个卡号的初始密码为"redhat";
# 3. 输出卡号和密码信息, 格式如下:
卡号 密码
6102009001 000000
"""
# print({}.fromkeys({'1','2'},'0000000'))
card_ids =[]
# 生成100个卡号
for i in range(100):
# %.3d:代表整型数占3位-->核心!
s = '6102009%.3d' %(i+1)
# 将每次生成的卡号都加入到列表中!
card_ids.append(s)
#多对一的映射(第一个可以是任意类型的参数)
card_ids_dict = {}.fromkeys(card_ids,'redhat')
print(card_ids_dict)
print('卡号\t\t\t\t\t密码')
for key in card_ids_dict:
print('%s\t\t\t%s' %(key,card_ids_dict[key]))
练习3:
# (1)求f=1+2+...+9 -->作为铺垫!
sum = 0
for i in range(1, 10):
sum += i
print(sum)
# (2)求f=1-2+3-4+...+9 [体会如何一正一负地累加]
sum = 0
for i in range(1, 10):
sum += i * ((-1) ** (i - 1))
print(sum)
print(sum)
# 求f=1-1/2+1/3-1/4+...+1/9 [正负分数的叠加]
sum = 0
for i in range(1, 10):
sum += 1 / (i * ((-1)) ** (i - 1))
print(sum)
# 求f=1!-2!+3!-4!+...+9![自然数的阶乘叠加-->过渡到正负】
sum = 0
j = 1
for i in range(1, 10):
j = j * i
# print(j)
sum += j * ((-1) ** (i - 1))
# print(sum)
练习4:
"""
求s=a+aa+aaa+aaaa+aa...a的值
"""
# 4,5-->(a,n)
# 模拟--->4 + 44 + 444 + 4444
sum = 0
add = 0
for i in range(0, 4):
# (1)每个元素
add = add * 10 + 4
# (2)进行累加
sum += add
# print(sum)
print(sum)