2.1 语法元素入门
程序元素
注释、缩进、变量、常量、表达式、输入、输出、分支、循环
温度转换程序
代码块在chap1中已经包含了。
缩进:一个缩进=4个空格
注释:单行是#,多行 是上下两行```
常量和变量:在Python中常和变量的使用是没有区别的。
命名:首字母不能用数字和空格,中文和非字母符号,也可以作为名字。
常量、变量和命名:标识符对大小写不敏感,不能与保留字相同。
Python3保留字列表是33个:
and\as\assert\break\class\continue\def\del\elif\else\except\finally\for\form\global\if\import\in\is\lambda\nonlocal\not\or\pass\raise\return\try\while\with\yield\Ture\False\None
表达式:程序中产生货计算新数据值的一行代码。
例如,x=25 #将数字25赋值给变量x#,使用变量前必须对其赋值。
表达式中空格的使用:增加空格可以增加程序的可读性,但是不能改变缩进,不能将命名分割。
输入函数:=input(),从控制台获得用户输入。>>> input_string= input("请输入:")
表达式:
字符串操作——操作符可以将两个字符串链接起来:
>>> "python"+"is good" = 'python is good'
字符串可以理解为字节序列,若长度为L,第一个字节索引为0或-L,最后一个字节索引为L-1或-1.???——没看懂。
例子:
>>> tIndex="python" >>>tIndex[4] 答案是‘o’,>>> tIndex[-4] 答案是‘t’
以区间形式获得字符串的子串:
>>> tIndex[1:-2] 答案是:'yth'
想:从左边到右,顺序为0➡️1➡️2➡️3;从右往左,顺序为-1 ➡️-2➡️ -3
表达式:
如果 val="28C",则val[-1]是最后一个字符串“C”。前两个字符组成的子串可以用val[0:2]表示,它表示一个从[0,2)的区间。问:如何表达包含2的这个表达式呢?val[0:3]?
搞不清楚为啥表达式里右侧是闭区间,却表达了右侧的一个不包含的开区间。???如果要取全部咋办呢?
分支语句:
if :
elif
……
else:
赋值语句:用等号给变量赋值。
f= 1.8*float(input_str[0:-1])+32
同步赋值语句:同时给多个变量赋值(先运算右侧N个表达式,然后同事将表达式结果赋给左侧)
,……,=,……,
- 输出函数: print() 可以输出字符和各种类型变量的值,同时通过%来选择要输出的变量。
- 循环语句:
for i in range():
连续运行10次
for i in range(10):
其中变量i用于计数
1.2程序编写模版PPT
从IPO模式角度理解程序
此处有个代码块
#TempConvert.py #py3温度转换#测试通过
val = input ("请输入带温度表示符号的温度值,(例如:32C):")
if val[-1] in ['C','c']:
f= 1.8 * float(val[0:-1])+32
print ("转换后的温度为:%.2fF"%f) #为啥这里要用这种表达?
elif val[-1] in ['F','f']:
c=(float(val[0:-1])-32)/1.8
print ("转换后的温度为:%.2fC"%c)
else:
print("输入有误")
input-print 模版
用户输入:input()获得输入
运算部分:根据算法实现
结果输出:print()输出结果
initial-print 模版
初始变量:运算需要的初始值
运算部分:根据算法实现
结果输出:print()输出结果
-#程序编写模版
任何输入输出类型的组合都可以看成“模版”,例如,input输入-文件write输出。
2.2 蟒蛇绘制程序
#Snake.py 该程序已经通过调试可用。
import turtle
def drawSnake(rad,angle,len,neckrad):#!debug:neckrad report sth wrong。这里注意“:和()”都是英文格式的才好,中文格式报错。
for i in range(len):
turtle.circle(rad,angle)
turtle.circle(-rad,angle)
turtle.circle(rad,angle/2)
turtle.fd(fd)
turtle.circle(neckrad+1,180)
turtle.fd(rad*2/3)
def main():
turtle.setup(1300,800,0,0)#turtle.setup(width,height,startx,starty)
pythonsize = 30
turtle.pensize(pythonsize)
turtle.pencolor("blue")
turtle.seth(-40)#turtle.seth(angle),StandardMode:0 is to east in the right hand,90 is to north in upword.LogoMode:0 to north,90 to east.
drawSnake(40,80,5,pythonsize/2)
main ()
Turtle库:一个小乌龟在(0,0)点开始平面坐标系里运动。
Python蟒蛇绘制实例
Python语法元素: import引入外部库
-def定义函数:def用于定义函数。这里定义了两个函数drawSnake和main.
函数,所谓函数就是一组代码表达一个功能,函数名就是这段代码的名字。需要被调用才能执行。
程序运行:
def语句定义的函数存在缩进关系,def后连续缩进,def定义的函数需要执行,用main()。
运行main()——后执行turtle.setup()和drawSnake()
蟒蛇程序代码复现
#Snake.py
import turtle
def drawSnake(rad,angle,len,neckrad):#!debug:注意的是程序的符号一定是英文的,否则容易处错误。
for i in range(len):
turtle.circle(rad,angle)#circle()函数让小乌龟沿着一个圆形爬行,参数rad描述了轨迹半径的位置,这个半径在小乌龟运行的左侧rad远位置处,如果rad为负值,则半径在小乌龟运行的右侧。参数angle表示小乌龟沿着圆形爬行的弧度值。
turtle.circle(-rad,angle)
turtle.circle(rad,angle/2)
turtle.fd(fd)# 也可以用turtle.forward()表示乌龟向前直线爬行移动。表示小乌龟向前直线爬行移动,他有一个参数表示爬行距离。
turtle.circle(neckrad+1,180)
turtle.fd(rad*2/3)
def main():
turtle.setup(1300,800,0,0)#turtle.setup(width,height,startx,starty)
pythonsize = 30
turtle.pensize(pythonsize)
turtle.pencolor("blue")
turtle.seth(-40)#turtle.seth(angle),StandardMode:0 is to east in the right hand,90 is to north in upword.LogoMode:0 to north,90 to east.
drawSnake(40,80,5,pythonsize/2)
main ()
2.3 函数库()
两种引入方法:
第一种方法:在开头使用import turtle() # 第一种方式可以自定义fd()函数,
第二种方法:# 第二种方法不能自定义fd()函数,其实理解还是不是很深入~~
from import
或者
form import *
如果采用第一种和第二种略微有一点不同,比如能否再定义的区别。
Tutle库
引入方式:2种
控制画笔绘制状态的函数:8个,例如: pendown() penup()
控制画笔字体和颜色的函数:14个,例如:color() screensize()
控制画笔运动的函数:33个,例如:forward(distance) bk(distance)
-TurtleScreen/Screen类的函数:22个。例如:bgpicture(picname)