本文纯记录自己学习过程,如有表述有误感谢指正!
目录
一、Python环境搭载
Python 官网:Welcome to Python.org
Pycharm:http://www.jetbrains.com/pycharm/download (个人练习用社区版)
二、注释
多行注释可以用多个 # 号,还有 ''' 和 """
注释不影响代码的执行结果
三、变量的定义
概念:存储计算结果或者表示某个数值
定义:变量名 = 数据值
name = '张三' # 定义一个变量保存名字
age = 20 # 单等号用于赋值,不具备比较功能
print(name) # 输出变量中存储的数据 张三
print('name') # 输出引号中的内容 name
print(age) # 打印年龄
变量名的命名规范
1.变量名
2.遵循标识符规则
3.见名知意
4.命名习惯
- 驼峰命名法 - ⼤驼峰, 每个单词的首字母都⼤写 MyName
- ⼩驼峰, 第⼀个单词的⾸字⺟⼩写,其余单词⾸字⺟⼤写 myName
- 下划线连接 单词与单词之间使⽤下划线连接, python 主要使⽤这一种
标识符规则:
- 由字母、数字和下划线组成,
- 不能以数字开头
- 不能使⽤ Python内置的关键字
- 区分⼤⼩写
- 不建议使用中文
三种波浪线
红色波浪线:代码错误,必须解决,否则影响代码的执行
IndentationError:unexpected indent 代码的缩进出错,代码书写应该顶格
灰色波浪线:代码格式不规范,不影响代码的执行
PEP 8: E265 block comment should start with '# '
示例:注释 # 和文字之间没有空格
绿色波浪线:不影响代码执行,pycharm判别单词不正确
示例:这里本来要打印 Hello world!
四、数据类型
数据类型分类
查看数据类型
语法:type(数据/变量)
注意: 该函数本身不具备输出功能, 需要配合print()函数使用!
# 变量存储type(数据)语句的结果
int_type = type(666)
float_type = type(13.14)
string_type = type("葡萄啵啵冻") # string_type 表示用一个变量去接收一个执行的结果 type()语句会给出结果,(返回值)
print(int_type)
print(float_type)
print(string_type)
执行结果如图:
# 使用type(变量)语句,查看变量中存储的数据类型信息
name = "葡萄"
name_type = type(name)
print(name_type)
执行结果如图:
数据类型转换
将一种数据类型转换成另一种数据类型
浮点型转换为整型示例:结果输出为整型
score = 99.5
new_score = int(score)
print(type(new_score), new_score)
交互运行Python代码
进行小的代码验证,每行代码都会有一个执行结果
五、输入
使⽤函数 input()
变量 = input('提示信息')
1, 代码从上到下执⾏, 当代码执⾏遇到 input 的时候,会暂停代码的执行,等待⽤户的输入
2, 在输入的过程中,如果遇到回⻋键,表示本次输入结束
3, 使⽤ input 获取的内容, 都是字符串类型,即 str
# 从键盘录入你的姓名
name = input('请输入你的姓名:')
print(type(name), name) # 打印类型和变量的值
六、输出
Python 中想要进⾏输出,使⽤的函数就是 print
print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="":
x = "a"
y = "b"
print(x, end=" ")
print(y)
字符串的拼接可以用以下两种方式:
- 字符串.format()
- f-字符串
name = "小H"
year_born = 1996
salary = 16000
print("姓名: {}, 出生年份: {}, 月薪是: {}" .format(name, year_born, salary))
print(f'姓名: {name}, 出生年份: {year_born}, 月薪是: {salary}')
七、运算符
算术运算符
优先级: () > ** > * / // % > + -
% 的使⽤场景: 判断⼀个数字是不是偶数, 能被 2 整除的数是偶数
数字 除以 2 余数是 0
# 算术(数学)运算符
print("1 + 1 = ", 1 + 1)
print("2 - 1 = ", 2 - 1)
print("2 * 1 = ", 2 * 1)
print("2 / 1 = ", 2 / 1)
print("11 // 2 = ", 11 // 2) # 取整
print("11 % 2 = ", 11 % 2) # 取余
print("2 ** 2 = ", 2 ** 2) # 平方
比较运算符
>、<、>=、<= 只能是相同类型之间进⾏⽐较 (数字和字符串之间不能使⽤)
# 比较运算符的使用:通过比较运算得到布尔类型
# ==、!=、>、<、>=、<=
num1 = 10
num2 = 10
print(f"10 == 10 的结果是:{num1 == num2}") # 结果返回是True
num3 = 10
num4 = 15
print(f"10 == 15 的结果是:{num3 == num4}") # 结果返回是False
赋值运算符和复合赋值运算符
# 复合赋值运算符
num = 4
num += 2 # num = num + 2
print("num += 1:", num)
num -= 1 # num = num - 1
print("num -= 1:", num)
num *= 4
print("num *= 4:", num)
num /= 2
print("num /= 2:", num)
num //= 4
print("num //= 4:", num)
num **= 2
print("num **=2:", num)
逻辑运算符
and or not 是关键字
- and 逻辑与 并且, 连接两个条件, 全True为True, 一假为假
- or 逻辑或 或者, 连接两个条件, 一真为真,全假为假
- not 逻辑非 取反, 本来是 True, 加上not 变为False
逻辑与示例:
# and 逻辑与 全真为真
print(1 > 0 and 2 > 0) # 全真 输出True
print(1 > 0 and 2 < 0) # 一假和全假 输出False
print(1 < 0 and 2 > 0)
print(1 < 0 and 2 < 0)
逻辑或示例:
# or 逻辑或 两假才为假
print(1 > 0 or 2 > 0) # 全真 输出True
print(1 > 0 or 2 < 0) # 一假 输出True
print(1 < 0 or 2 > 0)
print(1 < 0 or 2 < 0) # 两假 输出False
逻辑非示例:
# not 逻辑非 真变假,假变真
print(not True)
print(not False)
逻辑运算符的优先级
() >not >and >or
意思是在逻辑的混合运算中,先计算() 内的表达式,在计算not,在计算and,最后计算or。
print(2 > 0 and 3 < 0 or 3 < 0) # 输出False
print(2 > 0 or 3 < 0 and 3 < 0) # 输出True
print(('test' == 'Test') or 1 != 1.0 and 2 == 2.0) # 1! = 1.0 为 True (数据类型不一致)
八、判断语句
if 语句的基本结构
- 语法
if 判断条件:
判断条件成⽴,执⾏的代码
# 1, if 语句后边需要⼀个冒号 :
# 2, 冒号之后 需要回车缩进(在 pycharm 中会⾃动的添加)
# 3, 处在 if 语句的缩进中的代码 可以称为是 if 语句的代码块(多⾏代码)
# 4, if 语句的代码块中的代码,要么都执⾏,要么都不执⾏
# 5, 如果某行代码和if 的判断⽆关,就不需要写在 if 的 缩进中
案例:
1. 获取⽤户输⼊的⽤户名信息
2. 如果⽤户名信息是 admin, 就在控制台输出 "欢迎admin登录"
username = input("请输入用户名:")
if username == "admin":
print(f"欢迎{username}登录")
if else 结构
- 语法
# if else 如果 ... 否则 ....
if 判断条件:
判断条件成⽴,执⾏的代码
else:
判断条件不成⽴,执⾏的代码
# 1, else 是关键字, 后⾯需要 冒号
# 2, 存在冒号,就需要回车和缩进
# 3, 处于 else 缩进中的代码 ,称为是 else 语句的代码块
# 4, else 不能单独使用 必须配合 if 使⽤, 并且 else 要和 if 对⻬
# 5, if 和 else 之间不能有顶格书写的东西
案例:
1. 获取⽤户输⼊的⽤户名信息
2. 如果⽤户名信息是 admin, 就在控制台输出 "欢迎admin登录"
3. 如果⽤户名信息不是 admin, 就在控制台输出"⽤户名错误!"
username = input("请输入用户名:")
if username == "admin":
print(f"欢迎{username}登录")
else:
print("用户名错误!")
if 和逻辑运算符结合
案例一:
1. 获取⽤户输⼊的⽤户名和密码
2. 判断⽤户名是 admin 并且密码是 123456 时, 在控制台输出: 登录成功!
3. 否则在控制台输出: 登录信息错误!
name = input('请输入用户名:')
pwd = input('请输入密码:')
if name == 'admin' and pwd == '123456':
print('登录成功!')
else:
print('登录信息错误!')
案例二:
1. 定义两个整数变量python_score、c_score,使⽤ input 获取成绩 编写代码判断成绩
2. 要求只要有⼀⻔成绩 > 60 分就输出合格
python_score = int(input("输入python课成绩:")) # 数据类型转换
c_score = int(input("输入C语言成绩:"))
if python_score > 60 or c_score > 60:
print("合格!")
if elif else 结构
- 语法
# if elif else 如果 ... 如果 ... 否则 .... # 多个如果之间存在关系
if 判断条件1:
判断条件1成立,执⾏的代码
elif 判断条件2: # 判断条件1 不成⽴
判断条件2成⽴,执⾏的代码
elif .... :
pass
else:
以上判断条件都不成立,才会执⾏的代码
# 1, elif 是关键字, 后边需要冒号, 回车和缩进
# 2, if elif else 的代码结构, 如果某⼀个条件成立,其他的条件就都不再判断
练习
1. 定义 score 变量记录考试分数
2. 如果分数是 ⼤于等于 90分 显示 优
3. 如果分数是 ⼤于等于 80分 并且 ⼩于 90分 显示 良
4. 如果分数是 ⼤于等于 70分 并且 ⼩于 80分 显示 中
5. 如果分数是 ⼤于等于 60分 并且 ⼩于 70分 显示 差
6. 其它分数显示 不及格
score = int(input("输入考试分数:"))
if score >= 90:
print('优')
elif score >= 80:
print('良')
elif score >= 70:
print('中')
elif score >= 60:
print('差')
else:
print('不及格')
Debug调试代码
使⽤ debug 的⽬的就是查看代码的执行过程
- 步骤
1. 打断点
断点的意义是, debug 运⾏的时候, 代码会在断点出停下来不执⾏。如果是想要查看代码的执⾏过程, 建议将断点放在第⼀⾏在代码 和⾏号之间 点击,出现的红⾊圆点 就是断点, 再次点击可以取消
pycharm 软件存在⼀个问题, 想要 debug 运⾏,可能⾄少需要两个断点。
2. 右键 DEBUG 运行
3. 单步执行,查看执⾏过程
if 嵌套
在⼀个if(elif else) 语句中嵌套另⼀个 if(elif else ) 语句
判断条件存在递进关系才会使⽤. 即只有第⼀个条件成⽴,才会判断第⼆个条件
- 语法
if 判断条件1:
判断条件1成⽴,执⾏的代码
if 判断条件2:
判断条件2成⽴,执⾏的代码
else:
判断条件2不成⽴,执⾏的代码
else:
判断条件1不成⽴,执⾏的代码
案例练习:
假定某⽹站⽤户名固定为 'admin', 密码固定为'123456', 验证码 固定为 '8888'
1. 获取⽤户输⼊的⽤户名,密码和验证码
2. 先判断验证码是否正确,如果正确打印输出验证码正确,再判断⽤户名和密码是否正确
3. 如果验证吗不正确,直接输出验证码不正确,请重新输⼊
# 获取用户输入的用户名,密码和验证码
name = input('请输入用户名:')
pwd = input('请输入密码:')
code = input('请输入验证码:')
if code == '8888':
print('验证码正确')
if name == 'admin' and pwd == '123456': # 判断用户名和密码是否正确
print('登录成功')
else:
print('用户名或密码错误')
else:
print('验证码不正确,请重新输入')
案例:石头剪刀布
1.控制台出拳(⽯头1/剪⼑2/布3) player = input()
2. 电脑出拳 computer = 电脑的结果
3. 判断胜负
3.1 玩家胜利情况
(1)玩家出⽯头, 电脑出剪⼑ player == 1 and computer == 2
(2)or 玩家出剪⼑, 电脑出 布 player == 2 and computer == 3
(3)or 玩家出布, 电脑出 ⽯头 player == 3 and computer == 1
3.2 平局 玩家和电脑出的内容⼀样, player == cpmputer
3.3 电脑胜利 else:
import random
# 产生随机数
computer = random.randint(1,3)
player = int(input('玩家请出拳 石头1/剪刀2/布3:'))
if (player == 1 and computer == 2) or \
(player == 2 and computer == 3) or (player == 3 and computer == 1):
print('玩家胜利')
elif player == computer:
print('平局')
else:
print('电脑胜利')
九、循环语句
while循环语句
- 语法
#1. 循环的初始条件(计数器)
# 2. 循环的终⽌条件
while 判断条件:
判断条件成⽴执⾏的代码
判断条件成⽴执⾏的代码
# 3. 计数器加1
while循环示例:
# 定义计数器
i = 0
# 循环的终止条件 循环3次终止
while i < 3:
print("今天星期三")
# 计数器 +1 (不写这条会陷入死循环)
i += 1
死循环和限循环 在程序执⾏层⾯上看起来是⼀样的, 都是代码⼀直执⾏不能停⽌.
- 死循环: 是由于写代码的⼈不⼩⼼造成. bug
- ⽆限循环: 是写代码的⼈故意这么写.
- ⽆限循环中,⼀般会存在⼀个 if 判断语句, 当这个判断语句的条件成⽴, 执⾏ break 语句,来终⽌循环.
- 关键字 break: 当程序代码执⾏遇到 break, break 所在的循环就会被终⽌执⾏.(终⽌循环)
- 关键字 continue: 结束本次循环,继续下⼀次循环
- break 和 continue 只能⽤在循环中.
案例一:用while循环实现计算1~100的整数和
# 定义计数器
i = 1
sum = 0 # 定义变量 保存求和结果
while i <= 100: # 书写判断条件
sum += i
i += 1
# 求和的结果只打印一次,放在循环的外边
print(f"1-100的和为:{sum}")
案例二:猜数字游戏
设置一个范围为1-100的随机整数变量,通过while循环,配合input语句,判断输入的数字是否等于随机数
1.无限次机会,直到猜中为止
2.每一次猜不中,会提示大了小了
3.猜完数字后,提示猜了几次
# 获取范围在1-100的随机数字
import random
num = random.randint(1,100)
# 定义一个变量,记录猜测了几次
count = 0
# 通过一个布尔类型的变量,做循环是否继续的标记
flag = True
while flag:
guess_num = int(input("输入你要猜测的数字:"))
count += 1
if guess_num == num:
print("猜中啦!")
# 结束循环
flag = False
else:
if guess_num > num:
print("猜大啦")
else:
print("猜小啦")
print(f"你总共猜测了{count}次")
for 循环语句
for 循环遍历字符串
- 语法
for 变量 in 字符串:
重复执⾏的代码
# 1, 字符串中存在多少个字符, 代码就执⾏多少次
# 2, 每次循环 会从字符串中取出⼀个字符保存到前边的变量中
# 3, for 和 in 都是关键字
练习1:用于打印字符串中的每个字符
name = "huyueyue"
for x in name:
print(x)
以上代码执行输出结果为:
h
u
y
u
e
y
u
e
练习2:数一数有几个a
# 定义一个字符串变量word
word = "abandon"
# 定义一个计数器变量count,用于记录字母"a"出现的次数,初始值为0
count = 0
# 使用for循环遍历字符串word中的每一个字符
for x in word:
if x == "a":
# 每当找到一个"a",就将计数器count的值增加1
count += 1
print(f"{word} 中共含有{count}个字母a")
for 指定次数的循环
- 语法
for 变量 in range(n): # n 就是要循环的次数
重复执⾏的代码
# range(n) 可以⽣成 [0, n) 的整数的序列, 不包含 n
示例:for循环实现1~100的整数和【整数范围值可以配合 range() 函数使用】
# 定义变量保存求和的结果
num = 0
for i in range(101): # range(101)用于生成1到100(不包括101)的整数
num += i
print('求和的结果为:', num)
循环嵌套
for循环语句和while循环语句都可以嵌套,并且它们之间也可以相互嵌套
案例一:while循环打印九九乘法表
# 定义外层循环
i = 1
while i <= 9:
# 定义内层循环的控制变量
j = 1
while j <= i:
# 内层循环print语句不换行,且通过\t制表符对齐
print(f'{i} * {j} = {i * j}', end="\t")
j += 1
# 跳出内层循环
i += 1
print() # 输出换行
案例二:for循环打印九九乘法表
# 外层循环控制行数
for i in range(1,10):
# 内层循环控制每一行输出的数据
for j in range(1,i+1):
# 在内层循环输出每一行内容
print(f"{j} * {i} = {i * j}", end="\t")
print()
以上代码执行输出结果为:
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
十、跳转语句
break 语句
可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
while 循环使用break跳转语句的形式如下:
- 语法
while 表达式1:
语句块
if 表达式2:
break
while循环使用break跳转语句示例:
n = 5
while n > 0:
n -= 1
if n == 2:
break
print(n)
print('循环结束。')
输出结果为:
4
3
循环结束。
for循环使用break跳转语句的形式如下:
- 语法
for 迭代对象 in 对象:
if 表达式:
break
for循环使用break跳转语句示例:
for i in range(0, 10):
print('i的值为: ', i)
if i == 2:
# 执行该语句时结束循环
break
continue 语句
用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
while 中使用 continue:
n = 5
while n > 0:
n -= 1
if n == 2:
continue
print(n)
print('循环结束。')
输出结果为:
4
3
1
0
循环结束。
pass语句
pass是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句,如下实例:
for循环输出1~10的偶数,在不是偶数时,应用pass语句占个位置
for i in range(1, 10):
if i % 2 == 0:
print(i)
else :
pass
print("执行pass块")