有java基础再学python一切都很简单了。总结一下老师说的几个经典的例子。
1.range()函数的使用
for i in range(10,1,-1):
print(i,end=" ")
可以写成这样,但是不能写成使用关键字传参,range(start=0,stop=10,step=1).
其中start和step参数可以省略,如果只写了一个参数,如range(10)表示是[0,10)区间
2.推导,求笛卡尔积
ar1=[1,2,3,4]
ar2=[5,6,7,8]
la=[(x,y,x*y) for x in ar1 for y in ar2]
print(la)
合理的运用推导能巧妙又简单的解决问题,
如果这个题要输出ar1和ar2的笛卡尔积,不是用推导的话就需要嵌套循环。
推导还能加上if条件,比如
la=[(x,y,x*y) for x in ar1 for y in ar2 if x==2]
3斐波拉契数列,(多种方式完成)
1.变量方式:
a,b=0,1
for i in range(0,12):
c=a+b
a=b
b=c
print(c)
a,b=b,a+b
2.数组方式:
ar=[1,1]
for i in range(2,12):
ar.append(ar[i-1]+ar[i-2])
ar.reverse()
print(ar)
3.函数方式:
def fei(n=12):
count=1
a,b=0,1
while count<=n:
yield b
a,b=b,a+b
count+=1
for i in fei(12):
print (i)
4.10个小孩绕圈报数,逢3的倍数退出,最后剩下的是几
a=[1,2,3,4,5,6,7,8,9,10]
count=0
while True:
if len(a) ==1:
break
count+=1
if count%3 ==0:
del a[0]
else:
a.append(a.pop(0))
print(a)
此方法比较巧妙,从头开始遍历a,如若不是三的倍数把此元素抛出且append到数组末尾,如果是三的倍数,则删除其。
5.random函数的使用
import random
a=[1,2,3,4,5]
print(random.random())
print(random.uniform(1,10))
print(random.randrange(1,20,2))
print(random.choice(range(50,100)))
print(random.choices(a,k=3)) --a数组里选出k个数[可能会重复]
print(random.sample(a,2)) --a数组里选出两个数[不会重复]
6.通过程序判断用户输入的字符串中符号是否匹配
此处用到压栈的方法,栈为先进后出,队列为先进先出。
此处需要把各种情况考虑全面。
mystack=[]
flag=True
a=input("please input\n")
for i in a :
if i=='{':
mystack.append('}')
elif i=='(':
mystack.append(')')
elif i=='[':
mystack.append(']')
elif i=='}' or i==']' or i==')':
if len(mystack)==0:
flag=False
break
elif mystack.pop()!=i:
flag=False
break
if flag and len(mystack)==0:
print("perfect")
else:
print("not perfect")