Python
都是本人一个一个字敲出来的,献给大家,kez
解决问题6个步骤
- 分析问题
- 划分边界IPO
Input, Process, Output - 设计算法
- 编写程序
- 调试测试
- 升级维护
命名
- 大小写字母\数字\下划线和汉字
- KaTeX parse error: Undefined control sequence: \首 at position 18: …olor{red}{大小写敏感\̲首̲字符非数字\不与保留字相同}
and | elif | import | r a i s e \color{red}{raise} raise | global |
---|---|---|---|---|
as | else | in | return | n o n l o c a l \color{red}{nonlocal} nonlocal |
a s s e r t \color{red}{assert} assert | except | i s \color{red}{is} is | try | True |
break | finally | lambda | while | False |
c l a s s \color{red}{class} class | fo | not | w i t h \color{red}{with} with | None |
continue | from | or | y i e l d \color{red}{yield} yield | |
def | if | pass | del |
缩进
- 语 法 的 一 部 分 \color{red}{语法的一部分} 语法的一部分
- 表达包含和层次关系的唯一手段
- 程序内长度一致即可
注释
- 单行注释 #123123
- 多行注释 ‘’‘开头 结尾’’’
数据类型
- 整数类 123123
- 字符串 “123,123”
由0个活多个字符组成
正向递增序号/反向递减序号
0~n / -n~1- 索 引 : < 字 符 串 > [ M ] 第 M 个 \color{red}{索引:<字符串>[M]第M个} 索引:<字符串>[M]第M个
- 切 片 : < 字 符 串 > [ M : N ] 第 M 到 N − 1 个 \color{red}{切片:<字符串>[M:N]第M到N-1个} 切片:<字符串>[M:N]第M到N−1个 注意是冒号!!
- 列表[123,123]
- 判断元素是否在列表中 in
TempStr[-1] in ['C','c']
分支语句
- if elif else
- if …: elif: else:
- 冒号及后续缩进表示所属关系
- 紧凑形式<表达式1>if<表达式2>else<表达式3>
print("猜{}了".format("对" if guess==9 else "错"))
函数
<函数名>(<参数>)
-
input(“提示信息”)- 以字符串类型保存
-
print()
- print(“转换后的温度是{:.2f}C”.format©)
- {}表示槽,将后续变量C填充其中 :.2f表示取小数点后两位
- print(,end="")👉默认最后的换行,可换成空白使不换行
print("\r单行刷新",end="") \r表将光标移至行首
- print(“转换后的温度是{:.2f}C”.format©)
-
eval():去掉参数最外层引号并执行余下语句的函数
- 如果直接输入"Hello",由于没定义过Hello,会报错
- 只拆一层引号,eval("‘Hello’")=‘Hello’
-
str.replace(old,new[,max]) 替换函数
#阿拉伯数字转汉字:将n的第c个转换为s的第c个字符,循环
n = input()
s = '零一二三四五六七八九'
for c in '0123456789':
n = n.replace(c, s[eval(c)])
print(n)
-
import函数
- <库>.<函数>(<函数参数>)
- from<库>import*
<函数>(<函数参数>)
容易出现函数重名! - import<库>as<库别名>
-
pow(x,y) 计算x的y次幂
-
round(x,d) 对x四舍五入,取d位小数
#温度转换 TempConvert.py
TempStr = input("请输入带有符号的温度值:")
if TempStr[-1] in ['F','f']:
C = (eval(TempStr[0:-1]) - 32)/1.8
print("转换后的温度是{:.2f}C".format(C))
elif TempStr[-1] in ['C','c']:
F = 1.8*eval(TempStr[0:-1]) + 32
print("转换后的温度是{:.2f}F".format(F))
else:
print("输入格式错误")
#Hello World的条件输出
'''获得用户输入的一个整数,参考该整数值,打印输出"Hello World",要求:
如果输入值是0,直接输出"Hello World"
如果输入值>0,以两个字符一行输出"Hello World"
如果输入值<0,以垂直方式输出"Hello World" '''
n = eval(input)
if n==0 :
print("Hello World")
elif n>0:
print("He\n''\no \nWo\nrl\nd")
else:
for c in "Hello World":
print(c)
turtle库-乌龟库
-
setup(宽度,高度,起始x,起始y),非必须
-
goto(x,y)
-
circle(r,angle) 绕着左边半径为r的圈爬angle角度,默认360
-
seth(angle) 只改变方向,绝对角度
-
left/right(angle)
-
fd/forward/bk(像素点) 向前/向前/向后多少像素点
-
penup()/pu()/pendown()/pd() 停止作画/继续作画
pd()/pendown()只是放下画笔,并不绘制任何内容! -
colormode() 1.0:RBG小数 (默认255):RBG整数
-
pencolor(RGB) (“purple”) /(0.63,0.13,0,94)/(160,32,240)
英文名称 | RGB整数值 | RGB小数值 | 中文名称 |
---|---|---|---|
white | 255,255,255 | 1,1,1 | 白色 |
yellow | 255,255,0 | 1,1,0 | 黄色 |
magenta | 255,0,255 | 1,0,1 | 洋红 |
cyan | 0,255,255 | 0,1,1 | 青色 |
blue | 0,0,255 | 0,0,1 | 蓝色 |
black | 0,0,0 | 0,0,0 | 黑色 |
seashell | 255,245,238 | 1,0.96,0.93 | 海贝色 |
gold | 255,215,0 | 1,0.84,0 | 金色 |
pink | 255,192,203 | 1,0.75,0.80 | 粉红色 |
brown | 165,42,42 | 0.65,0.16,0.16 | 棕色 |
purple | 160,32,240 | 0.63,0.13,0.94 | 紫色 |
tomato | 255,99,71 | 1,0.39,0.28 | 番茄色 |
-
pensize/width(width) 画笔宽度
-
turtle.Turtle().screen.delay(0) 去除画画延迟
-
speed()
fastest | 0 |
---|---|
fast | 10 |
normal | 6 |
slow | 3 |
slowest | 1 |
循环语句
while:需要提前对计数器初始化,并每次累加等操作
for:自动在循环变量中遍历,维护也不影响
-
for<变量>in range(<次数>):
*<变量>表循环计数,从0到<次数>-1- r a n g e ( N ) 产 生 从 0 到 N − 1 的 整 数 序 列 , 共 N 个 \color{red}{range(N)产生从0到N-1的整数序列,共N个} range(N)产生从0到N−1的整数序列,共N个
- r a n g e ( M , N ) 产 生 M 到 N − 1 的 整 数 序 列 , 共 N − M 个 \color{red}{range(M,N)产生M到N-1的整数序列,共N-M个} range(M,N)产生M到N−1的整数序列,共N−M个
- range(M,N,K) -K为步长
- 字符串穿遍历循环 for c in s:
- 列表遍历循环 for item in ls:(遍历元素)
- 稳健遍历循环 for line in fi: fi是文件标识符,遍历每行
-
while<条件>: (Crtl+C退出循环)
-
break 和 continue
- break:跳出并结束整个循环
- continue: 结束当次循环
for c in "PYTHON":
if c == "T":
continue
print(c,end="")
----PYHON
for c in "PYTHON":
if c == "T":
break
print(c,end="")
----PY
- else:注意是循环语句中的,非条件语句中
- 当循环没被break退出,则执行else
random库 随机数(标准库) - 梅森旋转算法
- seed() - 初始化随机种子,默认为当前系统时间
*种子相同,生成的随机数相同 - random() - 生成0.0~1.0之间的随机小数 16位
- randint(a,b) - [a,b]生成整数
- randrange(m,n[,k]) [m,n ) 之间以k为步长的随机整数 注意不取到最右边
- getrandbits)(k) - 生成一个k比特长的随机整数
- uniform(a,b) - [a,b]之间的随机小数
- choice(seq) - 从序列中随机选择一个元素
- shuffle(seq) - 将序列中元素随机打乱排列
#单位正方形内随机点落到圆内的概率
#CalPiV2.py
from random import random
from time import perf_counter
DARTS = 1000* 1000
hits = 0.0
start = perf_counter()
for i in range(1, DARTS+1):
x,y = random(),random() #生成0-1的随机小数,即单位正方形内计算
dist = pow(x**2+y**2,0.5)
if dist<=1.0:
hits += 1
pi = 4 * (hits/DARTS)
print("圆周率值是:{}".format(pi))
print("运行时间是:{:.5f}s".format(perf_counter() - start()))
#turtle画画
#PythonDraw.py
import turtle
turtle.setup(650,350,200,200)
turtle.penup()
turtle.fd(-250)
turtle.pd()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
turtle.circle(40,80)
turtle.circle(-40,80)
turtle.circle(40,80/2)
turtle.fd(40)
turtle.circle(16,180)
turtle.fd(40*2/3)
turtle.done()
数字类型
-
整数类型:可正可负,无取值范围限制
- pow(x,y) 计算x的y次幂
-
浮点数类型:带小数点的小数 范围与精度存在限制,常规计算可忽略
- KaTeX parse error: Expected '}', got 'EOF' at end of input: …于二进制来回换算引起),一般在 1 0 − 16 10^{-16} 10−16KaTeX parse error: Expected 'EOF', got '}' at position 7: 位置左右产生}̲
- 要 用 r o u n d ( x , d ) : 对 x 四 舍 五 入 , 截 取 d 位 小 数 \color{red}{要用round(x,d):对x四舍五入,截取d位小数} 要用round(x,d):对x四舍五入,截取d位小数
- 可用科学计数法表示
- 使用e或E作为符号,以10位基数,则 a e b aeb aeb表示 a ∗ 1 0 b a*10^{b} a∗10b
-
复数类型
- 与数学一致,定义为 j = − 1 j=\sqrt{-1} j=−1, a + b j a+bj a+bj为复数,a为实部,b为虚部
z = 1.23 e − 4 + 5.6 e + 89 j z=1.23e-4+5.6e+89j z=1.23e−4
- 与数学一致,定义为 j = − 1 j=\sqrt{-1} j=−1, a + b j a+bj a+bj为复数,a为实部,b为虚部