Python语言_理論與習題

PyCharm 是用来编写 Python 程序文件最好用的集成开发环境(IDE)之一

应用领域:自动化系统运维、自动化测试、人工智能,机器人、搜索引擎,爬虫、科学计算、web网站后端开发、云计算、大数据及数据库编程、游戏、其它
python 的优缺点

优点:简单易学易用、开发效率高、应用领域广泛、免费、可移植(支持 Windows, Mac OS X, Linux操作系统)、可混合编程、(C/C++)、开源、面向对象(Java, C++, Python)

缺点:与C/C++相比,执行速度不够快、不能封闭源代码、

python 的官网:网址: https://www.python.org。我们可以通过官网得到更多更新的信息及文档。

python 的版本:
Python V2.7(2020年已经结束维护)
Python V3.6(当前教学)
Python V3.9(最新)
python 的获取:

python 下载地址::https://www.python.org/ftp/python/

python的官方文档:https://docs.python.org/zh-cn/3.6/

PyCharm 用两种版本:

付费的专业版(付费的专业版功能更强大,它提供了30天的免费试用)
免费的社区版(免费的社区版只能写纯python代码)

编写第一个脚本:

vim hello.py 编辑
print (“hello”)

cat hello.py 查看
print (“hello”)

python3 hello.py 运行

hello

python 的两种运行模式

使用文件解释执行模式
先将 python 的语句。写入xxx.py当中。然后用python3 命令解释执行该文件
$ python3 xxx.py

交互模式
在在命令提示符下直接输入python3命令进入交互模式。

调用exit() 退出交互模式

Linux 下进入交互模式

$ python3 <回车>

在此处可以输入 语句和表达式(回车执行)

exit() # 退出交互模式,回到终端

插入:yum install ibus ibus-libpinyin 安装拼音输入法

Python 的基本输入输出

Python 的输出函数

print() 函数

作用:向终端输出文字信息,能让用户看到。当有多个数据要输出时,中间用英文的逗号(,) 分隔开

调用格式:print(数据1, 数据2, 数据3, …, sep=’ ‘, end=’\n’)

在python中主要使用print实现输出,print是一个函数。函数调用需要添加(),括号内是传给函数的参数

Python的基本输入函数 input 函数

作用:让程序停下来,等待用户输入文字信息,返回用户输入文字的字符串

调用格式:input(‘提示信息’)

示例:name = input(‘请输入您的姓名:’)
python中,通过input函数获取用户键盘输入
input函数的参数是字符串,它是屏幕提示语

