Python
分享第二节
最近受邀给团队中的小伙伴们分享Python
知识,本篇文章是第二节课的基本内容。
一、课前准备&回顾
1、根据上次课的安装教程安装好Python
环境
二、课堂主题
第二课主要学习Python
的基础,大体包含:输入与输出、变量、数据类型、运算符、关键字、判断语句、循环语句等Python
基础知识点
三、本节目标
1、掌握Python
书写语法结构以及书写特点
2、掌握Python
基础知识点
3、根据判断语句和循环语句了解程序的执行顺序
四、知识要点
4.1、注释
4.1.1、注释的作用
注释:注释的作用是对代码进行解释和说明,不仅可以提高代码的可读性,也可以方便他人阅读。
对于初学者在开始编程的时候一定要重视注释的书写,尽量把自己的思路通过文字或注释的方式记录下来,方便归纳总结。
4.1.2、Python
中注释的写法
在Python
中,注释分为两种:
- 单行注释符号(#)
- 批量、多行注释符号(通常使用三个双引号或者三个单引号将注释信息包裹)
代码示例:
# 这是一个注释
'''
这是多行注释,用三个单引号
这是多行注释,用三个单引号
这是多行注释,用三个单引号
'''
"""
这是多行注释,用三个双引号
这是多行注释,用三个双引号
这是多行注释,用三个双引号
"""
4.1.3、注释的快捷键
Python
中注释的快捷键是control
+/
4.2、变量
变量:通俗的理解 就是存储程序数据的容器
变量定义的格式:变量名 = 数据(变量名应该简洁且有含义,方便理解)
每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
Python
是弱类型的语言,因此在声明变量是不需要指定变量的数据类型,Python
会根据数据自动推导出数据类型
C中声明变量的写法:
int score = 100
Python
中声明变量的写法:
# 分别定义了四个变量,第一个变量名叫做score,存储的数据是100
score = 100
name = "Timmy"
pi = 3.14
is_show = True
使用type()
方法可以查看变量的数据类型
print("score的数据类型是:" , type(score))
print("name的数据类型是:" , type(name))
print("pi的数据类型是:" , type(pi))
print("is_show的数据类型是:" , type(is_show))
数据类型
Python
中常用的数据类型有一下几个:
类型 | 例子 |
---|---|
整数int |
-100 |
浮点数float |
3.1416 |
字符串str |
'hello' |
列表list |
[1, 1.2, 'hello'] |
字典dict |
{'dogs': 5, 'pigs': 3} |
Numpy数组 | array([1, 2, 3]) |
还有一些其他类型:
类型 | 例子 |
---|---|
布尔型bool |
True, False |
元组tuple |
('ring', 1000) |
集合set |
{1, 2, 3} |
Pandas类型 | DataFrame, Series |
自定义 | Object Oriented Classes |
4.3、变量的命名规则
变量名:只能由字母、数字、下划线组成,但是数字不能作为开头
变量名的命名方式有两种:驼峰命名法和下划线命名法
- 驼峰命名法
- 小驼峰:第一个单词首字母小写,其他单词首字母大写
- 大驼峰:多有单词首字母都大写
- 下划线命名:单词全部使用小写,以下滑线分割
# 小驼峰
myName = "Timmy"
# 大驼峰
MyName = "Timmy"
# 下划线命名--推荐使用
my_name = "Timmy"
# 以下是错误的命名示例
3name = "Timmy" # 以数字开头
na!me = "Timmy" # 名称中间有非法字符
在Python
中,推荐大家使用下划线命名法,在初学编程中,培养良好的编码习惯也是非常重要的一环,对变量的命名也要尤为重视,命名在尽量简洁的。
CODELF:一个自动生成变量名的网站。
4.4、关键字
关键字又叫保留字,在Python
中,具有特殊功能的标识符称为关键字。
关键字是Python
语言自己已经使用的了,不允许开发者自己定义和关键字相同名字的标识符。常见的有def
,if
,try
,class
等。
可以通过代码查询Python
中的关键字
import keyword
print(keyword.kwlist)
# 以下是输出结果:
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', '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']
4.5、常用的数据类型转换
函数 | 说明 |
---|---|
int(x [,base ]) | 将x转换为一个整数 |
float(x ) | 将x转换到一个浮点数 |
complex(real [,imag ]) | 创建一个复数 |
str(x ) | 将对象 x 转换为字符串 |
repr(x ) | 将对象 x 转换为表达式字符串 |
eval(str ) | 用来计算在字符串中的有效Python 表达式,并返回一个对象 |
tuple(s ) | 将序列 s 转换为一个元组 |
list(s ) | 将序列 s 转换为一个列表 |
chr(x ) | 将一个整数转换为一个字符 |
unichr(x ) | 将一个整数转换为Unicode字符 |
ord(x ) | 将一个字符转换为它的整数值 |
hex(x ) | 将一个整数转换为一个十六进制字符串 |
oct(x ) | 将一个整数转换为一个八进制字符串 |
my_str = "1010"
# 把字符串转成 int 类型
num2 = int(my_str)
print(num2)
print(type(num2))
#判断数据是不是指定类型
print(isinstance(num2,int))
4.6、输入和输出
4.6.1、Python
中的输入
Python
中的输入是使用input()
函数
name = input("请输入一个数:")
print(name)
4.6.2、Python
中的输出
Python
中的输入是使用print()
函数,使用方法也很简单,在这里普及一个jupyter的小技巧,如果忘记函数有哪些参数或不知道函数如何使用时,可以在函数前加上一个?
,或者,这样jupyter就会弹出相应的文档,下面是示例。
?print()
#或者
print??
4.7、格式化输出
常用的格式化符号有%s
、%d
、%f
%s
:输出字符串%d
:输出int类型的数字%f
:输出浮点数
name = 'Timmy'
age = 18
print('我叫%s ,年龄%d' % (name,age))
# format 格式化函数
print('我叫{} ,年龄{}'.format(name,age))
print('我叫{na} ,年龄{ag}'.format(na=age,ag=name))
print('我叫{0} ,年龄{1}'.format(age,name))
print('我叫{1} ,年龄{1}'.format(age,name))
4.8、运算符
4.8.1、数学运算符
以下假设变量: a =10, b=20:
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 - 两个对象相加 | a + b 输出结果 30 |
- | 减 - 得到负数或是一个数减去另一个数 | a - b 输出结果 -10 |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 200 |
/ | 除 - x除以y | b / a 输出结果 2 |
% | 取模 - 返回除法的余数 | b % a 输出结果 0 |
** | 幂 - 返回x的y次幂 | a**b 为10的20次方, 输出结果 100000000000000000000 |
// | 取整除 - 返回商的整数部分(向下取整) | 9//2 4 |
4.8.2、比较运算符
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象是否相等 | (a == b) 返回 False。 |
!= | 不等于 - 比较两个对象是否不相等 | (a != b) 返回 true. |
> | 大于 - 返回x是否大于y | (a > b) 返回 False。 |
< | 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。 | (a < b) 返回 true。 |
>= | 大于等于 - 返回x是否大于等于y。 | (a >= b) 返回 False。 |
<= | 小于等于 - 返回x是否小于等于y。 | (a <= b) 返回 true。 |
4.8.3、赋值运算符
以下假设变量a为10,变量b为20:
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
以下实例演示了Python
所有赋值运算符的操作:
4.8.4、Python
逻辑运算符
Python
语言支持逻辑运算符,以下假设变量 a 为布尔类型的 True, b为 False:
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔”与” - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 False。 |
or | x or y | 布尔”或” - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 | (a or b) 返回 True。 |
not | not x | 布尔”非” - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 True |
4.9、Python
中的缩进规则
在讲解if语句与循环语句之前,我们先来了解一下Python
与众不同的缩进规则。
Python
中的缩进决定了代码的作用域范围。这一点和传统的c/Java有很大的不同(传统的c/Java使用花括号花括号{}符决定作用域的范围;python使用缩进空格来表示作用域的范围,相同缩进行的代码是处于同一范围)。
Java条件判断示例:
double score = 95;
if(score>60 && score<=100){
System.out.println("成绩合格")
}else if(score>100){
System.out.println("成绩异常")
}else{
System.out.println("成绩不及格")
}
缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。
通常我们使用四个空格区分每个缩进层次,具体示例如下:
age = 20
if age >= 6:
print("teenager")
4.10、if语句
计算机之所以能做过很多自动化任务,因为它可以自己做条件判断
比如,输入用户年龄,根据年龄打印不同的内容,在Python
程序中,用if
实现,if
语句在SQL
中也有使用,即使从来没有接触过编程的小伙伴应该也不会陌生
首先看下SQL
中的if
条件语句:
if(logical_test,[value_if_true],[value_if_false])
SQL
中的if
判断语句与Excel
中基本一致,下面看一下Python
中的if判断
if <条件1为True>:
[条件成立要执行的语句]
elif <条件2为True>:
[条件成立要执行的语句]
else:
[上述条件均不满足要执行的语句]
看下下面的小例子:
age = 20
if age >= 6:
print("teenager")
elif age >= 18:
print("adult")
else:
print("kid")
if
语句执行的特点:if
语句是从上往下判断,如果在某个判断上是True,那么把该判断对应的语句执行完成后,就忽略掉剩下的elif
和else
4.11、循环
和if
判断语句一样,循环语句也是所有编程语言的核心。
在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。
一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。
循环语句是由循环体及循环的终止条件两部分组成的。
要使用循环语句时,必须要确定循环体及条件(布尔表达式)两个重要因素,亦即首要考虑的是:要重复执行哪些语句,要重复到什么时候为止。
在python中,循环分为两种,一种是for
循环,一种是while
循环,下面我们分别进行介绍
4.11.1、while循环
while
循环的语法:
while 条件:
[条件满足执行的代码]
举个小栗子:
1、输出10次Hello world
n = 1
while n <= 10:
print("正在输出第%d次 Hello world" % n)
n += 1
'''
提问:
1.此时print(n)输出的值是多少
2.如果把print(n)前面加4个空格,输出的情况是什么样的
'''
print(n)
4.11.2、for循环
for
循环和while
循环一样同样可以进行循环,并且是运用最多的循环方式。它有一项非常实用的功能——遍历 。
在Python
中for
循环可以遍历任何序列项目,如字符串,或者今后会学到的列表。
for
循环的语法:
for X in ...:
[循环执行的代码]
如果遍历列表,就会将列表中的元素全部访问一遍
如果遍历字符串,就特指将自身的所有字符都全部访问一遍
下方的代码会输出什么?
names = ['Michael', 'Bob', 'Tracy']
for i in names:
for k in i:
print(k)
print()
如果我们想计算1-10的整数之和,可以用一个sum
变量做累加
sum = 0
for i in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
sum += i
# 也可以写成 sum = sum + i
print(sum)
Python
还提供了一个range()
函数,可以配合我们的for
循环使用,例如:
for i in range(5):
print(i)
#效果等价于
i = 0
while i < 5:
print(i)
i += 1
range()
函数经常配合for循环使用,需要注意的是,range()
函数默认是从0开始的,而且属于[start,end)
这种左闭右开区间。
4.11.3、break
在循环中,break
语句用于提前退出循环。
现在考虑这样一个问题,现在想找在数字30到70之间第一个可以被17整除的数,如果有则直接返回这个数,然后结束本次循环。那么这个程序应该怎么写呢?
for i in range(30, 71):
if i%17 == 0:
print(i)
# 使用break直接强制跳出循环
break
print("循环结束了")
上面的代码输出了什么?
因为break
直接跳出了循环,所以break
后面的语句不会被执行
4.11.4、continue
在循环过程中,也可以通过continue
语句,跳过当前的这次循环,直接开始下一次循环。
大家在思考一下,怎样输出1-100中的所有的偶数呢?
for i in range(101):
if i%2 != 0:
continue
print(i)
五、总结
1、本次分享的大部分知识点都是重点,都是后面学习离不开的基础语法。
2、需要理解break
和continue
的区别与在循环中的使用
3、尽量自己动手实践一遍,练习是学习编程最简单的途径
六、作业
1、从键盘输入一个正整数年份,判断该年份是否是闰年,判断闰年的方法如下:
2、实现模拟登录功能:实现用户输入用户名和密码,当用户名为shein且密码为888888时,显示登录成功,否则显示登录失败,失败时允许重复复输入三次,三次全部错误后提示“账户已锁定!”
3、使用for循环和range实现输出1-2+3-4+5-6+99-100
的和
4、使用循环打印99乘法表,类似下图
七、分享
马上快过年了,给有买火车票需求的小伙伴推荐几个软件,不仅不需要分享凑人数,也比携程、飞猪等等等等的软件成功率高的多,而且免费。
第一个:分流抢票,客户端工具,基于微软.Net开发的抢火车票程序,电脑小白也可以轻松抢到回家的票
第二个:testerSunshine Python
写的抢票软件,目前已经start接近24.8万,fork7.8k,还会继续上涨!是一位叫文贤平的程序员,项目名称很有档次,直接明了,就叫“12306”,功能一直在更新,2018年初开始提交,最近的一次提交是几天前,看得出很用心。
第三个:py12306 名叫py12306购票助手。就是说,一台机器抢不到,可以让许多硬件一起跑。它还支持多任务 (多班列车) 、多日期、多账号一起查。另一个机智的功能是,同时观察多个始发站和到达站的组合。第三个项目是在第二个项目的基础之上做的,所以第二个项目有的功能,第三个项目都有。但是第三个项目的一些功能某程度上比第二个项目更加强大一些。
后两个使用起来稍微有些复杂,有需要的小伙伴自行研究,如果有问题随时来找我。