第一章
第一个python程序
1.1 print函数
print方法的作用 : 把想要输出的内容打印在屏幕上
print("Hello World")
1.2 输出中文
在Python 2.x版本中,默认的编码方式是ASCII编码方式,如果程序中用到了中文,直接输出结果很可能会出错,比如:
print("你好")
上图报错证明是字符集问题导致
在Python 2.x版本中想要输出中文,解决的办法是,在程序的开头写入如下代码:
# -*- coding:utf-8 -*-
或者
# coding=utf-8
用于向 Python 解释器声明源代码文件所用的编码类型为“utf-8”,如果代码里有中文,打印的时候可以使中文正常显示。
1.3 行和缩进
缩进的空白数量是可变的,一般是使用4个空格键或者1个tab键,但是所有代码块
语句必须是相同
的缩进,这个必须严格执行,不同的缩进会导致程序不能运行,不能混用空格和tab
# 使用4个空格键
if True:
print ("True")
else:
print ("False")
第二章:python注释符
(一)基础内容
注释的作用 : 对其中部分代码的作用进行说明,增强程序的可读性
单行注释 (行注释)
#
2.1 单行注释
2.2 多行注释
多行注释 (块注释)
'''
'''
或者
"""
"""
2.3 快捷键注释
在 Windows 系统中,可以通过鼠标选择需要注释的代码,然后使用<kbd>Ctrl+/</kbd>可以快速注释或取消注释多行代码:
# class MusicPlayer(object):
# # 记录第一个被创建对象的引用
# instance = None
# # 记录初始化执行状态
# init_flag = False
def __new__(cls, *args, **kwargs):
2.4 编码与解码
编码是将字符串转换为字节序列的过程,而解码则是将字节序列转换回字符串的过程。
编码
str = "Hello, 你好!"
encoded_str = str.encode() # 默认使用UTF-8编码
print(encoded_str)
# 输出:b'Hello, \xe4\xbd\xa0\xe5\xa5\xbd!'
解码
str = b'Hello, \xe4\xbd\xa0\xe5\xa5\xbd!'
decoded_str = str.decode() # 默认使用UTF-8解码
print(decoded_str)
# 输出:Hello, 你好!
2.5 debug调试
利用单步执行来验证#号右边的不会被当做程序执行(debug调试)
点击行号和代码执行的空白处,生成断点,然后点击右上角瓢虫式的按钮,打开debug调试模式,点击console控制台,蓝色行首先选中第一行,代表正在准备执行,单击执行下一步,发现直接跳过注释代码,选中下一个即将执行的代码print(“hello”)
三、python的变量
程序就是用来处理数据的,而变量就是用来存储数据的
(一)变量的定义
Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建
在 Python 中,变量就是变量,它没有类型
等号(=)用来给变量赋值。
等号(=)运算符左边
是一个变量名,等号(=)运算符右边
是存储在变量中的值
Python 中使用变量,不需要声明
,直接
为变量赋值即可使用,
单个变量赋值语法:
变量名称 = 值
# 定义一个qq号码
qq_number = "123456"
# 定义一个qq密码
qq_password = "7891011"
# 使用解释器执行,如果要输出变量的内容,必须要要使用print 函数
print(qq_number)
print(qq_password)
多个变量赋值语法
变量名称 = 变量名称 = 变量名称 = 值
a = b = c = 100
变量练习题
可以用其他变量的计算结果来定义变量
需求:
- 苹果的价格是 8.5 元/斤
- 顾客一共买了 7.5斤苹果
- 计算顾客付款金额总数
python实现的程序代码
# 定义苹果的价格
price = 8.5
# 定义买的数量
weight = 7.5
# 定义总金额
money = price * weight
# 输出最后的价格
print(money)
# 变量名 只有在第一次出现 才是定义变量
# 变量名 再次出现,不是定义变量,而是直接使用之前定义过的变量
1.1 变量的命名规范
标识符:
标识符是程序中某一元素(变量、关键字、函数、类、模块、对象)的名字,标识符是一个大的集合,变量只是其中之一,简单通俗的说就是程序员给变量或者函数取得的名字就叫标识符,名字显而易见的就是要见字知意
标识符的组成:
字母,下划线,数字 ,不能以数字开头
标识符由字母( A~Z , a~z )、数字(0-9)、以及下划线(_)组成。
关键字:
python内部自己定义的变量,一般都有指定的功能,所以取变量名要避开这些关键字
# 以下是Python的关键字
import keyword
print(keyword.kwlist)
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
1.2 变量的命名规则
python的变量命名是区分大小写的,按照规则书写可以保持代码的可读性,变量命名时尽量体现出值的数据类型。如命名 count、length 和 size 表明数据类型是数字,命名 name、title 和 message 表明数据类型是字符串,单个字符命名的变量诸如 i、j、k 通常在循环中使用
1.2.1 命名规则1:
1.= 号两边各留一个空格
2.变量名由超过两个以上的单词组成,每个单词之间由下划线链接
3.每个单词都小写
4.first_name,my_school_num
1.2.2 命名规则2:
小驼峰:
1.第一个单词小写开始,后续单词大写
2.firstName
大驼峰:
1.每个单词的首字母都大写
2.FirstName
pycharm小技巧:批量关闭标签页
(二)变量的类型
在内存中创建一个变量,会包括:
- 变量名称
- 变量保存的数据
- 变量存储数据的类型
- 变量的地址 (标示)
变量类型练习题
需求
定义变量保存小明的个人信息
姓名:小明
年龄:18岁
性别:是男生
身高:1.75米
体重:75.0公斤
python代码
在运行的时候,Python 解释器会根据赋值语句等号右侧的数据自动推导出变量中保存数据的准确类型
name = "小明"
age = 18
sex = true
high = 1.75
weight = 75.0
利用单步调试确认变量中保存数据的类型
四、python的数据类型
在Python 中定义变量是不需要指定类型(在其他很多高级语言中都需要)数据类型可以分为 数字型 和 非数字型
(一)数字型
整型(int)
在这里提示在Python2.x中,整数根据保存数值的长度还分为 int(整数) long(长整数)
浮点型 (float )
布尔型 (bool)
真 True 非0数--非零即真 假 False 等同于True的值: -非零数值 -非空字符串 等同于False的值: None; False; 任何为0的数字类型,如0、0.0、0j; 任何空序列,如""、()、[]; 空字典,如{}; 用户定义的类实例,如类中定义了__bool__()或者__len__()方法,并且该方法返回0或者布尔值False。
复数型(complex)
主要用于科学计算,例如:平面场问题、波动问题、电感电容等问题
(二)非数字型
。字符串
。列表
。元组
。字典
(三)type函数查看数据类型
type(name)
(四)不同数据类型之间的计算
- 数字型之间可以直接计算
- 数字类型不能和字符串类型进行计算
- bool类型 True代表1 False代表0
4.1 数据类型计算练习
i = 10
f = 10.5
b = True
print(i + f)
print(i + b)
print(f - b)
4.2 字符串之间的计算
字符串使用+号进行计算是拼接的意思 会生成新的字符串
字符串使用*号进行计算是重复拼接的意思 会生成新的字符串
五)变量的输入
5.1 input函数
input函数:获取用户在键盘上的输入使用 ,输入的任何内容都会被当做字符串
,回结果为字符串 str 类型
函数的定义:函数是把重复使用的代码提前写好,封装起来我们直接用的,不需要重复造轮子
# input输人的任何内容都会被当做字符串 回结果为字符串 str 类型
name = input("请输入用户名")
passwd = input("请输入密码")
print(type(passwd))
<class 'str'>
(六)数据类型转换函数
6.1 int函数
int(x) 将x转换为一个整数
6.2 float函数
float(x) 将x转换为一个浮点数
可以搭配input函数一起使用:
num2 = input("请输入一个整数")
num1 = 10
num3 = num1 + num2
# 使用int将用户输入的内容进行转换
num2 = int(input("请输入一个整数"))
num1 = 10
num3 = num1 + num2
print(num3)
6.3 类型转换练习
需求
收银员输入 苹果的价格,单位:元/斤
收银员输入 用户购买苹果的重量,单位:斤
计算并且 输出 付款金额
第五章 python运算符
(一)python算数运算符
算术运算符包括:加(+)、减(-)、乘(*)、除(/)、取模(%)、幂(**)和取整除(//)
重点记忆:除法符号,除法 / 取整数 //和取余数 % 字符使用*符号表示重复显示指定次数,也就是拼接字符串
代码实例:
(二)python比较运算符
比较运算符包括:等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)
所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量 True 和 False 等价
重点记忆:== = ===这三个符号的区别 =是赋值操作 ==是比较是否相等 ===是恒等于
Python2x中判断不等于还可以使用运算符<>,!= 在Python 2x 中同样可以用来判断不等于
比较运算符练习题
a = 21
b = 10
c = 0
if ( a == b ):
print ("1 - a 等于 b")
三)python逻辑运算符
- 在程序开发中,通常在判断条件时,会需要同时判断多个条件
- 只有多个条件都满足,才能够执行后续代码,这个时候需要使用到 逻辑运算符
- 逻辑运算符 可以把 多个条件 按照 逻辑进行连接,变成更复杂的条件
- Python 中的逻辑运算符 包括:与and 、或or 和 非not 三种
在 Python 中,整数0代表假,整数 1 代表真。除此之外,Python 也把任意的空数据结构视为假,把任何非空数据结构视为真。真和假的概念是 Python 中每个对象的固有属性,
一般来说:
① 数字如果非零,则为真;
② 其他对象如果非空,则为真。
② Python 还有一个特殊对象:None,它总被认为是假。
and
条件1 and 条件2
与/并且
两个条件同时满足,返回True
只要一个不满足,就返回False
not not 条件 非/不是 取反的意思,原来是真的取反就是假的,原来是假的取反就是真的
逻辑运算符练习题
-
1练习1:定义一个整数变量 age,编写代码判断年龄是否正确,要求人的年龄在0-120之间
2.练习2:定义两个整数变量python_score、c_score,编写代码判断成绩,要求只要有一门成绩>60 分就算合格
3.练习3:定义一个布尔型变量 is_employee,编写代码判断是否是本公司员工,如果不是提示不允许入内
(四)python赋值运算符
在Python 中,使用可以给变量赋值在算术运算时,为了简化代码的编写,Python 还提供了一系列的与算术运算符对应的赋值运算符注意:赋值运算符中间不能使用空格。
(五)python身份运算符
身份运算符用于比较两个对象的内存地址是否一致 – 是否是对同一个对象的引用
在Python中针对None比较时,建议使用is判断
is与 == 区别:
is用于判断两个变量引用对象是否为同一个
==用于判断 引用变量的值是否相等
a = [1,2,3]
b = [1,2,3]
if b is not a:
print(a is b)
if b == a:
print(b == a)
False
True
a = 1
b = 2
c = a
print(a is b)
print(a is c)
print(a is not b)
print(a is not c)
False
True
True
False
六)python运算符优先级
以下表格列出了从最高到最低优先级的所有运算符, 相同单元格内的运算符具有相同优先级
第七章:程序执行的原理
了解计算机的核心硬件的工作原理,更有助于我们对python的理解
(一)核心三大硬件
- CPU : 负责处理和计算数据
- 内存 : 临时存储数据,读写速度快,空间小 断电内存中的数据会消失
- 硬盘 : 永久存储数据,读写速度满,空间大
硬盘需要磁片快速旋转,磁头上下移动才能读取数据,相对于内存直接从芯片中读取慢很多
(二)程序执行的过程
- 首先程序执行的过程中主要是靠CPU
- 程序运行执行前是保存在硬盘中的,程序内部存储的是机器代码010
- 程序运行时CPU会把程序复制到内存中
- CPU执行内存中的程序代码
python程序怎么运行呢?
- python是解释型语言,python程序在运行时,CPU会把解释器加载到内存中
- 解释器根据语法规则,从上到下让CPU翻译python程序中的代码
- CPU执行的是翻译后的机器代码010
三)程序的作用
程序的作用就是提供数据处理的能力
- 新闻软件 提供的新闻内容、评论… 是数据
- 电商软件 提供的商品信息、配送信息… 是数据
- 运动类软件提供的运动数据… 是数据
- 地图类软件 提供的 地图信息、定位信息、车辆信息… 是数据
- 即时通讯软件 提供的 聊天信息、好友信息… 是数据
3.1 思考问题一
QQ程序的启动过程
QQ在运行之前,是保存在硬盘中的
运行之后,QQ程序就会被加载到内存中了
3.2 思考问题二
QQ程序的登录过程
2.1 读取用户输入的QQ号码
2.2 读取用户输入的QQ密码
3.3 将QQ号码和QQ密码发送给腾讯的服务器,等待服务器确认用户信息
第七章 变量的格式化输出
Python 输出主要包括标准化输出
、格式化输出
、换行输出
、换行输出
和更换间隔字符输出
。
(一)标准化输出
Python 编程中 print 的用法是输入 print(),括弧中可以是数字、变量、字符串、列表、元组合字典。
需要注意的是:
① print 一定要全部小写;
② print 后边的括弧要在英文状态输入。
print("Hello World") # 可以是字符串
print(7) # 可以是数字
a = 4 # 可以是变量
b = 8
print(a) # 可以是变量
print(a+b) # 可以是数字的运算
print("输出的数字为:", a) # 字符串和变量的组合
print("My lucky number is", " 6 ") # 字符串和数字的组合
(二)格式化输出(%)
作用:输出文字信息的同时,一起输出数据,就需要使用到格式化操作符
% 表示格式化字符串的开始 叫做格式化操作符
包含%的字符串,叫做格式化字符串
不同的字符和%连用,表示不同类型数据使用不同的格式化字符
语法格式如下
print("%格式化字符串 + 其他输出内容" % 变量1)
print("%格式化字符串 + 其他输出内容" % (变量1,变量2...))
number = 6
print("My lucky number is %d" % number)
实例
price = float(input("请输入苹果的价格"))
weight = float(input("请输入苹果的重量"))
money = price * weight
print(money)
# %.2f表示字符串保留小数点后两位 同理%6d表示整数位数保持6位 %06d表示位数不够用0填充
print("苹果单价是 %.2f 元/斤,%.2f 斤的苹果需要支付 %.2f元" % (price, weight, money))
(2)转换标志:-表示左对齐,+表示在转换值之前空白字符)表示正数之前保留要加上正负号空格;0表示转换值若位数不够则用0填充。示例
#指定占位符宽度(左对齐)
2 >>> print ("Name:%-10s Age:%-8d Height:%-8.2f" % ("Aviad",25,1.83))
Name:Aviad Age:25 Height:1.83
#指定占位符(若位数不够则用0填充
>>> print ("Name:%-10s Age:%08d Height:%08.2f" % ("Aviad",25,1.83))
>Name:Aviad Age:00000025 Height:00001.83
(3)点**.**后跟精度值: 如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是则从后面的元组中读取字段宽度或精度
>>> print ("His height is %f m"%(1.83))
>His height is 1.838098 m
>>> print ("His height is %.2f m"%(1.83))
His height is 1.83 m
>>> print ("The String is %.2s"%("abcd"))
The String is ab
# 用*从后面的元组中读取字宽度或精度,第1个参数表示小数点后取多少位,2表示1.83这个字符保留小数点后两位
>>> print ("His height is %.*f m"%(2,1.83))
His height is 1.83 m
格式化字符串练习题
需求
1.定义字符串变量name,输出 我的名字叫 小明,请多多关照!
2定义整数变量student_no,输出我的学号是000001
4.定义一个小数scale,输出数据比例是10.00%
name = "小明"
student_no = 1
scale = 10
print("我的名字叫 %s,请多多关照!,我的学号是 %06d,数据比例是%.02f%%" % (name, student_no,scale))
(三)格式化输出(format)
基本语法是通过 {} 和 : 来代替以前的 %
语法格式为:“{}”.format() format参数下标是从0开始的
format 函数可以接受无限个参数,位置可以不按顺序
3.1 不设置指定位置,按默认顺序
print("{} is a beautiful {}!".format("Beijing","city"))
Beijing is a beautiful city!
3.2 设定指定位置 0 代表Beijing 1代表 city
print("{0} is a beautiful {1}!".format("Beijing", "city"))
print("{1} is a beautiful {2}!".format("Tianjin","Beijing", "city")) # 按照位置参数显示具体的值
3.3 设置位置参数名称
print("{name1} is a beautiful {name2}!".format(name1="Beijing", name2="City"))
3.4 混合使用
不可以索引和默认顺序混合使用,否则会报错
#可以通过索引,参数名混合进行匹配
print("{0} is a beautiful {name}!".format("Beijing", name="city"))
#可以通过默认顺序和参数名混合进行匹配,但命名参数必须写到最后
print("{} is a beautiful {name}!".format("Beijing", name="city"))
3.5 通过对象的属性匹配参数
class Names:
Name1 = "Beijing"
Name2 = "city"
str1 = "{names.Name1} is a beautiful {names.Name2}!".format(names=Names)
print(str1)
3.6 引用参数部分
str1 = "The first letter of '{word}' is '{word[0]}'.".format(word="hello")
print(str1)
# The first letter of 'hello' is 'h'.
3.7 通过字典设置参数
# 匹配字典中的参数
dict = {"name1": "Beijing", "name2": "city"}
str1 = "{name1} is a beautiful {name2}!".format(**dict)
print(str1)
# 执行以上代码,输出结果为:
Beijing is a beautiful city!
site = {"name": "菜鸟教程", "url": "www.runoob.com"}
print("网站名:{name}, 地址 {url}".format(**site))
3.8 通过列表索引设置参数
list = ["Beijing", "city"] #① 匹配列表中的参数
str1 = "{} is a beautiful {}!".format(*list)
str2 = "{1} is a beautiful {0}!".format(*list)
print(str1)
print(str2)
# 执行以上代码,输出结果为:
Beijing is a beautiful city!
city is a beautiful Beijing!
my_list = ['菜鸟教程', 'www.runoob.com']
print("网站名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是必须的
3.9 数字和小数格式化语法
- 使用冒号来规范显示语法的显示格式
- ^, <, > 分别是居中、左对齐、右对齐,后面带宽度
- : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
- 表示在正数前显示 +,负数前显示 -; (空格)表示在正数前加空格
- b、d、o、x 分别是二进制、十进制、八进制、十六进制。
① 保留小数位数
str1 = "π is {:.2f}.".format(3.1415926) #保留两位小数
print(str1)
② 给数字加千位符
str1 = "{:,}".format(900000000)
print(str1)
③ 进制的转换
test1 = "{:b}".format(4) # 将数字4转换为二进制
print(s1)
test2 = "{:o}".format(3) # 将数字3转换为八进制
print(s2)
test3 = "{:x}".format(2) # 将数字2转换为十六进制
print(test3)
3.10 格式的处理
通过<kbd> :数字 </kbd>指定转换后的字符串长度,不足的部分用空格补充:
s = "{:2}b".format('a')
print(s)
# 如果指定的长度小于参数的长度,按照原参数匹配
s1 = "{:2}World".format('Hello')
print(s1)
执行以上代码,输出结果为:
a b
HelloWorld
3.11 字符的填充
可通过 <kbd> :符号^数字 </kbd> 进行字符串的填充,其中数字为填充后的字符串总长度:
s = "{:*^10}".format('Hello')
print(s)
s = "{:-^20}".format('aaaaaaa')
print(s)
执行以上代码,输出结果为:
**Hello***
-------aaaaaaa-------
- 此外我们可以使用大括号 {} 来转义大括号,如下实例:
print ("{} 对应的位置是 {{0}}".format("runoob"))
格式化字符串练习题
需求
1.定义字符串变量name,输出 我的名字叫 小明,请多多关照!
2定义整数变量student_no,输出我的学号是000001
4.定义一个小数scale,输出数据比例是10.00%
name = "小明"
student_no = 1
scale = 10
print("我的名字叫 {name},请多多关照!,我的学号是 {student_no},数据比例是{scale}" fomat (name, student_no,scale))
(三)f-string 格式化字符串
f-string 格式化字符串以 f 开头,后面紧跟着字符串,能隔有空格,否则会报错,字符串中的表达式用大括号 {} 占位符包起来,它会将变量或表达式计算后的值替换进去
name = 'Runoob'
print(f'Hello {name}') # 替换变量
print(f'{1+2}') # 使用表达式
w = {'name': 'Runoob', 'url': 'www.runoob.com'}
print(f'{w["name"]}: {w["url"]}')
a = 10
b = 20
c = 30
print(f"b={b}, c={c}, a={a}")
# 上面的代码等效于:
print("b={}, c={}, a={}".format(20, 10, 30))
执行以上代码,输出结果为:
b=20, c=30, a=10
b=20, c=10, a=30
(四)不换行输出
print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=“”,比如:
print("我")
print("爱", end="")
print("你")
(五)换行输出
print 默认输出是换行的,此外,在变量末尾加上 end=“\n” 可以在多个 print 函数的输出结果中实现换行,比如:
print("我")
print("爱", end="")
print("你", end="\n")
print("们")
转义字符 \n 可以在 print 一次性输出的字符串中间换行,比如:
print("aaaaaaa---------")
print("aaaaaaa\n---------")
# 执行以上代码,输出结果为:
aaaaaaa---------
aaaaaaa
---------
可以借助 for 循环和 while 循环实现换行输出,比如:
for 循环实现换行输出
a = "hello"
for i in a:
print(i)
# while 循环实现换行输出
j = 0
while j <= 4:
print(a[j])
j += 1
(六)实现水平制表符输出
在变量末尾加上 end=“\t” 可以在多个 print 函数的输出结果中实现水平制表符,比如:
print("我", end="\t")
print(end="")
print("你")
# 执行以上代码,输出结果为:
我 你
转义字符 \t 可以在 print 一次性输出的字符串中间实现水平制表符,比如:
print("999999999\t---------")
# 执行以上代码,输出结果为:
999999999 ---------
(七)更换间隔字符输出
默认情况下,print() 函数一次性输出的两个字符串使用空格分隔,在变量末尾加上参数 sep =“” 可以修改间隔字符,比如:
print("www", "runoob", "com")
print("www", "runoob", "com", sep=".")
print("www", "runoob", "com", sep="/")
执行以上代码,输出结果为:
wwwrunoobcom
www.runoob.com
www/runoob/com
第九章:判断语句
直白一点就是条件判断语句,符合条件的才会执行,Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false
(一)if判断语句基础版本
语法格式
if 要判断的条件:
条件成立时,执行这行内容
......
注意:代码的缩进为一个 tab 键,或者4个空格–建议使用空格。在Python 开发中,Tab 和空格不要混用!