廖雪峰老师系列课程 迅速过一遍 1
Posted ViviranZ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了廖雪峰老师系列课程 迅速过一遍 1相关的知识,希望对你有一定的参考价值。
def pfff(x,n=2,*,name,clss):
s=1
while n>0:
s=s*x
n=n-1
print(s,",the student is",name,"in class",clss)
return
https://www.liaoxuefeng.com/wiki/1016959663602400/1017024645952992
2021/7/27 开始尽快
目录
可变变量、关键词参数和命名关键词参数**highly important
综述:
python的优势在于很完善的基础代码库,劣势在于(相比C)运行慢(但是实际并不影响)
win+R→cmd Enter→python(标志是>>>)
exit()退出
如果用VS code,则是需要切换目录
然后是输入输出:(双引号和单引号都可以用来表示字符串)
用命令行运行时:
python以“#”开始注释,以缩进表达格式(因此复制粘贴后应当检查缩进),大小写敏感,转义符"\\"
name=input('your name is: ')
print(name,"Say yohoho~ \\\\n"r'\\n\\\\n')
print("Somalian Pirates We!")
print("Somalian",'Pirates',"We!")
关于编码方式:
ASCII编码(大小写字母+数字)→各国加入本国语言字符(中国:GB2312)→国际上形成了Unicode(通常为两个字节)→为了简化生成UTF-8(字节数不一样,英文字母一个,汉字一般是三个有些四个)
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件。
浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器,所以你看到很多网页的源码上会有类似
<meta charset="UTF-8" />
的信息,表示该网页正是用的UTF-8编码。
print(ord('哈'))
print(chr(123456))
Python基础:
List&Tuple:
List
是最常用的变量形式,元素可以是字符串、数字、布尔值等
chrters=['Pirates',"We"]
print(chrters)
print(len(chrters))
print(chrters[0])
print(chrters[-1])
chrters.append("!")
print(chrters)
chrters.insert(0,"Somalian")
print(chrters)
chrters.pop(3)
print(chrters)
chrters[2]="You"
print(chrters)
运行结果为:
tuple
相比list,tuple是不能进行增减修改操作的,也就是说applend、pop、insert这些函数均不能使用,强行使用显示:
其优势在于可以保证tuple不会在之后被人篡改。仍然可以按照位置输出和得到长度。值得注意的是,如果是一个数字作为元素,小括号可能被认为是数学运算符,因此我们可以通过加一个逗号区分。(a=()是一个空tuple)
chrters=('Pirates',"We",1)
print(chrters)
print(len(chrters))
print(chrters[-1])
chch=(1,)
print(chch)
此外,如果把一个list作为tuple的一个元素,我们仍然可以修改list内部的元素(tuple只保证对应的list是不变的)
L = [
['Apple', 'Google', 'Microsoft'],
['Java', 'Python', 'Ruby', 'php'],
['Adam', 'Bart', 'Lisa']
]
# 打印Apple:
print(L[0][0])
# 打印Ruby:
print(L[1][2])
# 把Java变成C++:
L[1].insert(0,"C++")
print(L[1])
条件判断:
If语句:
注意缩进,每一步要加冒号。"elif"
a=int(input("your age is:"))
if a<=0 or a>=125:
print("It is nonsense!")
elif a<=12:
print("you are a child")
elif a<=18:
print("you are a teenager")
else:
print("you are an adult")
循环语句:
a=("Somalian",'Pirates',"We","!")
for aa in a:
if aa!='!':
print("Say",aa,"!")
i=1
while i<=4:
print("say i=",i)
i=i+1
输出为:
dict&set:
dict
区别于list建立序数和元素的一一对应,dict(全称dictionary)是利用键-值(key-value)对应来存储元素的。相比list,dict占用内存更大但是调用更快,是“用空间换时间”的目的。key是调用用到的,因此不能是可变的,可以是字符串(string)、数字、tuple但是不能是list。
dict={"Alice":'good','Bob':"Mif","Cindy":96}
print(dict["Alice"])
dict['David']='Howdy'
print(dict)
print(dict.get("Elsa"),"NOTHERE")
dict.pop("Bob")
print(dict)
输出为:
试试key:
# key=[1,2]
# dict[key]=1
key=(1,2)
dict[key]=1
print(dict)
注销的(尝试用list作为key)显示:
正常代码显示:
Set:
函数:
https://docs.python.org/3/library/functions.html#abs
做了一个随机数猜猜猜的小游戏嘿嘿嘿
还是挺好玩的蛤蛤蛤
再完善下……
def my_guessfor5():
n=input("in which edge: ")
if n.isdigit()==0:
print("Please enter an integer as edge!")
return
n=int(n)
k=random.randint(0,n)
t=input("How many times?: ")
if t.isdigit()==0:
print("Please enter an integer as times!")
return
t=int(t)
tt=0
pal=0
while tt<t:
pp=input("now guess!: ")
if pp.isdigit()==0:
print("Please enter an integer to guess!")
continue
pp=int(pp)
if pp<k:
print("It is too small.")
tt=tt+1
if pp>k:
print("It is too large.")
tt=tt+1
if pp==k:
print("Congratulations! You win after",tt+1,"times!")
return
if tt==t:
print("I am sorry, you lost.")
return
输出是~
来算个小数学欸
import math
def solvvve(a,b,c):
if not (isinstance(a,(int,float))*isinstance(b,(int,float))*isinstance(c,(int,float))):
print("Please enter numbers!")
return
a=float(a)
b=float(b)
c=float(c)
dd=math.sqrt(b*b-4*a*c)
x1=(-b+dd)/(2*a)
x2=(-b-dd)/(2*a)
return x1,x2
换一个小数学欸
def poww(x,n=2,b=0):
s=1
while n>0:
s=s*x
n=n-1
s=s+b
return s
输出来玩玩
注意,此时里面的n=2和b=0都是默认参数(如果用不着可以不修改)。默认参数必须设置为不变对象(否则用例如list的东西,如果在某一次用到了,之后可能会一直记住被改的样子)。
可变变量、关键词参数和命名关键词参数**highly important
可变变量
正常来说,我们输入的变量都是一定的(比如数字就是数字,字符串就是字符串)【必须参数和默认参数】。
然而,针对下面程序,如果我们只用number(而不是*number),
def calu(*number,**pw):
s=0
for num in number:
s=s+num
print("answer is",s,"the stu:",pw)
我们就需要以 cal([1,2])或者cal((1,2))输入tuple、list的形式调用函数。(否则会显示TypeError: calu() takes 1 positional argument but 2 were given)因此,我们想到用 *number来代替number,这样程序会默认把输入的一坨变成一个tuple输进去。(可以用cal(*(1,2))继续用tuple或者list为输入)
关键词变量:
**pw,输入一个dict,可以不输入,调用形式如:
命名关键词参数:
def pfff(x,n=2,*,name,clss):
s=1
while n>0:
s=s*x
n=n-1
print(s,",the student is",name,"in class",clss)
return
输出check好几遍:
如果把必须参数、默认参数、可变参数、命名关键词参数、关键词参数都写上(必须按照这个顺序),可以是:
def pfff(x,n=2,*numm,name,clss,**what):
s=1
while n>0:
s=s*x
n=n-1
for num in numm:
s=s+num
print(s,",the student is",name,"in class",clss,"others:",what)
return
输出一下试试:
廖老师温馨提示:
函数:
递归函数:
def mutli(n,m):
if m==1:
return n
else:
return n+multi(n,m-1)
def move(n,a,b,c):
if n == 1:
print(a, '-->', c)
if n>1:
move(n-1,a,c,b)
print(a, '-->', c)
move(n-1,b,a,c)
高级特性
切片:
L=list(range(100))
LL=L[::10]
LLL=L[:10:2]
LLLL=L[-10::5]
print("L=",L,"LL=",LL,"LLL=",LLL,"LLLL=",LLLL)
迭代:
L=("Who","lives","in","a","pinapple","under","the","sea")
for i in L:
print(i)
列表生成:
import sympy
l=[y for y in range(100) if sympy.isprime(y)]
print(l)
import os
l=[d for d in os.listdir(".")]
print(l)
这个for循环以短短一行代码生成列表的功能真的绝了。试了一个很经典的例子:
import numpy as np
L=np.random.randn(15)
l=[d for d in L if d>0]
ll=[d if d>0 else 0 for d in L]
print("L=",L,"\\n l=",l,"\\n ll=",ll)
其中L是一个随机生成的有15个元素的列表,其分布符合以0为中心的正态分布。l提取出了其中所有大于0的项,ll是把L中小于零的项都划归到0.
生成器:
#生成斐波那契数列-循环版
nn=int(input("input:")) #需要用int()转化为数字
def fibb(N):
i,a,b=1,1,1
while i<N:
a,b=b,a+b
i=i+1
yield a #需要在循环中yielda
return 'success!yohoho~'#''表示输出的字符串
n=fibb(nn)
while True:
try:
t=next(n)
print("new:",t)
except StopIteration as e: #StopIteration捕捉错误用于输出
print("output:",e.value)
break #必须要加否则一直输出output
输出:
杨辉三角:
#杨辉三角:输出每一行的参数
nn=int(input("input:"))
def yhsj(N):
yield [1]
n=2
a=[1,1]
while n<=N:
b=[1]
t=0
while t<n-2:
t=t+1#共进行n-2次
b.append(a[t-1]+a[t])
b.append(1)
a=b
n=n+1
yield a
return "END"
n=yhsj(nn)
while True:
try:
print("new:",next(n))
except StopIteration as e:
print("Output:",e.value)
break
廖老师课堂作业:
yield [1]
L=[1,1]
while True:
yield L
L=[L[i]+L[i+1] for i in range(len(L)-1)]#len([1,1])=2 range(2):0,1
L.append(1)
L.insert(0,1)
迭代器:
首先考虑iterable、iteration:
生成器都是Iterator
对象,但list
、dict
、str
虽然是Iterable
,却不是Iterator
。
把list
、dict
、str
等Iterable
变成Iterator
可以使用iter()
函数:
from collections.abc import Iterable, Iterator
#L=123 #False F TypeError: 'int' object is not iterable
#L=[123] #True F T
#L=(123,) #True F T\\
L=(x*x for x in range(12)) #T T T
L=iter(L)
#print(isinstance(L,Iterable))
print(isinstance(L,Iterator))
以上是关于廖雪峰老师系列课程 迅速过一遍 1的主要内容,如果未能解决你的问题,请参考以下文章