跳转至

Python基础语法

1 Python常用语法

1.1 输出

python中用于输出的指令为print( ),输出的结果为 ( ) 中的内容,常见实例如:

# 输出字符串
print('hello world!') 
#输出结果为:hello world

#输出数字
print(1)
#输出结果为:1

注意

a = 1 print(a)#此处输出的结果为1 print('a')# 此处输出的结果为a

产生差异的原因是print(a)中的a为一个变量名,输出变量被赋值的结果

如果未对a进行赋值,直接输出print(a),会替术出现错误:name 'a' is not defined

print('a')中'a'为一个字符串

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end='':

print('x')
print('y')
#输出的结果为
#x
#y

#不换行输出
print('x',end='')
print('y',end='')
#输出的结果为
#x y

1.2 注释

Python中单行注释以#开头,例如

#这是一个注释
#这是第二个注释
Python中多行注释可以使用''' ''' ,和""" """,例如:
'''
这是第三个注释,
这是第四个注释
'''

"""
这是第五个注释
这是第六个注释
"""

1.3 行与缩进

python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。实例如下:

if True:
    print("True")
else:
    print('False')
#缩进一致,代码正确

if True:
    print("True")
else:
  print("Flase")#缩进错误,运行会报错

1.4 多行语句

Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠 \ 来实现多行语句,例如:

total = item_one +\
        item_two +\
        item_three
实例:
item_one = 1
item_two = 2
item_three =3
total = item_one +\
        item_two +\
        item_three
print(total)
#结果输出为6

1.5 输入字段

Python中用于输入内容的语句为input(),实例:

a = input('输入您的名字')
print(f'现在用户的名字是{a}')

2 变量和数据类型

2.1 标识符(可以简单理解为变量名称)

- 1、第一个字符必须是字母(a-z,A-Z)或下划线 _
- 2、标识符的其他部分由字母数字和下划线组成
- 3、标识符对大小写是十分敏感的,Num和num是不同的标识符
- 4、标识符对长度无硬性要求,但一般要求保持简洁(不超过10个字符)
- 5、禁止使用关键字(保留字),如 if、break、class、elif 等不能作为标识符

2.1.1 合法标识符:

#合法标识符举例
age = 25
user_name = 'rongshiwang'
user_class = 'math'
user_grade_1 = 100
user_grade_2 = 200

2.1.2 非法标识符:

#非法标识符举例
2_user_grade = 100            #标识符以数字开头
user-name = 'rongshiwang'     #标识符中出现特殊字符‘-’
if = 25                       #标识符中出现保留关键字:if
¥class = 12                   #标识符中出现非法字符‘¥’

2.1.3 python关键字

python关键字(保留字),我们不能把python关键字用做任何标识符名称,python当前所有关键字如下:

类别 关键字 说明 |
逻辑值 True 布尔真值
False 布尔假值
None 表示空值或无值
逻辑运算 and 表示“与”,当逻辑值全部为真时,结果才为真
or 表示“或,当一个逻辑值为真时,结果就为真
not 表示“非”,用于对布尔值进行取反操作
条件控制 if 条件判断语句
elif 否则如果(else if 的缩写)
else 否则
循环控制 for 迭代循环
while 条件循环
break 跳出循环
cintinue 跳出当前循环的剩余部分,进入下一次迭代
异常处理 try 尝试执行代码块
except 捕获异常
finally 无论是否发生异常都会执行的代码块
raise 抛出代码块
函数定义 def 定义函数
return 从函数返回值
类与对象 class 定义类
del 删除对象引用
模块导入 import 导入模块
from 从模块带入特定部分
as 为导入的模块或对象创建别名
作用域 global 声明全局变量
nonlocal 声明非局部变量(用于嵌套函数)
其他 assert 断言,用于测试条件是否为真
in 检测成员关系
is 检查对象身份(是否为同一个对象)
pass 空语句,用于占位
with 上下文管理器,用于资源管理
yield 从生成函数返回值

2.2变量声明和赋值

使用赋值符号=来给变量赋值。左边是变量名(1),右边是变量值。python中所有变量值都是对象,变量名只是对象值的引用。

  1. 变量名的命名规则有:
    • 变量名只能包含字母、数字和下划线
    • 变量名不能以数字开头
    • 变量名区分大小写
    • 变量名不能与关键字重复
