You are on page 1of 44

PYTHON 程序的基本语法

本章教学目标:

• 熟悉 Python 语言的基本语法。

• 理解数字数据类型的特点及其操作方法。

• 初步掌握字符串数据类型。

• 逐步熟悉 Python 的基本运算、表达式和优先级。


Python 框架
运行第一个 python 程序

print('hello world’)

注意:创建 python 文件名时:


1. 不要与系统保留字或者文件中的变量名一样
2. 文件名中不要有空格
3. 文件名如果是两个单词连接用下划线 “ _” 连接
通过 Turtle 库的练习加深对程序理解

from turtle import *


import turtle as t
import turtle
turtle.circle(100)
turtle.circle(100, steps=3)
turtle.done()
通过 Turtle 库的练习加深对程序理解
import turtle turtle.pu()
turtle.pencolor('red') turtle.goto(0, -200)
turtle.pensize(5) turtle.write(' 好玩的 Turtule 绘图’ ,
turtle.circle(100) font=(' 黑体 ', 20, 'bold'))
turtle.goto(200, 0) turtle.goto(-50, 150)
turtle.circle(100, steps=3) turtle.pd()
turtle.backward(100) turtle.begin_fill()
turtle.right(90) turtle.circle(20)
turtle.forward(100) turtle.pu()
turtle.right(90) turtle.goto(50, 150)
turtle.forward(100) turtle.pd()
turtle.circle(30, 180) turtle.circle(20)
turtle.forward(200) turtle.fillcolor('blue’)
turtle.circle(30, 180) turtle.end_fill()
turtle.forward(100) turtle.hideturtle()
turtle.done()
引用
Python 程序会经常使用当前程序之外已有的功能代码 , 这个过
程叫“引用”。用 import 保留字引用当前程序以外的功能库 , 使用
方式如下:

import < 功能库名称 >

引用功能库之后 , 采用 < 功能库名称 >.< 函数名称 >() 方式调用


具体功能,这种方式简称为 A.B() 方式。

扩展来说, A.B 或 A.B() 使用方式是面向对象的访问方式,其


中 A 是对象的名称, B 是属性或方法名称。
circle 用法
• Circle ( radus,extend,steps ) : 半径、弧度和几边形。

 radius :弧形半径
 当 radius 值为正数时,圆心在当前位置 / 小海龟左侧。
 当 radius 值为负数时,圆心在当前位置 / 小海龟右侧。
 extent :弧形角度。当无该参数或参数为 None 时,绘制整个圆形
 当 extent 值为正数时,顺小海龟当前方向绘制。
 当 extent 值为负数时,逆小海龟当前方向绘制。
第二章知识导图

s.lower()
s.upper()
s.split()
s.replace
s.join()
s.count()
s.strip()
s.find()
2.1 Python 语言源程序的书写格式与基本规则

• 缩进:代码块以 Tab 或空格缩进限制

• 注释:

 单行注释: # 我是 python
三个单引号
 多行注释: """ 第一行 也可以

第二行

第三行 ""“

或者选中需要注释的行,快捷方式 Ctrl + ?
标识符的命名规则
合法的标识符(变量、函数、类)必须遵守以下规则:
由一串字符组成,字符可以是任意字母、数字、下画线、汉字,但
这串字符中的开头字符不能是数字;

不可以使用特殊字符,除了 _

变量名严格区分大小写

变量名要避免和系统使用的保留字冲突
import keyword
print(keyword.kwlist)
变量定义
Python 中的变量不需要声明,每个变量在使用前都必须赋值,变量赋
值以后该变量才会被创建。

变量的赋值用“ =” 表示,一般形式为:

变量 = 表达式

什么是变量?
搞清楚变量与常量的区别?
例子

x=6
print(x)

X 为变量
6 为常量
2.2 Python 的基本数据类型
2.2 Python 的基本数据类型
2.2.1 数字 进制数也是整数

Python 的数字有 4 种数据类型:整数( int )、浮点


数( float )、布尔值( bool )、复数( complex )

小数方式: x=3.141
科学计数法: x=314e2
判断数据类型的函数
• type(object) 返回 object 的数据类型

• isinstance(obj, class) 测试对象 obj 是否为指定类型 class 的实例


例子 由低到高转换: bool < int < float <complex

x = int(3.61) print(123 == '123')


y = int(3.21) print(1+True)
print(x, y)
布尔值可以与数值类型
的值进行算数运算

x = 314e2 complex( 实数 , 虚数值 )


y = float(x) 实数 + 虚数 = 2+3j
z = float(3)
m = 0.1+0.2 fushu = complex(2, 3)
print(x, y, z, m) print(fushu)
print(fushu.real) #real 为属性,后面没有括号
print(fushu.imag)
print(type(fushu.real))
print(isinstance(fushu.real, float))
例子:布尔值进行算术运算
4 个人中有一人做了好事,已知有三个人说了真
话,根据下面对话判断是谁做的好事。

A 说:不是我;
B 说:是 C ;
C 说:是 D ;
D 说: C 胡说。

for x in ('A','B','C','D'):

if (x !='A') + (x =='C') + (x == 'D') + (x !='D') == 3:

print(x)
2.2.2 字符串
1 .字符串的组成
( 1 )字符串( String )

字符串是由字符组成的序列

字符串和数字一样,都是不可变对象。

( 2 )字符串界定符
① 单引号

② 双引号

③ 三引号:被用于长段文字或说明 , 只要引号不结束 , 就可以任意换行

( 3 )转义符
反斜杠( \ )为转义字符,如 \n
2 .字符串操作的简单方法

( 1 )字符串长度 len()

( 2 )字符串连接

利用加法运算符“ +” 可以让两个字符串首尾相连

( 3 )字符串重复
利用乘法运算符“ *” 可以让一个字符串自身多次重复并拼接
在一起
例子

s1 = 'abc' s1 = 'abc' s1 = 'abc'


r = len(s1) s2 = '123' r = s1 * 3
print(r) r = s1 + s2 print(r)
print(r)
3. 字符串常用内置函数 这里的 s 是指字符
串如 s = ‘A b c d e’

方法 意义
s.lower() 没有参数。把字符转化为小写,并返回新值
s.upper() 没有参数。把字符转化为大写,并返回新值
s.split(sep=‘’) 返回 s 中被 sep 分隔的字符串列表。 sep 参数可以省略,默
认值为空格。
s.replace(s1,s2[,max]) 返回 s 中所有 s1 被 s2 替代的字符串。 max 参数是可选参数,
代表替换不超过 max 次
s.strip(x) 返回从 s 中去掉两端的 x 字符后的子串,但在 s 中间的 x 字
符不能被去掉
a.jion(s) 返回在 s 的每个元素之间插入字符串 a 的新字符串。注意 s
是可迭代对象, jion 只能转换元素是字符串格式的可迭代对

s.find(str, beg=0, 检测字符串中是否包含子字符串 str ,返回子字符串第一次
end=len(string)) 出现的索引值,否则返回 -1 。
s.count(str, beg=0, 统计字符串中字符串 str 的个数
end=len(string))
例子
s = 'ABC' s1 = 'A B C' s = 'abcabc'
ns = s.lower() s2 = 'a\nb\nc' ns = s.replace('a','22')
print(ns) ns1 = s1.split() print(ns)
ns2 = s2.split('\n')
print(ns1) s = ' 我爱你 '
print(ns2) ns = '♀'.join(s)

s = ' ab c ' print(ns)

ns = s.strip(' ') 这里为什么要


print(ns) 用 split 函数 s2 = 'I love you'
ns = s2.split()
Print(‘@’.join(ns))
思考题
请统计下面这段文本中的单词的个数,以及 freedom 出现的次数

And if America is to be a great nation this must become true.


So let freedom ring from the prodigious hilltops of New Hampshire.
Let freedom ring from the mighty mountains of New York!
Let freedom ring from the heightening Alleghenies of Pennsylvania!
Let freedom ring from the snowcapped Rockies of Colorado!
Let freedom ring from the curvaceous slops of California!
But not only that; let freedom ring from Stone Mountain of Georgia!
Let freedom ring from Lookout Mountain of Tennessee!
Let freedom ring from every hill and molehill of Mississippi!
2.3 Python 的基本运算和表达式
2.3.1 变量
( 1 )变量赋值
最常用: 变量名 = 值
( 2 )其他的变量赋值格式
多目标赋值
变量 1 = 变量 2 = 变量 3 = 值
序列赋值 这里的值是利用序列
变量 1 , 变量 2 , 变量 3 = 值 解包(元组)实现的

变量 1, 变量 2, 变量 3 = 值 1, 值 2, 值 3
复合赋值
变量 += 值
序列解包(元组)实例

a, b , c, d, e = 'hello'
print(a, b , c, d, e, sep=‘-’) 结果是。。。
a = b = c = d = e = 'hello'
print(a, b , c, d, e, sep='-')

x=2
x, y = 2, 5 y=5
x, y = y, x temp = x
print(x,y) x=y
y = temp
print(x ,y)
Python 的变量实质是引用
Python 变量“值”的修改,并不是通过原地址修改来实现的

 id() 函数可以确切地知道变量引用的内存地址
 使用运算符 is 可以判断两个变量是否引用同一个对象
2.3.2 .变量类型的转换
( 1 ) float() 函数。将其他类型数据转换为浮点数
( 2 ) str() 函数。将其他类型数据转换为字符串
( 3 ) int() 函数。将其他类型数据转换为整型
( 4 ) bool() 函数。将其他类型数据转换为布尔类型
( 5 ) round(x [, n] ) 函数。当参数 n 不存在时,将浮点型数值圆整为整
型,当参数 n 存在时,即使为 0 ,输出也会是一个浮点数。该函数返回
的结果会受到计算机精度的影响。
( 6 ) chr() 和 ord() 函数。进行整数( ASCII )和字符之间的相互转换
( 7 ) eval() 函数。将以一个字符串类型的算术表达式转换为其执行结
果,返回表达式的值,本质是去掉参数值两侧的引号。
思考 1
提示: python 大多数不能自动转换数据类型,需要用函数强制转换

x = input(' 请输入数据: ')


y=2 对吗?
r=x+y
print(r)

如果是浮点数运算怎么处理?如果是整数运算怎么处理?
思考 2
对吗?
sname = ' 张三 '
stel = 13917591237
ns = sname + stel
print(ns)
ASCII 码表
2.3.2 运算符
用于运算的符号就是运算符。
Python 支持算术运算符、关系运算符、赋值运算符、逻辑运
算符等基本运算符。
浮点数除法
1. 算术运算 ( 优先级最高 )
加、减、乘 * 、除 / 、取余运算 % 、取商整除运算 // 、幂运算 **

2. 比较运算 / 关系运算 ( 优先级其次 )


> , < , == , >= , <= , !=
模运算即取余运算 (%)

模运算 (%) 在编程中十分常用,主要应用于具有周


期规律的场景。例如:

一个星期 7 天,用 day 代表日期 , 则 day%7 可以表


示星期几,如 0 代表星期日, 1 代表星期一等;

对于一个整数 n , 1%2 的取值是 0 或者 1 ,可以用


于判断整数 n 的奇偶性。本质上,整数的模运算 n%m 能
够将整数 1 射到 [0,m-1] 的区间中。
3. 赋值运算 ( 优先级再其次 )
= (普通赋值运算)、 += (加法赋值运算)、 -= , /= , *= , %= , //
= , **= (幂赋值运算)

4. 逻辑运算 ( 优先级最低 )
逻辑运算是布尔值之间( True or False )的运算,共有 4 种:
and 逻辑与运算
or 逻辑或运算 逻辑控制:
not 逻辑非运算 • 1>2
• 1<2<3
^ 异或运算(相同为假、不同为真) • 42 !=42
• 'Name' == 'name’
• 'M' in 'Magic’
返回值为 True 或 False
常用的 Python 数学运算类的内置函数

这个 sum 函数参数与 total = sum([1,2,3])


excel 中的不一样,最多
total = sum((1,2,3), 3)
只有 2 个参数,参数至少
有一个是可迭代对象 total = sum(range(1,101))
math 模块中的函数

Math 模块中还包含了两个数学运算中的常量:
 math.pi
 math.e
思考:求个圆面积吧!!!
圆半径为 3 ,结果分别保留 2 位小数和取整数

import math
r=3
area = math.pi * r **2
print(round(area,2))
print('%.2f' % area)
print('%d' % area)
2.3.4 输入、输出

1 .输入
x = input(< 提示字符串 >)
注意: x 的数据类型为字符串 sep 和 end 属性
值默认为空格
和换行
2 .输出
print(< 输出值 1>[,< 输出值项 2>, … , < 输出值 n>, sep=‘ ', end='\n'])
3. 格式化输出(书本第 4 章 P67 )
1) 字符串格式化的一般形式是:
< 格式字符串 > % (< 逗号分隔的参数 >)
把参数按格式字符要求转换为字符串
例子: 格式化输出字符串示例
>>> test =5000
>>> print("%6d" % test) # 输出宽度为 6 ,结果为 5000 (前面有两个空格,右对齐)
>>> print("%2d" % test) # 输出宽度为 2 ,但 test 值宽度为 4 ,按实际输出,结果为 5000
>>> print("%-6d" % test)# 输出宽度为 6 ,结果为 5000 (后面两个空格,左对齐)
>>> print("%+6d" % test)# 输出宽度为 6 ,结果为 +5000 (前面一个空格,右对齐)
>>> print("%06d" % test)# 输出宽度为 6 ,结果为 005000 (前面两个 0 ,空格改为 0 )
>>> print("%#o" % test) # 以八进制数形式输出,前面添加 '0o' ,结果为 0o11610
>>> print("%#x" % test) # 以十六进制数形式输出,前面添加 '0x' ,结果为 0x1388

>>> test=128.3656
>>> print("%6.2f" % test) # 输出宽度为 6 ,小数点后面保留 2 位,结果为 128.37
>>> print("%3.1f" % test) # 按实际宽度输出,小数点后面保留 1 位,结果为 128.4
>>> print("%.3e" % test) # 小数点后面保留 3 位,结果为 1.284e+02
>>> test=" 上海是一个美丽的城市 "
>>> print("%5.2s" % test) # 输出宽度为 5 ,输出前两个字,结果为 ' 上海 ' (前面有三个空格)
上述字符串输出格式不一定用在 print 中,也可以用在
其他函数或代码块中,如 input 函数中:
a=2
b=3
c = input('%d + %d = ' % (a, b))
2 、格式化字符串函数
< 格式字符串 >.format(< 逗号分隔的参数 >)

 在形式上相当于通过“ {} 槽”来代替变量,且 {} 中的序号可重复使用。例

如:

'{0} 的年龄是 {1} , {0} 太胖了! ' .format (" 张三 ",20)

可将字符串格式化输出为“张三的年龄是 20 ,张三太胖了!“

 还可以在 {} 中限定格式,比较常用的如:
avg_score = 82.4567
print(' 你的平均成绩是: {0}' .format(avg_score))
print(' 你的平均成绩是: {:.2f}' .format(avg_score))
print(' 你的平均成绩是: {:.0f}' .format(avg_score))
print(' 你的平均成绩是: {:%}' .format(avg_score))
print(' 你的平均成绩是: {:e}' .format(avg_score))
format() 方法的格式控制

format() 方法的 {} 除了包括参数序号,还可以包括格式控制信


息。语法格式如下 :

{< 参数序号 >: < 格式控制标记 >}

print(' 我要输出的数字是 {:>15.3f}'.format(12345.6789))


3 、 f-string 格式化字符串
 是 python 3.6 以后的一种字符串格式化方法中,在表达式式前
加f。

import datetime
name = ' 张三 '
age = 20
date = datetime.date(2021,7,18)
score = 88.6
print(f' 我是 {name}, 今天是 {date:%Y-%m-%d}, 我这次考试成绩是 {score:.0f} 明年我
{age+1} 岁了 , 我会努力 ')
作业

【练习 2 】 从键盘输入两点的坐标
( x1,y1 )和( x2,y2 ),计算并输出
两点之间的距离。保留两位小数。

You might also like