Python基本语法


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循环执行流程图

下面这份代码里的两个例子是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循环执行流程图

下面这个例子演示了使用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

评论
  目录