什么是变量

有两个不准确的比喻:

  1. 有人把变量比作一个盒子,这个盒子可以装任何东西。这个比喻体现了一个变量名只能指代一个对象,没问题。
  2. 有人把变量比作人的名字,必须通过名字才能指代这个人。这个比喻体现了一个变量值必须赋值给一个变量名,通过这个变量名才能找到从而使用这个变量值,也没问题。

这两个比喻的问题在于,变量名和变量值其实不是绑定的,多个变量名可以同时指向同一个对象。

所以最准确的比喻是变量名是一个标签,变量值是真实的物体;标签可以贴在任何东西上,然后我们就可以通过这个标签来找到这个东西。一个东西上可以贴多个标签,但是一个标签只能贴在一个东西上。

问问ai:

python中,我这么写一行代码:`"Hello World! My favorite language is Python"`会发生什么?这个字符串会被创建然后马上销毁吗?用专业术语应该怎么描述

2.2.1 单变量赋值

# 变量声明和赋值
name = "张三"  # 字符串
age = 25      # 整数
height = 1.75 # 浮点数
is_student = True  # 布尔值

2.2.2 多变量赋值

python允许使用者同时为多个变量赋值,例如:

a = b = c =1
使用者也可以为多个变量同时指定多个值,例如下面代码,通过以下实例,将整数型1和2分配给变量a和b,字符串对象“xiaoming”分配给c

a, b, c = 1, 3, 'xiaoming'

2.3 基本数据类型

  • 数字类型(int, float, complex)
  • 字符串(str)
  • 布尔值(bool)
  • 空值(None)

3 运算符

3.1 算术运算符

a = 10
b = 3

