Python基本语法
这一章我们主要来学习Python语言使用的基本语法,便于以后读写Python代码。当然我们只学习最重要的部分。
Python基本数据类型和运算符
Python中的变量需要先声明后使用。看下面一段代码:
counter = 100 # 整型变量 int
miles = 1000.0 # 浮点型变量 float
name = "fairy" # 字符串 str,注意字符串既可以用双引号,也可以用单引号,"fairy"和'fairy'在python里是等同的
flag = True # 布尔类型 bool,其值仅可以为True或False
print (counter)
print (miles)
print (name)
执行该代码可以得到:
(base) PS C:\Users\15617> 100
(base) PS C:\Users\15617> 1000.0
(base) PS C:\Users\15617> fairy
这段代码中声明并赋值了整型变量counter,浮点型变量miles,字符串类型变量name,和布尔(Bool)类型的变量flag,然后调用Python自带的print函数输出各变量。函数的概念我们后面会讲,这里只使用不讨论。
注意布尔类型变量的值仅可为True或False,在运算和判断中等价于1和0,用于标记“是”和“非”。
整型、浮点型可以用运算符进行各种运算,如以下代码:
a = 10
b = 21
c = a # "="是赋值符号,也是一种运算符
c = a + b # 加法
c = a - b # 减法
c = a * b # 乘法
c = a / b # 除法
c = a % b # 取模,返回a除以b得到的余数
c = a ** b # 幂运算,返回a的b次幂
c = a // b # 整除运算,将a/b的商向下取整,例如,9/2=4.5,9//2=4
字符串常见的运算符和运算如下:
a = "mi"
b = "Xiao mi"
c = b + a # 字符串拼接,得到的c为新字符串"Xiao mimi"
c = a[1] # 通过索引获取字符,得到的字符c="i",字符串中的字符从左到右索引分别为0,1,2,...
c = b[0:5] # 字符串截取,这里截取了第0~4个字符,得到的字符串c="Xiao ",注意不包括第5个字符,注意空格也是字符
c = a in b # 成员运算,如果字符串a存在于字符串b中,则c为布尔类型的True,否则为False
咪咪可以试着更改一下参数或者a, b的值,运行一下代码,输出c的值,看看是否符合自己的预期。
总结与延申:
- 这一节我们学习了基本变量的声明和计算,包括整数、浮点数、字符串、布尔类型等,加减乘除模,字符串的查询拼接等等;
- Python中的一切运算最终都要落到变量的运算上来,所以如果想对变量做某种处理而不知道该怎么处理,就可以百度或者谷歌啦。
小练习:
现在我们来做两个小练习,巩固一下学到的知识:
- 已知三角形的三边长a=5, b=6, c=7,怎样在Python中计算三角形的面积?(提示,可以采用海伦公式)
- 假设现在变量x=10,y=20,怎样在Python中把x和y的值交换?
Python逻辑运算
假设x为10,y为20,Python中常见的逻辑运算符有以下几种:
运算符 | 逻辑表达式 | 描述 | 例子 |
---|---|---|---|
and | x and y | 布尔”与” - 如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值。 | (x and y) 返回 20 |
or | x or y | 布尔”或” - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。 | (x or y) 返回 10 |
not | not x | 布尔”非” - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(x and y) 返回 False |
下面这段代码说明一切啦:
a = 10
b = 20
if ( a and b ):
print ("1 - 变量 a 和 b 都为 true")
else:
print ("1 - 变量 a 和 b 有一个不为 true")
if ( a or b ):
print ("2 - 变量 a 和 b 都为 true,或其中一个变量为 true")
else:
print ("2 - 变量 a 和 b 都不为 true")
# 修改变量 a 的值
a = 0
if ( a and b ):
print ("3 - 变量 a 和 b 都为 true")
else:
print ("3 - 变量 a 和 b 有一个不为 true")
if ( a or b ):
print ("4 - 变量 a 和 b 都为 true,或其中一个变量为 true")
else:
print ("4 - 变量 a 和 b 都不为 true")
if not( a and b ):
print ("5 - 变量 a 和 b 都为 false,或其中一个变量为 false")
else:
print ("5 - 变量 a 和 b 都为 true")
Python 数据类型转换
Python中的数据可以进行数据类型转换,需要分别采用int float str bool这样的关键字。如以下代码:
a = 520
print(str(a))
print(float(a))
print(bool(a))
a = 13.14
print(int(a))
print(str(a))
print(bool(a))
a = '9.99'
print(float(a))
print(int(float(a)))
print(bool(float(a)))
a = True
print(int(a))
print(float(a))
print(str(int(a)))
print(str(float(a)))
做数据类型转换只需要使用关键字括号+参数的形式即可。注意由一个浮点数构成的字符串转为整数时,需要先转为浮点数,再转为整数。
Python基本数据结构
上一节我们学的是基本变量的赋值和运算规则,然而一个变量一个变量命名太慢了,如果我们有一大批数据需要存储,就很难给一个一个数据都分别设置变量来存储。这时候我们就需要数据结构来进行统一操作和处理。
Python中有四种基本的数据结构:列表,元组,字典,集合,如下面的代码所定义的:
list = ["Xmm", 1994, 4.16, True]
# 列表中的元素可以为上一节讲的各种数据类型
tuple = ("Gs", 1995, 2.28, True)
# 元组和列表一样,区别仅仅在于元组中的值定义好之后无法更改
dictionary = {"name":"跟油油学Python", 2:8.15, "site":"formi_python"}
# 字典用于建立自定义的对应关系,每组对应关系包含一个key一个value,在冒号前后;key和value的值均可为上一节讲的各种数据类型
set = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
# 集合是一个无序的不重复元素集,每个元素可为上一节讲的各种数据类型。
我们只介绍最常见的数据结构list的最常见的用法,别的数据结构我们知道有它们的主要特性就好啦,需要用的时候再学习:
list = ['red', 'green', 'blue', 'yellow', 'white', 'black'] # 一个包含7个字符串的列表
# 列表查询
print(list[0]) # 输出list[0],即第0个元素'red'
print(list[2]) # 输出list[2],即第2个元素'blue'
print(list[-1]) # 输出第-1个元素,即倒数第一个元素'black'
print(list[-2]) # 输出第-2个元素,即'white',其他以此类推
print(list[1:4]) # 输出第1~3个元素,即['green', 'blue', 'yellow'],注意得到的结果是一个新的list
print(list[1:-2]) # 输出第1~倒数第3个元素,即['green', 'blue', 'yellow'],注意得到的结果是一个新的list
print(list[3:]) # 输出第3个以及后面的所有元素,即['yellow', 'white', 'black'],注意得到的结果是一个新的list
# 列表修改
list[2] = 'pink' # 将第2个元素赋值为'pink'
print(list) # 猜猜输出结果是什么?
list.append('orange') # 在列表末尾加入元素'orange'
print(list) # 猜猜输出结果是什么?
del list[2] #删除列表第2个元素
print(list) # 猜猜输出结果是什么?
# 列表脚本操作符
list1 = [1, 2, 3]
list2 = [4, 5, 6]
print(list1 + list2) # "+"可以将list1和list2拼接为新的list
print(3 in list1) # "in"可以判断一个元素是否存在于一个list中,返回一个布尔类型的True或False,这里输出True
# 列表常用函数
print(len(list)) # len()函数可以得到列表中元素的个数,返回值是整型
print(max(list)) # max()函数返回list中元素的最大值
print(min(list)) # min()函数返回list中元素的最小值
试着运行一下这段代码,看得到的效果和我们预期的一样不一样吧~
注意这里都是用print()函数将结果直接输出出来了,当然也可以把结果赋给新的变量。
总结与延申:
- 这一节我们学习了基本数据结构及操作,主要是list的操作,数据结构主要是为了方便大规模处理数据而存在的;
- 每个数据结构在Python中都有许多已经写好的函数可以进行处理,例如len(), max(), min()等,比较共性的功能基本都不需要我们自己去实现,百度或者谷歌一下就会用啦。
小练习:
- 请咪咪同学在Python中声明一个长度为10的list,前两个元素分别为数字0和1。然后通过计算得到其他元素的值,要求从第三个元素开始,每个元素都等于前两个元素之和。即“斐波那契数列”。
- 对上述得到的斐波那契数列list进行翻转。
Python条件语句
有时候我们只在一定条件下才做运算和处理,这个时候就需要条件语句。
Python中的条件语句if用法如下:
age = int(input("请输入你家猪猪的年龄: "))
print("")
if age <= 0:
print("你是在逗我吧!")
elif age == 1:
print("相当于 14 岁的人。")
elif age == 2:
print("相当于 22 岁的人。")
else:
human = 22 + (age -2)*5
print("对应人类年龄: ", human)
### 退出提示
input("点击 enter 键退出")
比较简单易懂。
Python for循环语句
循环语句我们之前在学写乘法口诀表的时候有过接触了,这里再细致看一下。
先来看我们熟悉的for循环,它的一般格式如下:
for iterating_var in sequence:
statements(s)
它的执行流程图是这样的:
下面这份代码里的两个例子是for循环最常用的用法:
characters_of_fairy = ["beautiful", "clever", "lovely", "ambitious"]
for character in characters_of_fairy:
print(character)
print()
for i in range(len(characters_of_fairy)):
print(characters_of_fairy[i])
print()
Python while循环
while循环与for循环大同小异:
下面这个例子演示了使用while循环从1累加到100:
sum = 0
counter = 1
while counter <= 100:
sum = sum + counter
counter += 1
print(sum)
是不是很简单呀😆😆
Python 循环嵌套
Python的循环嵌套我们前面也已经认识过了,它是把内层循环当作了外层循环的循环体。Python允许任意层数的循环嵌套,例如双层for循环:
for iterating_var in sequence:
for iterating_var in sequence:
statements(s)
statements(s)
双层while循环:
while expression:
while expression:
statement(s)
statement(s)
双层循环的执行流程图如下:
当然for循环也可以和while循环互相嵌套。
作为一个小练习,我们再来复习一下Python正向和反向输出乘法口诀表吧😄😄
break, continue 与 pass
在循环语句中还有两个常用的关键字,分别是break和continue。其中break用于立刻结束当前循环转而执行后面的语句,continue用于结束本轮循环,继续下一轮循环。我们通过下面这两个例子来理解:
break语句:
n = 5
while n > 0:
n -= 1
if n == 2:
break
print(n)
print('循环结束。')
continue语句:
n = 5
while n > 0:
n -= 1
if n == 2:
continue
print(n)
print('循环结束。')
小仙女可以分别执行这两份代码,看看结果有什么不同呢😜😜
而pass语句表示空语句,什么也不做,它的作用是占位。因为我们知道Python里面的循环不可以没有循环体,if语句也不可以没有判定成功后的执行内容,自定义函数也不可以为空,所以如果我们需要一个空循环,或者空函数,或者空的if语句,就需要用到pass:
如以下语句是合法的:
for i in range(10):
pass
if 3 > 2:
pass
def mymax(a, b):
pass
而以下语句是非法的:
for i in range(10):
if 3 > 2:
def mymax(a, b):
大练习
请咪咪小朋友用Python语言判断并输出2~100以内的所有素数。
会做这个题目或者读懂下面这段代码,本文的内容就全都理解到位啦。
i = 2
while(i < 100):
j = 2
while(j <= (i/j)):
if i%j == 0: break
j = j + 1
if (j > i/j): print(i)
i = i + 1