python入门(7)
匿名函数
lambda 参数:表达式
(lambda :print(1+2))()
f = lambda :print(1+2)
f()
# 3
练习
1、给定一个list a, 满足a[i+1] >= a[i], 给定int key ,找出list a 中第一个大于等于key的元素的index,无满足要求的元素则返回-1。
a=[10,13,13,14,16,19]
def getfirstkey(a,key):
for i in a:
if(i>=key):
return a.index(i)
return -1
print(getfirstkey(a,13))
2、求结果v = dict.fromkeys([‘k1’,‘k2’],[])v[‘k1’].append(666)print(v)v[‘k1’] = 777print(v)
v=dict.fromkeys(['k1','k2'],[])
v['k1'].append(666)
print(v)
v['k1']=777
print(v)
# {'k1': [666], 'k2': [666]}
# {'k1': 777, 'k2': [666]}
3、按照一下要求定义一个游乐园门票类,并尝试计算2个成人+1个小孩子平日票价
-
平日票价100元
-
周末票价为平日票价120%
-
儿童半价
def price(au,ch,day):
p=100
if(day==6 or day==7):
p=p*1.2
return au*p+ch*p*0.5
print("price is ",price(2,1,1))
5、 定义一个函数func(listinfo) listinfo:为列表,listinfo = [133, 88, 24, 33, 232, 44, 11, 44],返回列表小于100,且为偶数的数
listinfo=[133,88,24,33,232,44,11,44]
def getdouble100(listinfo):
l=[]
for i in listinfo:
if i<100 and i%2==0:
l.append(i)
return l
print(getdouble100(listinfo))
7、完美立方:找到大于1的4个整数满足完美立方等式:a3=b3+c3+d3(例如123=63+83+103)。编写一个程序,对于任意给定的正整数N(N ≤100),寻找所有的四元组(a,b,c,d),满足a3=b3+c3+d3,其中1<a,b,c,d≤N。
def perfect(n):
l=[]
if n>=100:
return "too much"
for i in range(1,n+1):
for y in range(1,i):
for z in range(1,i):
for x in range(1,i):
if(i**3==x**3+y**3+z**3):
l.append([i,x,y,z])
return l
print(perfect(13))
9、3位水仙花数计算:“3位水仙花数”是指一个三位整数,其各位数字的3次方和等于该数本身。例如:ABC是一个“3位水仙花数”,则:A的3次方+B的3次方+C的3次方 = ABC。
请按照从小到大的顺序输出所有的3位水仙花数,请用一个“逗号+空格”分隔输出结果。
def shuixian():
for i in range(100,1000):
a=int(i/100)
b=int(i/10%10)
c=int(i%100%10)
# print("a,b,c",a,b,c)
if(i==(a**3+b**3+c**3)):
# print(i)
print(i,end=', ')
shuixian()
10、给定两个非负整数x和y,如果某一整数等于xi+yj,其中整数i>= 0且j>=0,那么我们认为该整数是一个"精致"的数。返回值小于或等于n(n<=200)的所有精致的数组成的列表。结果列表中每个值最多出现一次,同时请使用sorted保证结果唯一。
输入格式:共三行,每一行为一个整数,分别是x y n
输出格式:共一行,为一个列表。
输入样例:
1
2
5
输出样例:[2, 3, 5]
def jingzhi(x,y,n):
s =set()
if(x<0 or y<0 or n>200):
print("Error")
return 0
for i in range(0,n):
for j in range(0,n):
temp=x**i+y**j
if(temp<=n):
s.add(temp)
return s
print(jingzhi(1,2,5))