print(a + b)  # 加法:13
print(a - b)  # 减法:7
print(a * b)  # 乘法:30
print(a / b)  # 除法:3.3333...
print(a // b) # 整除:3
print(a % b)  # 取余:1
print(a ** b) # 幂运算:1000
a = "Hello"
b = "World"

print(a + b)  # 字符串拼接:HelloWorld
print(a - b)  # 报错
print(a * 2)  # 字符串重复:HelloHello
print(a * 2.5)  # 报错
a = True
b = False

a + b  # 1 
a - b  # 0
a * b  # 0

3.2 比较运算符

比较运算符用于比较两个对象之间的关系,比较运算输出的结果为一个布尔值,常见的比较运算符如下

x = 5
y = 10

print(x == y)  # False
print(x != y)  # True
print(x > y)   # False
print(x < y)   # True
print(x >= y)  # False
print(x <= y)  # True
a = "apple"
b = "banana"

print(a == b)  # False
print(a != b)  # True
print(a > b)   # False
print(a < b)   # True
print(a >= b)  # False
print(a <= b)  # True
a = True
b = False

print(a > b)  # True
print(a < b)  # False
print(a == b)  # False
print(a != b)  # True
print(a and b)  # False
print(a or b)  # True
print(not a)  # False

3.3 逻辑运算符

逻辑运算符有三个,分别是and、or和not。 and 字面意思是“而且”,所以and运算符会连接两个布尔值或者产生布尔值的表达式,如果两边的布尔值都是True,那么运算的结果就是True;当 左右两边任意出现一个False的布尔值,最终的结果都是False。 Or 字面意思或者,当or的左右两边任意一个为True时,结果都为True,当左右两边都为False时,最终结果才为False。 Not 表是否,not运算符的后面可以跟一个布尔值,如果not后面的布尔值或表达式是True,那么运算的结果就是False;如果not后面的布尔值或表达式是False,那么运算的结果就是True。

a = 5
 b = 6

 equal_1 = a>b
 equal_2 = a<b

 print(equal_1 and equal_2) #结果为Fasle
 print(equal_1 or equal_2) #结果为True

 print(not equal_1) #结果为True
 printnot equal_1 and equal_2 #结果为True

4 控制流程

4.1 使用if和else构造分支结构

在 Python 中,构造分支结构最常用的是if、elif和else三个关键字。所谓关键字就是编程语言中有特殊含义的单词,不能够使用它作为变量名,一般的if条件判断语句结构如下:

'''
if 判断条件1 :
    运算公式1
    print('输出结果1')
elif 判断条件2 :
    运算公式2
    print('输出结果2')
else:
    运算公式3
    print('输出结果3')
'''
#实例应用
weight =float(input('输入你的体重:kg'))
height =float(input('输入你的身高:cm'))
bmi = weight / (height/100) **2
if bmi<18.5:
    print('您的体重过轻')
elif bmi<24:
    print('您的身材很棒')
elif bmi<30:
     print('您的体重过重')
else:
    print('您已经过度肥胖了')

#实例应用2
x = float(input('X = '))
if x > 1:
    y = 3*x-5
elif x>= -1:
    y = x+2
elif x<-1:
    y =5*x+3

print('最终的结果为:%d'%y)

5 循环结构

循环结构,是指程序中控制某条或某些指令重复执行的结构。在 Python 语言中构造循环结构有两种做法,一种是for-in循环,另一种是while循环。

5.1 for-in循环

如果明确知道循环执行的次数,推荐使用for-in循环,被for-in循环控制的代码块称为循环体,通常循环体中的语句会根据循环的设定被重复执行。

#例子1
for i in range(5):
    print(i)
'''
结果为
0
1
2
3
4
'''

#例子2
fruit_basket = ['apple','banana','watermelon','strawberry']

for fruit in fruit_basket:
    print('每次想要吃的水果为:%s'%fruit)

'''
#结果为
每次想要吃的水果为:apple
每次想要吃的水果为:banana
每次想要吃的水果为:watermelon
每次想要吃的水果为:strawberry
'''

#例子三:实现1到100的求和
total = 0
for i in range(1, 101):
    total += i
print(total)
#最终结果为5050
#注意print(total)前面未进行缩进,说明此代码不受for-in循环的控制,不会重复执行

5.2 while循环

如果要构造循环结构但是又不能确定循环重复的次数,我们推荐使用while循环。while循环通过布尔值或能产生布尔值的表达式来控制循环,当布尔值或表达式的值为True时,循环体(while语句下方保持相同缩进的代码块)中的语句就会被重复执行,当表达式的值为False时,结束循环。 下面用while循环来实现从 1 到 100 的整数求和,代码如下所示:

total = 0
i = 1
while i<=100:
    total = total + i
    i = i +1
print('1到100的总和为%d'%total)
#输出结果为:1到100的总和为5050

5.3 嵌套的循环结构

循环结构是可以嵌套的,即在循环结构中还可以构造循环结构。下面的例子演示了如何通过嵌套的循环来输出一个乘法口诀表(九九表)。

for i in range(1,10):
    for j in range(1,i+1):
        print(f'{i}x{j}={i*j}',end='\t')
    print()  #用于换行
'''
#输出的结果为:
1x1=1        
2x1=2        2x2=4        
3x1=3        3x2=6        3x3=9        
4x1=4        4x2=8        4x3=12        4x4=16        
5x1=5        5x2=10        5x3=15        5x4=20        5x5=25        
6x1=6        6x2=12        6x3=18        6x4=24        6x5=30        6x6=36        
7x1=7        7x2=14        7x3=21        7x4=28        7x5=35        7x6=42        7x7=49        
8x1=8        8x2=16        8x3=24        8x4=32        8x5=40        8x6=48        8x7=56        8x8=64        
9x1=9        9x2=18        9x3=27        9x4=36        9x5=45        9x6=54        9x7=63        9x8=72        9x9=81        
'''

6 函数

6.1 函数定义和调用

def greet(name):
    """打招呼函数"""
    return f"你好,{name}!"

# 调用函数
message = greet("张三")
print(message)

6.2 函数参数

# 默认参数
def power(x, n=2):
    return x ** n

# 可变参数
def sum(*numbers):
    return sum(numbers)

# 关键字参数
def person(name, *, age, city):
    print(f"{name}来自{city},今年{age}岁")

练习题

  1. 编写一个函数,计算给定数字的阶乘
  2. 实现一个简单的计算器,支持基本的四则运算
  3. 编写程序判断一个数是否为质数

小结

  • 掌握Python的基本语法规则
  • 理解不同数据类型的使用
  • 熟练运用各种运算符
  • 掌握控制流程语句
  • 能够定义和使用函数