Python分享-2-基础知识

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?? 

1577604390445

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 <条件1True>:
    [条件成立要执行的语句]
elif <条件2True>:
    [条件成立要执行的语句]
else:
    [上述条件均不满足要执行的语句]

看下下面的小例子:

age = 20
if age >= 6:
    print("teenager")
elif age >= 18:
    print("adult")
else:
    print("kid")

if语句执行的特点:if语句是从上往下判断,如果在某个判断上是True,那么把该判断对应的语句执行完成后,就忽略掉剩下的elifelse

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循环一样同样可以进行循环,并且是运用最多的循环方式。它有一项非常实用的功能——遍历 。

Pythonfor循环可以遍历任何序列项目,如字符串,或者今后会学到的列表。

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、需要理解breakcontinue的区别与在循环中的使用

3、尽量自己动手实践一遍,练习是学习编程最简单的途径

六、作业

1、从键盘输入一个正整数年份,判断该年份是否是闰年,判断闰年的方法如下:

  1. 普通年能被4整除且不能被100整除的为闰年。(如2004年就是闰年,1900年不是闰年)
  2. 世纪年能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)

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购票助手。就是说,一台机器抢不到,可以让许多硬件一起跑。它还支持多任务 (多班列车) 、多日期、多账号一起查。另一个机智的功能是,同时观察多个始发站和到达站的组合。第三个项目是在第二个项目的基础之上做的,所以第二个项目有的功能,第三个项目都有。但是第三个项目的一些功能某程度上比第二个项目更加强大一些。

后两个使用起来稍微有些复杂,有需要的小伙伴自行研究,如果有问题随时来找我。


文章作者: Yuhao Wang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Yuhao Wang !
  目录