Python基础--Day02--Python的基本语法
一、Python代码结构与规范
1.1、注释语句

注释语句(Comment Statement)是在程序代码中添加的一种特殊类型的语句,用于提供对代码的解释、说明或备注。注释语句通常不会被编译器或解释器执行,而是被忽略或跳过。
注释语句的主要作用是为了增强代码的可读性和可维护性,以便程序员和其他人能够更好地理解代码的意图、功能和实现细节。注释可以包含对代码的解释、算法说明、特殊用途的标记、作者信息、相关链接等内容。
不同的编程语言使用不同的注释语法,但大多数编程语言都提供了以下两种常见的注释类型:
-
单行注释:在单行注释中,注释内容从注释符号开始(通常是一个特定的符号或字符序列),一直延伸到该行的结尾。单行注释用于注释单个代码行或在代码行末尾添加注释。例如:
# 这是一个单行注释 print("hello world") # 在控制台打印hello world 字符串
-
多行注释:多行注释允许在多个行上添加注释内容。它通常用于注释多行代码块或提供更详细的代码解释。多行注释的语法和符号因编程语言而异。例如,在Python中,多行注释使用三个引号(''')或三个双引号(""")括起来,如:
""" 这是一个多行注释的示例。 它可以跨越多个行,并提供对代码的详细解释。 """ print("hello world") # 在控制台打印hello world字符串
需要注意的是,注释语句不会对程序的执行产生任何影响,它们只是用于辅助代码的理解和维护。在编写代码时,良好的注释实践可以提高代码的可读性和可维护性,有助于团队合作和代码重用。
Pycharm的注释快捷键:Ctrl+/
1.2、语句&语句分隔符
语句分隔符(Statement Separator)是用于在编程语言中分隔不同语句的符号或字符。它指示编译器或解释器在代码中的哪个位置结束一条语句,并开始解析下一条语句。
在Python中,语句之间的分隔符有两个:换行符和分号,推荐换行符
# Python语句分隔符:分号和换行符 # print("hello yuan")print("hello world") # (1) 分号作为换行符不推荐 print("hello yuan");print("hello world") # 分号作为分隔符 # (2) 推荐:换行符,即一行就是一条语句 print("hello yuan") # 换行符作为分隔符 print("hello world")
1.3、pep8规范
PEP 8是Python编程语言的官方编码风格指南(Python Enhancement Proposal 8),它提供了一套规范和建议,用于编写清晰、易读和一致的Python代码。PEP 8旨在促进Python代码的可读性,并为Python开发者提供一致的编码样式。
以下是PEP 8的一些主要规范和建议:
-
缩进和空格: 使用4个空格进行缩进,不要使用制表符(Tab)。在二元运算符周围和逗号后面使用空格,但在括号、方括号和花括号内部不要有空格。
-
行的长度: 每行代码尽量不超过79个字符,对于长表达式或注释,可以适度延长到不超过72个字符。
-
命名规范: 使用全小写字母和下划线来命名变量、函数和模块。类名应该使用驼峰命名法,首字母大写。
-
空行: 使用空行来组织代码,例如在函数和类定义之间、函数内部的逻辑块之间使用空行。
-
导入规范: 在不同的行上导入不同的模块。避免使用通配符导入(
from module import *),而是明确导入需要使用的函数、类或变量。 -
注释: 使用注释来解释代码的意图和功能。注释应该清晰、简洁,并遵循特定的注释规范。
-
函数和类定义: 在函数和类定义之间使用两个空行。函数定义应该包含文档字符串(docstring),用于描述函数的功能和参数。
-
代码布局: 使用合适的空格和空行来组织代码,使其易于阅读和理解。
PEP 8并非强制性规范,但它是Python社区广泛接受的编码风格指南。遵循PEP 8可以提高代码的可读性,使不同开发者之间的代码更加一致,并促进Python项目的可维护性。
备注:Reformat the file 整个文件格式化
# 规范 #不规范 print(100) # 空两行,规范 x=10 # 不规范 x = 10 # 规范 =左右留一个空格 updateuserprofile = "" # 变量命名不规范 updateUserProfile = "" # 变量命名规范
Pycharm的格式化快捷键:Ctrl + Alt + L
二、变量

2.1、变量初识
# 用等号(=)将一个值赋给一个变量 # 游戏场景 role = "刺客" name = "李白" attack = 500 healthy = 100 level = 3 experience = 1000 is_movable = False # 是否可以移动(冰冻效果)
在Python中,变量名(即标识符)是存储在命名空间中的。命名空间是一个变量名和对象之间的映射关系(一个字典结构),它将变量名与对象的引用关联起来。
全局命名空间是在程序运行时创建的,并在整个程序执行期间一直存在。
局部命名空间是在函数调用时创建的,并在函数执行期间存在。
2.2、变量的用法
2.2.1、基本用法
变量简单的使用就是直接赋值
# (1)变量的多次使用 x = 10 y = 20 # 可以简写:x,y = 10,20 print(x + y) # 30 print(x - y) # -10 print(x * y) # 200 print(x / y) # 0.5 # (2)变量的重新赋值(修改变量值) x = 1 x = 2 # 重新赋值 print("x:",x) # x: 2 healthy = 100 print("healthy:",healthy) # healthy: 100 healthy = 90 print("healthy:",healthy) # healthy: 90 level = 1 print("level:",level) # level: 1 level = 2 print("level:",level) # level: 2
id(数据),是Python的一个内置函数,返回某个数据对象的内存地址
2.2.2、变量传递
x = 1 print("x的内存地址:", id(x)) # x的内存地址: 140718622274344 y = x # 编程中十分重要的操作:变量传递,对于它的理解至关重要! x = 2 print("x的新内存地址:", id(x)) # x的新内存地址: 140718622274376 print("y的内存地址:", id(y)) # y的内存地址: 140718622274344 print("x的新值:", x) # x的新值: 2 print("x的新值:", y) # x的新值: 1
x = 1 y = 2 # 方式1 t = x x = y y = t print(x) # 2 print(y) # 1 # 方式2 x, y = y, x print(x) # 1 print(y) # 2
2.2.3、表达式赋值
x = 1 + 1 y = x + 1 y = y + 1 print(x) # 2 print(y) # 4
案例1:
# 案例 print("游戏开始...") player_exp = 500 player_level = 3 print("当前经验值:", player_exp) # 当前经验值: 500 print("当前级别:", player_level) # 当前级别: 3 print("闯关成功") player_exp = player_exp + 50 player_level = player_level + 1 print("当前经验值:", player_exp) # 当前经验值: 550 print("当前级别:", player_level) # 当前级别: 4 # 生命值减少10怎么写?
2.3、变量的命名规范
Python的变量命名规范通常遵循以下规则:
变量名应该具有描述性,以便代码的可读性更高,例如在代码中使用的名称应该清晰、简洁、有意义,避免使用缩写或单个字符。
变量名应该遵循一定的命名约定,采用驼峰命名法或下划线命名法:驼峰命名法指的是将每个单词的首字母大写,单词之间不使用下划线,例如
myVariableName;下划线命名法指的是使用小写字母和下划线来分隔单词,例如my_variable_name变量名只能包含字母、数字和下划线_,不能以数字开头。
变量名不能使用保留字(例如f、else、while等等)。
附:Python的关键字

# (1) 规范:见名知意 username = "yuan" age = 18 # (2) 规范:驼峰命名法或下划线命名法 # 驼峰命名法 playerAttackValue = 100 # 小驼峰 PlayerAttackValue = 100 # 大驼峰 # 下划线命名法 player_attack_value = 100 # (3) 规则:变量必须是数字字母以及下划线的组合 # 不能有_以外特殊符号 # abc^ = 123 # 错误 # @abc = 123 # 错误 abc1_ = 123 _abc2 = 456 # 不能以数字开头 user1 = "yuan" user2 = "rain" # 3user = "eric" # 错误 # (4) 变量不能使用关键字(保留字,内置函数名) print = 123 print(print) # 错误
三、基本数据类型
在编程中,基本数据类型指的是编程语言中提供的最基本、最原始的数据类型,通常是原生支持的数据类型,而不是通过其他数据类型组合而来的。
2.1、整型和浮点型
整型(integer)和浮点型(float)是Python中常用的数字数据类型。它们用于表示不同种类的数值,并在数值计算和数据处理中发挥重要作用。
整型(integer):
-
整型用于表示整数(正整数、负整数和零)。
-
在Python中,整型是一种不可变(immutable)的数据类型,表示为整数字面值,例如
5、-10、0等。
x = 1 y = -10 blood = 100
浮点型(float):
-
浮点型用于表示带有小数部分的数值,也称为浮点数。
-
在Python中,浮点型是一种不可变的数据类型,表示为浮点数字面值,例如
3.14、-2.5等。
pi = 3.14 temperature = -2.5 pi_type = type(pi) print(pi_type) # <class 'float'> print(type(pi_type)) # <class 'type'>
内置函数type(对象)可以获取某个数据对象的类型名称
整型对象和浮点型对象可以用于科学运算:
print(1+1) # 比如游戏的等级,血值,攻击力
补充:
from decimal import Decimal x = 1 y = 2 print(1 + 2) a = 3.14 b = 1.11 print(a + b) # 4.25 print(a - b) # 2.0300000000000002 ret = round(a - b) # 四舍五入精度限制 默认不保留小数 round(a - b, 保留小数的位数) print(ret) # 2 print(round(a - b, 2)) # 2.03 保留两位小数 c = Decimal("3.14") d = Decimal("1.11") print(c - d) # 2.03 # type(): 打印数据对象的类型名 # x,y,a,b分别是类型数据 print(type(x)) # "<class 'int'>" print(type(y)) # "<class 'int'>" print(type(a)) # "<class 'float'>" print(type(b)) # "<class 'float'>"
2.2、字符串类型
字符串是一种在计算机程序中常用的数据类型,用于操作文本数据。字符串可以看作是由一系列字符组成的序列,每个字符可以是字母、数字、符号或其他字符。
在计算机程序中,字符串通常使用一对单引号(')或双引号(")括起来,例如:"hello world"或'Python is fun!'。同时Python还支持使用三重引号('''或""")来表示多行字符串。
以下是Python字符串的代码示例,输出"hello 我是Python":
s1 = "hello 我是Python" print(s1) # hello 我是Python s2 = "hello li!" s3 = "10" print(s2) # hello li! print(s3) # 10
这个例子中,我们使用了字符串类型,并将其赋值给一个变量,然后使用print函数输出该变量的值。注意,在字符串中可以使用中文字符,Python默认使用UTF-8编码,可以支持多种语言的字符。
2.3、布尔类型
print(2 > 1) # True print(3 != 2) # True
布尔类型通常用于条件判断和逻辑运算,用于控制程序的流程和决策。
以下是一些常见的用法和特点:
布尔值:
True和False是布尔类型的两个取值。它们是Python中的关键字,不是字符串。条件判断:布尔类型常用于条件语句的判断条件,例如
if关系运算符:关系运算符(如
==、!=、<、>、<=、>=)用于比较两个值,并返回布尔结果。例如x > y将返回布尔值表示 x 是否大于 y。逻辑运算:布尔类型可以通过逻辑运算符(如
and、or、not)进行组合和操作。逻辑运算可以用于组合多个布尔值,产生新的布尔结果。
bool()是一个内置函数,用于将给定的值转换为对应的布尔值。获取某个值的布尔状态。零值:在Python中,每一个数据类型都有一个布尔值为False的值,我们称之为零值
整型的零值是0,浮点型是0.0
字符串的零值是""
布尔类型的零值是False
NoneType的零值是None
列表的零值是[]
元组的零值是()
字典的零值是{}
2.4、输入输出函数
在Python中,输入和输出函数用于与用户进行交互,并在程序的执行过程中获取输入值和显示输出结果。
2.4.1、input函数
input(prompt)
name = input("请输入您的姓名") age = input("请输入您的年龄") print(name, type(name)) # lihaha <class 'str'> print(age, type(age)) # 23 <class 'str'>
2.4.2、print函数
name = "jiong" age = 18 print("用户信息:", name, age, sep="|", end="") print("程序结束!") # 用户信息:|jiong|18程序结束!
2.5、常见类型转换
# (1)字符串到整数(int)转换 num_str = "123" num_int = int(num_str) print(num_int, type(num_int)) # 123 <class 'int'> # (2)整数(int)到字符串转换 num_int = 123 num_str = str(num_int) print(num_str, type(num_str)) # 123 <class 'str'> # (3)字符串到浮点数(float)转换 float_str = "3.14" float_num = float(float_str) print(float_num, type(float_num)) # 3.14 <class 'float'> # (4)浮点数(float)到字符串转换 float_num = 3.14 float_str = str(float_num) print(float_str, type(float_str)) # 3.14 <class 'str'>
案例:
num01 = input("请输入一个数字:") num02 = input("请在输入一个数字:") print(float(num01) + float(num02))
打印结果:
请输入一个数字:1
请在输入一个数字:1.1
2.1
2.6、NoneType类型

在 Python 中,None 是一个特殊的常量,表示缺少值或空值。它常用于表示函数没有返回值或变量尚未被赋值的情况。None 是 NoneType 数据类型的唯一值(其他编程语言可能称这个值为 null、nil 或 undefined)
# 函数返回值 ret = print("hello world") # hello world print("ret:", ret) # ret: None
我们一直使用 print() 函数的返回值就是 None。因为它的功能是在屏幕上显示文本,根本不需要返回任何值,所以 print() 就返回 None。
应用2:初始化赋值
# 模拟计算过程 num1 = int(input("请输入num1:")) num2 = int(input("请输入num2:")) operator = input("请输入运算符:") result = None if operator == '+': result = num1 + num2 elif operator == '-': result = num1 - num2 elif operator == '*': result = num1 * num2 elif operator == '/': result = num1 / num2 print(result)
打印结果:
请输入num1:1
请输入num2:2
请输入运算符:+
3
四、运算符
-
语句是一条完整的执行指令,语句通常会改变程序的状态、执行特定的操作或控制程序的流程。语句可以是赋值语句、函数调用,条件语句、循环语句等。语句没有返回值
-
表达式是由值、变量、运算符和函数调用组成的代码片段,它可以计算出一个值。表达式可以包含字面值(如数字、字符串)、变量、运算符(如加法、乘法)、函数调用等。表达式的执行会返回一个非空的结果值。表达式具有返回值,可以作为其他表达式的一部分使用。
举例来说:
x = 5是一个赋值语句,将值 5 赋给变量 x,它没有返回值。
y = x + 3 >4是一个赋值语句,将变量 x 的值加上 3,并将结果赋给变量 y,它也没有返回值。
print(y)是一个打印语句,用于将变量 y 的值输出到控制台,它仅用于执行操作,没有返回值。
type("hello")函数调用,但是一个表达式,因为计算出结果了。
Python提供了多种类型的运算符,用于数学运算、逻辑判断、赋值操作等。下面是一些常见的运算符。
4.1、计算运算符

4.2、比较运算符

4.3、赋值运算符
赋值运算符是用于将一个值或表达式赋给一个变量的运算符。它们用于在程序中给变量赋值,以便存储和操作数据。

print("游戏开始...") player_exp = 100 player_level = 1 player_blood = 1000 print("闯关成功") player_exp += 50 # player_exp = player_exp + 50 player_level += 1 # player_level = player_level + 1 print("当前级别:", player_level) # 当前级别: 2 print("当前经验值:", player_exp) # 当前经验值: 150 print("受到攻击") player_blood -= 20 # player_blood = player_blood - 20 print("当前生命值:", player_blood) # 当前生命值: 980
4.4、逻辑运算符
逻辑运算符通常与条件语句(如 if
# 案例1 # 语文成绩大于100分同时(并且)数学成绩大于100分 chinese = 140 math = 125 # 与运算:and # 真与真 结果为真 # 真与假 结果为假 # 假与真 结果为假 # 假与假 结果为假 ret = chinese > 100 and math > 100 print(ret) if chinese > 100 and math > 100: print("买礼物") else: print("小小惩罚!") # 案例2 # 语文成绩大于100分或数学成绩大于100分 chinese = 40 math = 25 # 或运算:or # 假或假为假 # 真或假为真 # 假或真为真 # 真或真为真 ret = chinese > 100 or math > 100 print(ret) if ret: print("买礼物") else: print("小小惩罚!") # 案例3 print(not 3 > 2) # False print(not 3 == 2) # True # 案例3: # 用户输入一个年龄,判断是否符合20-35 age = int(input("年龄:")) # # if age > 20 and age < 35: # print("符合要求") # else: # print("不符合要求") if 20 < age < 35: print("符合要求") else: print("不符合要求")
4.5、成员运算符
print("jiong" in "hello jiong") # True print(100 in [1, 10, 100, 1000]) # True print("jiong" not in ["rain", "eric", "alvin", "hello jiong"]) # True # 成员运算符: in 返回布尔值 只要连贯的字符串包含就是True,和单词没关系 print("rain" in "yuan rain alvin eric") # True print("rai" in "yuan rain alvin eric") # True print("rains" in "yuan rain alvin eric") # False print("rain al" in "yuan rain alvin eric") # True print("yuan" in ["123", "yuan", "真假"]) # True
4.6、运算符优先级
在Python中,运算符优先级指定了在表达式中运算符的执行顺序。以下是Python中常见运算符的优先级从高到低的顺序(同一优先级的运算符从左到右结合):
-
括号:
(),最高优先级,用于控制表达式的执行顺序。 -
幂运算:
**,次高优先级,用于进行指数运算。 -
正负号:
+(正号)和-(负号),用于表示正负数。 -
乘法、除法和取模运算:
*、/、//(整除)和%(取模)。 -
加法和减法运算:
+和-。 -
比较运算符:
<、>、<=、>=、==(等于)、!=(不等于)等。 -
逻辑运算符:
and、or、not,用于逻辑运算。 -
赋值运算符:
=,+=,-=,*=,/=,//=,%=,**=等。
# 案例1 a = 1 + 1 # 先计算1+1,再将得到的2赋值给a # 案例2 x = 10 y = 5 z = 2 result = x + y * z ** 2 / (x - y) print(result) # 14.0
五、今日作业
# 1.以下那个变量名是符合语法 # A $a B.id C.2a D._name 选D # 2. 解析`x=1;x=x+1`执行过程 # x = 1 # x = x + 1 # x += 1 # print(x) # 3. `1+"1"`的结果是? # print(1 + "1") 备注:直接报错, """ Python是一个弱类型语言呢? 错误,Python虽然不会像C Java一样在创建变量的时候声明变量类型 但是Python依然是一个强类型语言,真正的弱类型语言是JS 是否是强类型还是弱类型标准的界定就是是否进行类型的暗转换(既把变量进行偷偷的转换) """ # 4. `bool("2<1")`的结果是? False print(bool(2 < 1)) # False print(bool("False")) # True print(bool("-1")) # True print(bool("0")) # True print(bool("")) # False print(bool("2<1")) # True # 5. 浅述目前学过的Python的内置函数以及功能 print("hello world") data = input("") # 6.分析下面程序的执行过程以及结果 a = 1 b = a c = b # a 1 b 1 c 1 a, d = c + 1, b + 2 # a 2 b 3 a += 1 print(a, d) # 3 3 print(id(a)) # 140708530910056 print(id(d)) # 140708530910056 """ 因为两个3是同一个值,在一个有限的范围内,Python解释器不会创建相同的两个值,就会用一个, 这就是最小值概念 """ # 7. 获取用户输入圆的半径。使用圆的周长和面积公式计算并打印出输入半径的圆的周长和面积。 pai = 3.1415926 r = int(input("请输入圆的半径")) area = round(pai * r * r, 5) # 保留5位小数 perimeter = round(2 * pai * r, 5) print("面积:", area) print("周长:", perimeter) """ 请输入圆的半径3 面积: 28.27433 周长: 18.84956 """ # 8. 假设有一个变量count的初始值为0,将count增加5次,每次增加值分别为1,2,3,4,5,然后打印count的值。 count = 0 a = 1 b = 2 c = 3 d = 4 e = 5 # print(a + b + c + d + e) count = count + a print("count 吃进a后的结果", count) count = count + b print("count 吃进b后的结果", count) count = count + c print("count 吃进c后的结果", count) count = count + d print("count 吃进d后的结果", count) count = count + e print("count 吃进e后的结果", count) # 9. 判断一个学生的考试成绩score是否在80到100之间(包括80和100) score = int(input("input a score:")) print(score >= 80 and score <= 100) # 判断一个学生的考试成绩score是否小于80或大于100之间 print(score < 80 or score > 100) print(not (score >= 80 and score <= 100)) # 10. 输入一个数字,判断是否是三位数且能被13整除 num = input("input a num:") print(len(num) == 3 and int(num) % 13 == 0) # 11. 判断用户名密码是否正确 user = input("input a user:") pwd = input("input a pwd:") username = "root" password = "123" print(user == username and pwd == password) # 12. 判断一个年份year是否是闰年,如果是,则打印"year是闰年",否则打印"year不是闰年"。 # 闰年满足以下条件:能被4整除但不能被100整除,或者能被400整除。 year = int(input("input a user:")) print(year % 400 == 0 or (year % 4 == 0 and year % 100 != 0))





浙公网安备 33010602011771号