注释:注释以井号 (#) 开头,在物理行末尾截止。

变量和赋值语句

赋值语句

作用:创建一个自定义名字的变量,此变量可以用于绑定一个表达式执行的结果,供后续使用

语法:
变量名 = 表达式
变量名1 = 变量名2 = 变量名3 = 表达式
变量名1, 变量名2, 变量名3 = 表达式1, 表达式2, 表达式3

示例
one_handred = 99 + 1
a = b = c = 200
a, b = 100, 200

说明:第一次为变量赋值,python 会创建变量,同时绑定表达式执行的结果
第二次或者以后为变量赋值,会改变原有变量的绑定关系
python 的变量没有类型,它绑定的对象才有类型
变量在使用之前,必须先进行赋值
变量赋值是一个自右向左的运算,将=右边表达式的计算结果,赋值给左边的变量

变量:变量是在python 内用赋值语句创建,用来绑定一个数据的有名对象

变量名:变量名必须是一个标识符

标识符的命名规则:第一个字母必须是英文字母或下划线 [ A-Za-z_ ]。从第二个字母起(如果有),必须是英文字母或下划线或数字。[ A-Za-z0-9_ ]

变量名称约定:变量名区分大小写

示例:以下是合法的标识符
a a1 abc ABC a1b2c3d4
one_handred count _a ABC

python 编程语言中的关键字不能作为标识符,推荐采用的命名方法

变量名全部采用小写字母,如pythonstring
简短、有意义,如pystr
多个单词间用下划线分隔,如py_str
变量名用名词,函数名用谓词(动词+名词),如 phone / update_phone
类名采用驼峰形式,如MyClass

关键字(keywords):计算机编程语言中保留的标识符称为关键字, 关键字不能当成普通的表示使用关键字通常用于语法标识

python3.9中 的全部的关键字:
False await else import pass None break except in raise True class finally is return and continue for lambda try as def from nonlocal while assert del global not with async elif if or yield

示例

a = 10 + 5 # 第一次为变量赋值是创建变量
a
15

#print("yahu");
#print("4"+"5")

#print(0,9,8,7,6,5,4,3,2,1,)
#print(0,9,8,7,6,5,4,3,2,1, sep=' ',end='\n\n\n')
#print(0,9,8,7,6,5,4,3,2,1, sep='~',end='\n')

#name=input('输入姓名:')
#nl=input('输入年龄:')
#xb=input('输入性别:')
#print("我是",name,nl,'岁','是个',xb,'孩子')

#a=b=c=d=3+862
#print(a)

#a,b,c,d=20,5.5,True,4+3j
#print(type(a),type(b),type(c),type(d))

#one_handred=99+1
#a=b=c=200           #变量名1 = 变量名2 = 变量名3  = 表达式
#a,b=100,200   #变量名1, 变量名2, 变量名3  = 表达式1, 表达式2, 表达式3

#print('hi')
#print("hi")
#print('''hi''')
#print("""hi""")

#print("it's so hot")

#print('''hi
#tom
#and
#jarry''')

#print("abc\rd")

写一个程序 myprog.py

1. 让用户输入用户名

2. 让用户输入密码

3. 打印 谁谁谁 的密码是 xxx

答案:
name = input("请输入您的姓名: ")
password = input("请输入您的密码: ")
print(name, ‘的密码是:’, password)

Python 的基础数据类型:字符串、数字、容器类型、

示例:
住址: 字符串
邮编: 数字(也可以用字符串)
门牌号: 整数

字符串:程序中,用来记录人类的文字信息的一种数据类型

创建字符串的字面值
# 用 英文的 ’ 或 " 或 ‘’’ 或 “”" 开始或结束

此示例示意字符串的写法

print(‘同学们好’)
print(“同学们好”)
print(‘’‘同学们好’‘’)
print(“”“同学们好”“”)

说明:
双引号的字符串的内部的单引号不算是结束符
单引号的字符串的内部的双引号不算是结束符

I’m a teacher!

print(“I’m a teacher!”)

我是"魚"

print(‘我是"魚"’)

三引号字符串的内部可以包含单引号和双引号

I’m a teacher! 我是"明"

print(‘’‘I’m a teacher! 我是"明"’‘’)

三引号字符串又称为所见即所得字符串, 每一次换行会转换成换行符 ‘\n’

print(“咏鹅\n鹅鹅鹅,\n曲项向天歌;\n白毛浮绿水,\n红掌拨清波。”)

等同于如下写法

print(‘’‘咏鹅
鹅鹅鹅,
曲项向天歌;
白毛浮绿水,
红掌拨清波。’‘’)

思考:我是单引号’,我是双引号", 我是三单引号’‘’, 我是三双引"“”

字符串的转义

字符串的字面值中,可以加反斜杠 \ 后加一个或多个字符串,代表一个单个的字符

’ 代表一个单引号
" 代表一个双引号
\n 代表一个换行符
\ 代表个反斜杠

解决方法

print(‘我是单引号’,我是双引号", 我是三单引号’‘’, 我是三双引"“”')

Python 中全部的转义字符串

转义序列 含义 注释
\newline 反斜杠加换行全被忽略
\ 反斜杠 ()
’ 单引号 (')
" 双引号 (")
\a ASCII 响铃 (BEL)
\b ASCII 退格 (BS)
\f ASCII 进纸 (FF)
\n ASCII 换行 (LF)
\r ASCII 回车 (CR)
\t ASCII 水平制表 (TAB)
\v ASCII 垂直制表 (VT)
\ooo 八进制数 ooo 码位的字符 (1,3)
\xhh 十六进制数 hh 码位的字符 (2,3)

练习: 写程序,打印如下文本内容:print(“hello world”)
答案

print(‘print(“hello world”)’)
print(“print(“hello world”)”)
print(“hello world”)

字符串的基本运算

+ 号运算符, 用于拼接**字符串(生成新的字符串)

  • 号的两侧都必须是字符串**

‘今天是’ + ‘3月22日’ # 生成 ‘今天是3月22日’
s1 = ‘123’
s2 = “456”
s3 = s1 + s2
print(s1) # 123
print(s2) # 456
print(s3) # 123456

运算, 用于生产重复的字符串。字符串只能和整数相乘

print(‘我想你了’ * 100)

练习:写一个程序, 打印如下的长方形
长方形的宽是 10 个 # 号, 高是 4个 # 号
##########

##########

数字:Python 中的基本的数字类型:整数、浮点数(小数)、布尔类型数、整数 int

整数的字面值

十进制的写法

100 0 -5
# 二进制的写法 0b 开头 后跟 0~1
0b1101
# 八进制的写法 0o开头 后跟 0~7
0o777 等于 0b111111111 等于 511
# 十六进制的写法 0x 开头 后跟 0~9, a-f
0xA1B2C3D4

浮点数(小数) float

浮点数的字面值
3.14 0.14 .14 3.0 3.

科学计数法

6.18E-1 # 等同于 0.618

6.18 x 1 0 − 1 6.18x10^{-1} 6.18x101

布尔类型的数 bool

** True 真(表示,行,好,成立) 值为1
False 假(表示不行,不好,不成立) 值为0**

算术运算符

**+ 加法

  •  减法
    
  •  乘法
    

/ 除法
// 地板除法(向下取整)
% 求余数**
** 幂运算(也叫乘方运算) x ** y 代表 x 的 y 次方

示例:

1 + 2 * 3 / 4
2.5
14 / 3
4.666666666666667
14 // 3
4
14 % 3
2
3 ** 2
9

练习1:超市的西瓜 13 元一个, 问 你拿100 元可以买几个西瓜,剩余 几元
#l=100
#p=13
#n=l//p
#m=l%p
#print(“可以買”,n,“個西瓜,”,“剩餘”,m,“元”)

练习2:现在是 18:02:31 秒 请问现在距离 凌晨 0:0:0 过了多少秒? 写程序打印出来
#a=186060+2*60+31
#print(“現在是18:02:31,距離凌晨0:0:0過了”,a,“秒”)

练习3:已知从凌晨 0:0:0 到现在已经过了 63320 秒, 请问现在是 几时几分几秒?
17:35:20

回顧:

基本的数据类型:
字符串str、
数字:整数 int、浮点型数 float(小数)、
布尔类型数 bool:True、False

容器:列表 list、元组 tuple、字典 dict、集合 set 和 固定集合 frozenset

运算符
算术运算符:+ - * / // % **
比较运算符:< <= > >= == !=
布尔运算(逻辑运算):and (与) or(或) not(非)
&& || !

语句
表达式语句 (只由一个表达式写在一行组成的语句) print(‘hello world’)
赋值语句 x = 1 + 2

PyCharm 下用快捷键 ctrl + alt + L 可以将程序自动格式化成 符合PEP8 编码规范的格式

比较运算符是二元运算符

运算符
< 小于
<= 小于等于

大于
= 大于等于
== 等于
!= 不等于

比较运算符通常返回布尔类型的数, True, False

示例

100 + 200 > 3
True
1 + 3 >= 2
True
1 + 3 >= 200 # 表达式
False
score = 83 # 这是赋值语句
60 <= score <= 100
True
score = 59
60 <= score <= 100
False

表达式和语句的概念

表达式 : 由数字,字符串(文字), 运算符,函数调用等组成,通常用于计算并得到一个结果
表达式是语文中的字或短语

语句:语句是计算机执行程序的最小单位

示例
a = 100 # 赋值语句
print(a) # 表达式语句

函数调用是表达式

学过的函数
input(‘xxxx’) 返回字符串
print(“xxxx”) 返回 None

语法规则:函数名(传入的参数)、None 是表示空值的一个对象

数据类型转换相关的函数

函数 说明
字符串str(x) 把传入的x 转化成字符串并返回
整数int(x) 把 x 转化为整数并返回
浮点数float(x) 把 x 转化为浮点数并返回
布尔bool(x) 把 x 转化为布尔类型的数并返回

示例:

age = input('请输入年龄: ') # 输入 35
int(age)
35
int(“35”)
35
int(3.14)
3
int(‘3.14’) # 报错
f = 3.14
str(f)
‘3.14’
int(f)
3
bool(f)
True

python 中假值对象

None
False
0
0.0
‘’
[] # 空列表
{} # 空字典

练习:写程序,输入您的年龄, 打印出去年你几岁,明年你几岁。用 str(x) , int(x), float(x), bool(x)

布尔运算符(也叫逻辑运算符)
运算符
and 与运算 &&
or 或运算 ||
not 非运算 !

not 运算符是一元运算符

and 与运算:两者(两个元素同时为真,结果才为真)
x and y
优先返回假值对象, 如果x 为假值,返回x, 否则返回y

or 或运算:两者(两个元素只要有一个为真,结果就为真)
x or y
优先返回真值对象, 如果x 为真值,返回x, 否则返回y

not 非运算

示例

True and True # True
True and False # False
False and True # False
False and False # False
True or True # True
True or False # Ture
False or True # Ture
False or False # False
not False # True
not True # Flase
3.14 and 5 # 5
0.0 and 5 # 0.0
3.14 or 5 # 3.14
0.0 or 0 # 0
not 3.14 # False
not 0.0 # True

问题: 写一个程序,输入一个整数, 判断这个整数是奇数还是偶数
奇数: 1 3 5 7 9
偶数: 2 4 6 8 10
x % 2 == 1 结果为Ture,x 一定是奇数
x % 2 == 1 结果为False,x 一定是偶数

if 语句

作用:让程序根据条件选择性的执行其中的某一个语句块

语法
if 条件表达式1:
语句块1
elif 条件表达式2:
语句块2
elif 条件表达式n:
语句块n

else:
语句块(其他)

说明
elif 子句可以有0个,1个或多个,
else 子句可以有0个或1个且只能放在最后
它通过对表达式逐个求值直至找到一个真值(请参阅 布尔运算 了解真值与假值的定义)在子句体中选择唯一匹配的一个;然后执行该子句体(而且 if 语句的其他部分不会被执行或求值)。 如果所有表达式均为假值,则如果 else 子句体如果存在就会被执行。

练习:写一个程序,输入一个整数,用程序判断这个整数是正数,负数,还是零

练习2:写一个程序, 06_input_score.py, 输入一个学生的成绩,如果成绩在 60~100 之间提示"及格", 否则提示不及格

练习3:写一个程序, 07_input_score.py, 输入一个学生的成绩,
如果成绩在 [0,60) 提示"不及格"
如果成绩在 [60,80) 提示"及格"
如果成绩在 [80,90) 提示"良好"
如果成绩在 [90,100] 提示"优秀"
如果是其他值,则提示“您的输入有误”

[ ] 表示包含 ,() 表示不包含
if 语句也是语句,可以嵌套到其他的复合语句中

if xxxx:
if yyyy > 0:
print(‘…’)
else:
print(“fjdsfdf”)
else:
print(“hello”)

pass 语句:用来填充语法空白

示例:

如果 成绩在 0~100 什么都不做, 其他提示"您的输入有误"

score = int(input(‘请输入成绩:’))
if 0 <= score <= 100:
else:
print(‘您的输入有误!’)
条件表达式

语法: 表达式x if 条件表达式C else 条件表达式y

执行顺序 :
先判断 条件表达式C 是真值还是假值,
如果 C是真值,则表达式x 执行并返回结果
如果 C是假值,则表达式y 执行并返回结果
表达式 x if C else y。 首先是对条件 C 而非 x 求值。 如果 C 为真,x 将被求值并返回其值;否则将对 y 求值并返回其值。

示例

score = 69
“及格” if 60 <= score <= 100 else “不及格”
‘及格’
s = “及格” if 60 <= score <= 100 else “不及格”
print(s)
及格

练习:商场促销, 满100 减 20, 写一个程序,输入商品的价格,打印出实际支付金额

字符串:字面值(前期知识回顾):‘hello’ “hello” ‘’‘hello’‘’ “”“hello”“”

字符串转义
’ 代表一个单个的 ’
\n

字符串的运算

  • 用于拼接字符串
  • 用于生成重复的字符串

原始字符串(raw 字符串)
以字符r开头的字符串, 其中的 \ 不算转义字符串

字面值格式
r’字符串内容’
r"字符串内容"
r’‘‘字符串内容’’’
r"““字符串内容””"
in / not in 运算符

作用:in 用于序列,字符串,字典中,用于判断某个值是否存在于容器中,如果存在就返回True, 否则返回False
not in 的返回值与 in 相反

示例

s = ‘welcome to beijing!’
‘to’ in s
True
‘weimingze’ in s
False
‘beijing’ not in s
False
‘weimz’ not in s
True

字符串的索引
语法:字符串[整数表达式]
作用:用来获取字符串其中的一个字符

说明
正向索引: 字符串的 正向索引是从0开始的,… 最后一个索引为 len(s)-1
反向索引: 字符串的反向索引是从 -1 开始的,-1 代表最后一个,… -len(s) 代表第一个

示例

s = ‘ABCDE’
s[1]
B
s[1+2]
D
s[-1]
E
注: len(x) 函数可以求取一个字符串的长度

练习:写程序,输入一个字符, 打印字符串的如下内容

  1. 打印这个字符串的第一个字符
  2. 打印这个字符串的最后一个字符串
  3. 如果这个字符串的长度是 奇数,则打印中间这个字符
    用 len(x) 求字符串的长度
    字符串的切片 slice

作用:从字符串序列中取出相应位置的元素,重新组成一个新的字符串

语法:字符串[(开始索引b):(结束索引e)(:(步长s))]
注: () 括起来的内容代表可以省略

说明:
开始索引b是切片切下的开始位置
结束索引e 是切片的终止位置(但不包含终止点)

步长是切片取出数据后向后移动的方向和偏移量
没有步长,相当于步长为1(默认为1)
当步长为正数时,取正向切片
开始索引默认为0, 结束索引是最后一个元素的下一个索引
当步长为负数时,取反向切片
开始索引默认为-1, 结束索引是第一个元素的前一个索引

示例:
# 0 1 2 3 4

s = ‘ABCDE’
s[1:] # ‘BCDE’
s[-2:] # ‘DE’
s[1:4] # ‘BCD’
s[:] # ‘ABCDE’
s[:2] # ‘AB’
s[1:1] # ‘’
s[4:2] # ‘’
s[::] # 等同于 s[::1] ‘ABCDE’
s[::2] # ‘ACE’
s[2::2] # ‘CE’
s[-1::-2] # ‘ECA’
s[::-1] # ‘EDCBA’

练习1:写一个程序,输入一个字符串,把字符串的第一个字符和最后一个字符去掉,打印处理后的字符串

练习2:输入一个字符串, 判断这个字符串是否是回文
上海自来水来自海上
ABCCBA
13531

练习3:BMI (Body Mass Index) 身体质量指数
公式: BMI= 体重 (公斤) / 身高的平方
如: 魏老师 体重 69公斤, 身高 1.73米
BMI = 69 / 1.73 **2
要求: 输入体重和身高,给出体重建议
BMI 值 结果
BMI < 18.5 体重过轻
18.5 < BMI <=24 正常
BMI > 24 体重过重

练习4 : 北京的出租车计价器的规则:3公里以内 收费 13元 起步价,3公里以外, 每公里加收 2.3 元(又称单价)。超过 15 公里以后, 每公里再加收单价的 50% (1.15元) 的空驶费。要求: 输入公里数,打印出费用的金额

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值