import random
tmp=""
for i in range(0,4):
n=random.randrange(0,3)
if n==0:
num=random.randint(0,10)
tmp+=str(num)
if n==1:
num=random.randrange(65,91)
tmp+=chr(num)
if n==2:
num=random.randrange(97,122)
tmp+=chr(num)
print(tmp)
输入
5
12.7
16.7
14.3
10.2
13.5
输出fd
代码:
n=int(input())
list1=[float(input()) for i in range(n)]
lMax=max(list1)
lMin=min(list1)
list2=list1
list2.remove(lMax)
list2.remove(lMin)
avg=sum(list2)/len(list2)
print(str(lMax)+" "+str(lMin)+" "+str(avg))
测试
5
12.7
16.7
14.3
10.2
13.5
16.7 10.2 13.5
知识点
列表推导式:[float(input()) for i in range(n)]
内置函数max():返回列表元素最大值
内置函数min():返回列表元素最小值
List.remove() 删除首次出现的指定元素
内置函数sum(l) :返回列表l元素之和
内置函数len(l) :返回列表l长度
内置函数str():将任意类型转换为字符串
输入
20
输出
True
注:这里的因数是质因数,即因子为质数(除了1和本身不能被其他整除)
算法:设判断N是否为丑数:将N循环除以2直到不能整除,再循环除3直到不能整除,最后整除5,如果不能整除则不是丑数,如果商为1,且余数为0则为丑数。
代码:
def isCnumber(n):
for i in (2,3,5):
while 1:
p,q=divmod(n,i)
if(q!=0):
break;
else:
n=p;
return n==1
n=int(input())
print(isCnumber(n))
测试:
20
True
知识点:
divmod(a,b):返回一个包含商和余数的元组(a // b, a % b)
代码:
import random
def getRandom(n):
if n==50:
rlist=list(map(lambda x:random.randint(0,100),range(n)))
if n==20:
rlist = list(map(lambda x: x, range(1,21)))
return rlist
def no_odd(list):
list=[i for i in list if i%2==0]
if len(list)==10:
print(list)
return list
num=input()
mylist=getRandom(int(num))
result=no_odd(mylist)
测试:
20
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
知识点:
匿名函数:# 冒号:之前的x表示它是这个函数的参数。
# 匿名函数不需要return来返回值,表达式本身结果就是返回值。
#这里lambda x:random.randint(0,100),range(n)等价于[ random.randint(0,100) for x in range(n)]
1.20个随机整数的列表,其处理结果不需要输出
2.20个1~20的列表,其处理结果需要输出
代码:
import random
def getRandom(n):
if n==1:
list1=[random.randint(0,100) for i in range(20)]
else:
list1=[i+1 for i in range(20)]
return list1
def getSorted(list1):
list2=list1[::2]
list2=sorted(list2,reverse=True)
list1[::2]=list2
return list1
n=0
x=getRandom(n)
x=getSorted(x)
if(n==0):
print(x)
测试:
[19, 2, 17, 4, 15, 6, 13, 8, 11, 10, 9, 12, 7, 14, 5, 16, 3, 18, 1, 20]
>>>
知识点:
切片:list[::2]:步长为2截取(即取偶数位)
sorted:默认为升序,要降序需要加上reverse=True
输入
10
输出
{2, 3, 5, 7}
代码:
def isPrime(n):
for i in range(2,n):
if n%i==0:
return False
return True
n=int(input())
result=set()
for i in range(2,n):
if isPrime(i)==True:
result.add(i)
print(result)
测试:
10
{2, 3, 5, 7}
>>>
知识点:
集合初始化:result=set()
新增一个元素:result.add()
算法:小明一步最多能上3个台阶,我们可以把三个台阶看成一个单位,小明走1,2,3台阶分别有1,2,4中方法,那么走四步台阶则有1+2+4=7种方法,同理,,第五步台阶可以看成是第二步往上走三步,那么走五步台阶则有7+4+2=13种方法,以此类推最终得到:f(n) = f(n-1) f(n-2) f(n-3)
代码:
def climbStdt(n):
a,b,c=1,2,4
for i in range(n-3):
a,b,c=b,c,a+b+c
return c
def climbStdg(n):
firstSteps={1:1,2:2,3:4}
if n in firstSteps.keys():
return firstSteps[n]
else:
return climbStdg(n-1)+climbStdg(n-2)+climbStdg(n-3)
print(climbStdt(15))
print(climbStdg(15))
测试:
5768
5768
知识点:
字典:新建:dict = {} or dict = {key:value,.....}
判断是否在字典的键中:dict.has_key(key)
思路:切片分成两个列表,排好序后再放在一起
代码:
import random
mlist=[random.randint(1,100) for i in range(20)]
print(mlist)
list1=sorted(mlist[:10])
list2=sorted(mlist[10:],reverse=True)
mlist=list1+list2
print(mlist)
测试:
[78, 100, 97, 49, 36, 30, 89, 26, 40, 3, 87, 64, 5, 34, 80, 49, 20, 97, 26, 5]
[3, 26, 30, 36, 40, 49, 78, 89, 97, 100, 97, 87, 80, 64, 49, 34, 26, 20, 5, 5]
知识点
list[::]-返回包含所有元素的列表
list[::-1]-返回列表逆序
list[::2]-偶数位,每隔一个取一个数
list[1::2]-奇数位,每隔一个取一个数
list[3:6]-下标在3-6之间的元素(左闭右开)
list[100:]-下标100之后的所有元素
代码:
n=input()
list1=list(map(int,n))
print(sum(list1))
测试:
1234
10
知识点:
map参数问题:map函数的原型是map(function, iterable, …), iterable是可以迭代的对象,如字符串和列表。这里是字符串,即把每个字符转换成整形。
集合输入以0结束
代码:
def getList():
list2=[]
num= input()
while(num!='0'):
list2.append(num)
num= input()
return list2
A=getList()
B=getList()
print(set(A)&set(B))
print(set(A)|set(B))
print(set(A)-set(B))
测试:
1
2
3
0
1
2
4
0
{'1', '2'}
{'4', '1', '2', '3'}
{'3'}