什么是Python?
Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。(Java其实为混合模式,编译+解释,也就是常说的JIT优化)
让我们来简单的看看Python与Java的区别
1.Pyhton为动态语言,执行按步执行,第一步执行了,第二步和第三步没有执行,
也能在线上直接修改;Java为静态语言,Java能在编译时期发现错误,代码的可读性和维护性都很强
2.python的强制缩进,python并不靠大括号来判断语句块,而是缩进的。
3.python语言没有泛型,python的变量不需要声明类型,只有在运行的时候才会检查这个变量这个变量到底是什么类型
用Demo来学习(以下程序需要安装Python3 环境 )
首先让我们先抄写三个程序:
算圆面积
#算圆面积
r = 25
area = 3.1415 * r *r
print(area)
print("{:.2f}".format(area))
画个同切圆
#多个同切圆
import turtle
turtle.pensize(2)
turtle.circle(10)
turtle.circle(40)
turtle.circle(80)
turtle.circle(160)
画个五角星
from turtle import *
color('red','red')
begin_fill()
for i in range(5):
fd(200)
rt(144)
end_fill()
done()
再设计一个华氏度<—>摄氏度 的转换程序
#tempConvert
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("输入的格式错误")
抄写之后我们再来学习,以温度转换为例,我们来学习Python的基础语法
语法格式
必须强制缩进
注释
单行注释 以# 开头
多行注释 以’’’ 开头和结尾
变量与保留字
这三个都是变量的名字,使用 = 来赋值和修改
命名规则:大小写字母,数字,下划线和汉字等字符组合
python大小写敏感,首字符不能为数字,不能为保留字相同
保留字(关键字):被编程语言内部定义的标识符
数据类型
温度转化的代码设计到了 ,整数,浮点数,字符串
整数:123
浮点数 : 123.123
字符串:“123” 或者 ‘123’
列表类型:[1,2,3,4,5]
直接赋值即可。
字符串的序号,从 0 开始,提供两种索引方式,正向第一个为0,最后一个字符为长度-1.
逆向为倒数第一个为-1
我们也可以这样获取字符,获取输入的第一个字符
在这里插入图片描述
获取指定范围的字符串,获取第二个字符到第四个字符之间的字符串,区间为左闭右开
列表类型
列表类型的格式为[x,x,x,x,x]
以逗号分割,元素为任意数据类型,可以使用in 来判断元素是否在列表内部
语句与函数
赋值语句: =
将右侧的结果赋给左边。
if elif else 分支语句 条件判断 等比为 if else if else + 条件 + :
必须有冒号
基本函数
输入 input()
变量 = input( <提示的字符串> ) 或者 input(<提示字符串>)
输出 print()
评估函数 eval()
作用为将参数的最外侧的引号去除,并执行余下的语句
例如:
eval(“1”) -> 1
eval(“1+2”) -> 3 (取出引号之后,变为了1+2,python可以识别,直接执行)
eval("‘1+2’") -> ‘1+2’ (这里内部使用了单引号,外部使用了双引号,将外部的引号取出后, 为’1+2‘)
eval(‘print(‘Hello’)’) -> Hello (取出引号后,为print(‘Hello’) 直接输出 Hello)
在这里,收先获取从0到-1 的字符串
再次详细的分析温度转换程序:
#tempConvert
#首先获取输入的字符串
TempStr = input("请输入带有符号的温度值:")
#如果最后一个字符是F 或者 f 那么就是华氏温度,进行转换
if TempStr[-1] in ['F','f']:
#取字符串第一个到倒数第一个字符(左闭又开)通过eval 获得到数字,进行转换
C = (eval(TempStr[0:-1]) - 32)/1.8
#格式化输出,并且保留两位小数
print("转换后的温度是{:.2f}C".format(C))
#如果最后一个字符是C 或者c 那么就是摄氏温度,进行转换
elif TempStr[-1] in ['C','c']:
F = 1.8*eval(TempStr[0:-1]) + 32
print("转换后的温度是{:.2f}F".format(F))
else:
#如果都不是,那么输入的就有问题
print("输入的格式错误")
课后作业
temp = eval(input())
if temp == 0:
print("Hello World")
elif temp > 0:
print("He\nll\no \nWo\nrl\nd")
else :
for c in "Hello World":
print(c)
temp = input()
#让eval 函数自动识别
print("{:2f}".format(eval(temp)))
图形绘制
让我们先抄一份代码
#PythonDraw.py
import turtle
turtle.setup(650,350,200,200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
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()
效果:
现在我们再研究一下它到底是怎么画出来的
turtle 库
在代码的第一行我们引入了 turtle 这个库,这个库就是用于绘图的一个库,也是常说的海归绘图体系。
海归绘图体系:1969年诞生,主要用于图形绘制。
turtle 是python的标准库之一,也是入门级的绘图函数库。
至于标准库和第三方库,我们可以这么想,标准库游戏里自带的游戏道具,第三方库,就是你自己从网上下的Mod包。
turtlr 的绘制
绘制的最小单位是 像素
窗体的最左上角为 0 ,0 下标,也就是坐标原点。
我们可以使用 turtle.setup(width,height,startx,starty) 这个函数可以设置窗体的大小,以及在电脑屏幕中起始点的位置。起始点的位置可以省略。
turtle 空间坐标体系
可以是用 turtle.goto(x,y) 这个函数来设置海龟要到达哪一个位置
小练习:
import turtle
turtle.goto(100,100)
turtle.goto(100,-100)
turtle.goto(-100,-100)
turtle.goto(-100,100)
turtle.goto(0,0)
turtle.done()
结果:
这些就是一个海龟直走的方向,可是海龟也会转弯啊,我们可以看到在图形绘制的时候箭头始终没有变过,现在我们就学习一下怎么让它变个方向。
turtle.fd(d) 向前走
turtle.bk(d) 向后走
turtlr.circlr(r,range) 以左上角某一个点为圆心,进行曲线绘制
turtle角度坐标体系
我们可以通过 turtle.seth(angle) 方法来改变海龟行进的角度。注意这里只是改了箭头的方向角度,并不前进。angele 为绝对度数。
当然我们也可以相对当前的角度去调整
turtle.left (angle)
turtle.right(angle)
这两个方法都是以当前海龟方向的左/右,改变多少角度。
小练习,绘制Z型曲线
import turtle
turtle.left(45)
turtle.fd(150)
turtle.right(135)
turtle.fd(300)
turtle.left(135)
turtle.fd(150)
turtle.done()
RGB色彩模式
RGB是值红蓝绿三个通道的颜色组合,它能够覆盖视力可以感知的所有颜色,RGB的颜色取值范围为0-255整数,或者0-1之间的小数
常用颜色
turtle默认使用小数值来设置颜色,也可以使用 turtle.colormode(mode) 来改变数值的设置。
turtle.colormode(1.0) 设置为小数模式
turtle.colormode(255) 设置为整数模式
库引用
在蟒蛇代码的第一行,我们使用了import + 库名 的方式进行引用,使用库的函数时,就需要<库名> . <函数名>(参数) 以这种方式来调用对应的方法。
<库名>.<函数名>(参数)
这种形式非常像面向对象种Java 语言的方法调用,需要类或者对象的名字。
Python 中提供了另一种方式来使用函数。使用import 和 from 一起引入库,这样就可以不必写库名了直接使用函数来调用
<函数名>(参数)
(这里虽然报红,但是程序依旧是可以运行的)
如此以来看起来确实会方便许多,但是,如果导入的库多了,那么库的方法可能会有重名,调用那一个库的方法就不清楚了,所以Pycharm 也不推荐使用,所以会报红
那么我们之前还学过SQL ,对于很多表而言,他有了一个起别名的功能,Python也同样具备!
我们是用import <库> as <库别名>
这是最推荐使用的一种模式,能把代码的冗余降到最小,并且不会导致程序错乱。
画笔控制函数
蟒蛇绘制代码中使用了这几个语句
penxxx 这些就是画笔控制函数(把海龟想象为笔)
画笔操作后一直有效,一般成对出现 (别名:方便编程而起的简短的名字,功能一摸一样)
turtle.penup() 别名 turtle.pu() 这个语句相当于把画笔抬起,此时海龟的移动,并不会在画板上留下痕迹
turtle.pendown() 别名 turtle.pd() 落下画笔,此时海龟的移动就会留下痕迹
turtle.pensize(width) 别名 turtle.width(width) 画笔的宽度,相当于这个海龟有多大的腰围
turtle.pencolor(color) color为颜色字符串或者r,g,b值 这就相当于画笔的颜色,海龟龟壳的涂装
color形式:
turtle 运动控制函数
控制海龟的行进,走直线还是走曲线。
在蟒蛇绘制中,使用到的就是 fd() ,circle()这两个函数
turtle.forward(d) 别名 turtle.fd(d) 海龟向前行进 ,走直线(d可以为负数)
turtle.circle(r,extent=None) 以 r 为半径,绘制的extent角度的弧形
r 为半径, extent 为弧度(0-360),圆心默认在海龟当前位置左侧 r 距离的位置
方向控制函数
控制海龟面对的方向,绝对角度和海龟角度两套体系
turtle.,setheading(angle) 别名 turtle.seth(angle) 改变海龟行进的方向,
angle 为绝对角度
turtle.left(angle) 左转/右转 angle 角度方向
循环语句与range函数
循环语句 for 变量 in range(<参数>):
<被执行的语句>
参数就代表循环的次数,变量代表每一次循环的技术,如果变量为1,那么就是循环0 - (1-1)次,也就是for(int i = 0 ; i <= 0 ; i++) 这个意思。 从0 循环到变量-1 次.
小练习
打印 0 - 4
for i in range(5):
print(i)
for i in range(5):
print("Hello",i)
此时我们需要注意print 函数,当我们使用字符串拼接时,print 函数会自动将变量与变量之间的“,” 替换为空格,Hello 与 i 之间 在函数中,我是没有加空格的,但是输出之后会有一个空格。
range() 函数 可以对应为 - 》 Java 中的random()
range(N) : 产生从0 - N-1 的整数
range(M,N): 产生从M - N-1 的整数
我们可以这样理解,range (N) 循环N 次, range(M,N) 循环N-M次。
详细解释蟒蛇代码
#PythonDraw.py
import turtle
#设置窗体大小,长650 宽350像素 在屏幕的200,200 的位置
turtle.setup(650,350,200,200)
#将画笔抬起,此时海龟的移动不会再画板上留下痕迹
turtle.penup()
#向前运行-250像素,也就是向后走250像素(默认海龟方向向右)
turtle.fd(-250)
#落下画笔,此时海龟移动就会留下痕迹
turtle.pendown()
#设置画笔的宽度为25像素
turtle.pensize(25)
#设置海龟的颜色为purple 也就是紫色
turtle.pencolor("purple")
#设置海龟的角度,设置为-40度(右下方)
turtle.seth(-40)
#执行for 循环,形成关节
for i in range(4):
#让海龟以40像素为半径(圆心在海龟的左侧40像素点),走80度的弧线
turtle.circle(40,80)
#让海龟以-40为半径,圆心在海龟的左侧-40像素,也就是海龟的右边40像素,走80度的弧线
turtle.circle(-40,80)
#以40像素为半径,(圆心在海龟左侧的40像素点),走40度的弧线
turtle.circle(40,80/2)
#向前行进40像素点
turtle.fd(40)
#以16像素为半径,走180度的弧线,
turtle.circle(16,180)
#向前走40* 2/3 的像素
turtle.fd(40 * 2/3)
#让窗口不会自动关闭
turtle.done()
课后练习
import turtle as t
t.pensize(2)
for i in range(8):
t.fd(100)
t.left(45)
import turtle as t
t.pensize(2)
for i in range(8):
t.fd(150)
t.left(135)
(我学习的是 MOOC Python语言程序设计)