字典的练习
数字统计:
1)随机生成100个整数
2)范围[20,100]
3)升序输出所有不同的数字及每个数字重复的次数
import random
nums = []
for i in range(100):
nums.append(random.randint(20,100))
sorted_nums = sorted(nums)
num_dict = {}
for num in sorted_nums:
if num in num_dict:
num_dict[num] += 1
else:
num_dict[num] = 1
print(num_dict)
测试:
-
生成100个卡号;
卡号以6102009开头, 后面3位依次是(001, 002, 003, 100) -
生成关于银行卡号的字典, 默认每个卡号的初始密码为"redhat";
-
输出卡号和密码信息, 格式如下:
卡号 密码 6102009001 000000 card_num = [] for i in range(100): card_num.append('6102009%.3d' %(i+1)) card_info = {}.fromkeys(card_num,'redhat') print('卡号\t\t\t 密码') for k,v in card_info.items(): print(k,'\t',v)
测试:
函数练习
题目需求:
对于一个十进制的正整数, 定义f(n)为其各位数字的平方和,如:
f(13) = 12 + 32 = 10
f(207) = 22 + 02 + 72 = 53
下面给出三个正整数k,a, b,你需要计算有多少个正整数n满足a<=n<=b,
且k*f(n)=n
输入:
第一行包含3个正整数k,a, b, k>=1, a,b<=1018, a<=b;
输出:
输出对应的答案;
范例:
输入: 51 5000 10000
输出: 3
def f(n):
n = str(n)
sum = 0
for item in n:
sum += int(item) ** 2
return sum
s = input() #接受变量,即 '51 5000 10000'
li = []
for item in s.split():
li.append(int(item))
k,a,b = li
count = 0
for i in range(a,b+1):
if k * f(i) == i:
count += 1
print(count)
测试:
列表生成式练习
-
题目描述:
给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整
数,并输出结果。输
入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别
为(5,5),(3,7)) -
输入描述:
输入包括一个整数n,(3 ≤ n < 1000) -
输出描述:
输出对数 -
示例1 :
输入:
10
输出:
2num = int(input()) def isPrime(num): for i in range(2,num): if num % i == 0: return False else: return True primeli = [i for i in range(2,num) if isPrime(i)] ## 先拿出两个数,判断两个数之和是否等于num count = 0 for item1 in primeli: if (num - item1) in primeli and item1 <= num - item1: count += 1 print(count)
测试:
内置高阶函数map练习
对于序列的每个元素求阶乘(10个2-9之间的随机数)
import random
def f(x):
res = 1
for i in range(1,x+1):
res *= i
return res
li = [random.randint(2,9) for i in range(10)]
print(li)
print(list(map(f,li)))
测试:
sorted排序练习
给定一个整形数组, 将数组中所有的0移动到末尾, 非0项保持不变;
在原始数组上进行移动操作, 勿创建新的数组;
输入:
40702
输出:
【4,7,2,0,0】
n = ''.join(input().split())
li = [int(i) for i in n]
def move(x):
if x == 0:
return 3
else:
return 2
print(sorted(li,key=move))
测试:
装饰器练习
创建装饰器, 要求如下:
-
创建add_log装饰器, 被装饰的函数打印日志信息;
-
日志格式为: [字符串时间] 函数名: xxx, 运行时间:xxx,
运行返回值结果: ……import time import functools def add_log(fun): @functools.wraps(fun) def wrapper(*args,**kwargs): start_time = time.time() res = fun(*args,**kwargs) end_time = time.time() print('[%s]函数名: %s,运行时间: %.6f,运行返回值结果: %d' %(time.ctime(),fun.__name__,end_time-start_time,res)) return res return wrapper @add_log def add(x,y): time.sleep(1) return x+y add(1,2)
测试: