Python基础--Day02--Python的基本语法

一、Python代码结构与规范

1.1、注释语句

注释语句(Comment Statement)是在程序代码中添加的一种特殊类型的语句,用于提供对代码的解释、说明或备注。注释语句通常不会被编译器或解释器执行,而是被忽略或跳过。

注释语句的主要作用是为了增强代码的可读性和可维护性,以便程序员和其他人能够更好地理解代码的意图、功能和实现细节。注释可以包含对代码的解释、算法说明、特殊用途的标记、作者信息、相关链接等内容。

不同的编程语言使用不同的注释语法,但大多数编程语言都提供了以下两种常见的注释类型:

  1. 单行注释:在单行注释中,注释内容从注释符号开始(通常是一个特定的符号或字符序列),一直延伸到该行的结尾。单行注释用于注释单个代码行或在代码行末尾添加注释。例如:

    # 这是一个单行注释
    print("hello world") # 在控制台打印hello world 字符串
  2. 多行注释:多行注释允许在多个行上添加注释内容。它通常用于注释多行代码块或提供更详细的代码解释。多行注释的语法和符号因编程语言而异。例如,在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的一些主要规范和建议:

  1. 缩进和空格: 使用4个空格进行缩进,不要使用制表符(Tab)。在二元运算符周围和逗号后面使用空格,但在括号、方括号和花括号内部不要有空格。

  2. 行的长度: 每行代码尽量不超过79个字符,对于长表达式或注释,可以适度延长到不超过72个字符。

  3. 命名规范: 使用全小写字母和下划线来命名变量、函数和模块。类名应该使用驼峰命名法,首字母大写。

  4. 空行: 使用空行来组织代码,例如在函数和类定义之间、函数内部的逻辑块之间使用空行。

  5. 导入规范: 在不同的行上导入不同的模块。避免使用通配符导入(from module import *),而是明确导入需要使用的函数、类或变量。

  6. 注释: 使用注释来解释代码的意图和功能。注释应该清晰、简洁,并遵循特定的注释规范。

  7. 函数和类定义: 在函数和类定义之间使用两个空行。函数定义应该包含文档字符串(docstring),用于描述函数的功能和参数。

  8. 代码布局: 使用合适的空格和空行来组织代码,使其易于阅读和理解。

PEP 8并非强制性规范,但它是Python社区广泛接受的编码风格指南。遵循PEP 8可以提高代码的可读性,使不同开发者之间的代码更加一致,并促进Python项目的可维护性。

备注:Reformat the file  整个文件格式化

# 规范
#不规范
print(100) # 空两行,规范
​
x=10  # 不规范
x = 10  # 规范 =左右留一个空格
​
updateuserprofile = ""  # 变量命名不规范
updateUserProfile = ""  # 变量命名规范

Pycharm的格式化快捷键:Ctrl + Alt + L

二、变量

2.1、变量初识

在Python中,变量是一个标识符,用于引用存储在计算机内存中的数据。每个变量都有一个名称和一个关联的值,可以将值存储在变量中并在程序中多次使用。以下是有关Python变量的一些基本概念:

# 用等号(=)将一个值赋给一个变量
# 游戏场景
role = "刺客"
name = "李白"
attack = 500
healthy = 100
level = 3
experience = 1000
is_movable = False # 是否可以移动(冰冻效果)
  1. 在Python中,变量名(即标识符)是存储在命名空间中的。命名空间是一个变量名和对象之间的映射关系(一个字典结构),它将变量名与对象的引用关联起来。

  2. 全局命名空间是在程序运行时创建的,并在整个程序执行期间一直存在。

  3. 局部命名空间是在函数调用时创建的,并在函数执行期间存在。

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的变量命名规范通常遵循以下规则:

  1. 变量名应该具有描述性,以便代码的可读性更高,例如在代码中使用的名称应该清晰、简洁、有意义,避免使用缩写或单个字符。

  2. 变量名应该遵循一定的命名约定,采用驼峰命名法或下划线命名法:驼峰命名法指的是将每个单词的首字母大写,单词之间不使用下划线,例如myVariableName;下划线命名法指的是使用小写字母和下划线来分隔单词,例如my_variable_name。在Python中,推荐使用下划线命名法(也称为蛇形命名法)

  3. 变量名只能包含字母、数字和下划线_,不能以数字开头。

  4. 变量名不能使用保留字(例如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)        # 错误

三、基本数据类型

在编程中,基本数据类型指的是编程语言中提供的最基本、最原始的数据类型,通常是原生支持的数据类型,而不是通过其他数据类型组合而来的。

在Python中,常见的基本数据类型包括:

2.1、整型和浮点型

整型(integer)和浮点型(float)是Python中常用的数字数据类型。它们用于表示不同种类的数值,并在数值计算和数据处理中发挥重要作用。

整型(integer):

  • 整型用于表示整数(正整数、负整数和零)。

  • 在Python中,整型是一种不可变(immutable)的数据类型,表示为整数字面值,例如 5-100 等。

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、布尔类型

布尔类型(boolean)是Python中的一种基本数据类型,用于表示逻辑值。布尔类型只有两个可能的取值:True(真)和 False(假)。

print(2 > 1)   # True
print(3 != 2)  # True

布尔类型通常用于条件判断和逻辑运算,用于控制程序的流程和决策。

以下是一些常见的用法和特点:

  1. 布尔值:TrueFalse 是布尔类型的两个取值。它们是Python中的关键字,不是字符串。

  2. 条件判断:布尔类型常用于条件语句的判断条件,例如 if 语句中的条件表达式。根据条件表达式的真假,决定是否执行相应的代码块。

  3. 关系运算符:关系运算符(如 ==!=<><=>=)用于比较两个值,并返回布尔结果。例如 x > y 将返回布尔值表示 x 是否大于 y。

  4. 逻辑运算:布尔类型可以通过逻辑运算符(如 andornot)进行组合和操作。逻辑运算可以用于组合多个布尔值,产生新的布尔结果。

  5. bool()是一个内置函数,用于将给定的值转换为对应的布尔值。获取某个值的布尔状态。

  6. 零值:在Python中,每一个数据类型都有一个布尔值为False的值,我们称之为零值

    • 整型的零值是0,浮点型是0.0

    • 字符串的零值是""

    • 布尔类型的零值是False

    • NoneType的零值是None

    • 列表的零值是[]

    • 元组的零值是()

    • 字典的零值是{}

2.4、输入输出函数

在Python中,输入和输出函数用于与用户进行交互,并在程序的执行过程中获取输入值和显示输出结果。

2.4.1、input函数

input(prompt):用于从用户获取输入值。它会在控制台中显示一个提示信息(prompt),等待用户输入,并返回用户输入的内容作为字符串。

name = input("请输入您的姓名")
age = input("请输入您的年龄")

print(name, type(name))  # lihaha <class 'str'>
print(age, type(age))    # 23 <class 'str'>

2.4.2、print函数

print(value1, value2, ...):用于将值打印到控制台。它可以接受一个或多个参数,并将它们打印为字符串。

 

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)

应用1:函数返回值

# 函数返回值
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、逻辑运算符

逻辑运算符是用于在逻辑表达式中进行组合和操作的运算符。它们用于组合和操作布尔值(True 或 False)来生成新的布尔值结果。在Python中,逻辑运算符包括三个:andornot

逻辑运算符通常与条件语句(如 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、成员运算符

成员运算符是用于检查一个值是否存在于某个序列(例如列表、元组、字符串等)中的运算符。Python 提供了两个成员运算符:innot in

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中常见运算符的优先级从高到低的顺序(同一优先级的运算符从左到右结合):

  1. 括号:(),最高优先级,用于控制表达式的执行顺序。

  2. 幂运算:**,次高优先级,用于进行指数运算。

  3. 正负号:+(正号)和 -(负号),用于表示正负数。

  4. 乘法、除法和取模运算:*///(整除)和 %(取模)。

  5. 加法和减法运算:+-

  6. 比较运算符:<><=>===(等于)、!=(不等于)等。

  7. 逻辑运算符:andornot,用于逻辑运算。

  8. 赋值运算符:=, +=, -=, *=, /=, //=, %=, **= 等。

# 案例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))

 

posted @ 2025-07-15 17:08  L遇上J  阅读(15)  评论(0)    收藏  举报