当前位置: 首页 > news >正文

Python编程:初入Python魔法世界

一、常量表达式

在编程中,常量指的是在程序执行期间其值不会改变的数据项。虽然 Python 并没有专门的语法来定义常量(不像某些其他语言如 Java 中有 final 关键字),但在实践中,我们通常通过约定俗成的方式来表示一个变量是一个“常量”:

示例:

# 算术表达式
a = 5 + 3 * 2  # 结果为 11,注意乘法优先于加法# 关系表达式
b = 10 > 5     # b 的值为 True# 逻辑表达式
c = (10 > 5) and (2 < 3)  # c 的值为 True
print(1 + 2 - 3)
print(1 + 2 * 3)
print(1 + 2 / 3)

  • 代码里的print() 是 Python 中的一个内置函数,用于将内容输出到终端(屏幕)上

它是我们最常用的调试工具之一,可以让我们看到程序运行时的中间结果、变量值、提示信息等。这个我们后续详谈

  • 可以使用+-*/()等运算符进行算术运算,先算乘除后算加减
  • 运算符和数字之间,可以没有空格,但是一般习惯上写一个空格(比较美观)
  1. 例如 1 + 2 - 3 这样是算式,在编程语言中被称为表达式,而运行后的结果,就是这个表达式的返回值
  2. 其中1,2,3这种被称为字面值常量, +-*/ 这种被称为运算符或者操作符

表达式的类型:

算术表达式:涉及数值及其运算符(如 +-*/)。

关系表达式:比较两个值(如 ==!=><)。

逻辑表达式:结合多个条件(如 andornot)。

这里注意一下,我们发现第三个表达式计算出来后是 1.66666666665,而不是1。而我们熟悉了c或者java的兄弟可能觉得很奇怪,其实在Python中得到的结果则是一个小数,更符合日常使用的直觉

例如:给定四个分数,65.5 , 89.0 , 12.9 , 32.2 ,编写代码,求这四个分数的平均数

print((65.5 + 89.0 + 12.9 + 32.2) / 4)

二、变量和类型

2.1 变量是啥?

有的时候,我们需要进行的计算可能会复杂一点,计算过程中需要把一些中间结果保存起来,那么这个时候就是通过变量这个东西

就例如我们现在要计算一个方差

  • 给四个数, 67.5 , 89.0 , 12.9 , 32.2,编写代码,求这四个数的方差
  • 方差计算过程:取每一项,减去平均值,计算平方,再求和,最后除以(项数 - 1)
  1. 计算这四个数的平均值
  2. 取每一项,减去平均值,计算平方,再求和  把最后的值给total
  3. 把total除以(项数 - 1)
  4. 将结果打印出来
avg = (67.5 + 89.0 + 12.9 + 32.2)/4
total = (67.5 - avg) ** 2 + (89.0 - avg) ** 2 + (12.9 - avg) ** 2 + (32.2 - avg) ** 2
result = total / 3
print(result)

 注意:avg,total,result都是变量

**在python里面表示乘方运算。 **2就是平方

而变量可以视为是一块可以存放数据的一个空间,而这个空间是开辟在内存中过地方的

 想象内存是一个大仓库,有许多小格子,每个格子有唯一编号(地址)。当我们声明一个变量 int avg = 30;,计算机在仓库中找到一个空闲格子,放进去30,并记下标签“age”指向那个格子编号。(图上一个存放50.400000000000006)

2.2 变量的语法 

2.2.1 变量的定义

a = 10
//a是变量名。
// 10是值。   
//变量名+赋值运算符+值

创建变量非常简单:

  • a是变量名。当我们创建很多个变量的时候,大家的变量名要取一个有意义,例如你创建的变量是用来计数的,就可以取为count
  • = 为赋值运算符,表示把 = 右侧的数据放到 = 左侧空间中 ,注意,是由右向左

注意事项(规则):

  • 变量名由数字、字母、下划线构成
  • 数字不能开头
  • 变量名不能和“关键字重复”。例如:print 
  • 变量名大小写敏感。num和Num是两个不同的变量名

变量取名建议:

  • 变量名最好用有意义的单词来表示,就是我刚刚说的
  • 驼峰命名法(CamelCase):首个单词小写,后续单词首字母大写,如 $userName$(常用于Java、JavaScript)。
  • 蛇形命名法(snake_case):单词间用下划线连接,如 $user_name$(常用于Python、Ruby)。
  • 常量命名:全大写加下划线,如 $MAX_VALUE$。

2.2.2 变量的使用

读取变量的值:

a = 10
print(a)

 修改变量的值

a = 10
pritn(a)
#修改a
a = 20
print(a)

当然,我们也可以使用其他的变量来修改需要修改的值

a = 10
b = 20
a = b
print(a)
print(b)

一开始对变量a和b进行初始化,随后 a = b,将b的值赋给a,这样就把a的值给改变了!!! 

2.2.3 变量的类型 

变量里面存储的不仅仅是数字,还可以存储其他种类的数据,未来区分不同种类的数据,我们引入了“类型”这一概念。

注意:Python和C++/java等语言不同,Python的变量类型是不需要显示指定的,而是在赋值的时候确定的

例如c++和java

//在 C++ 和 Java 中,变量类型必须在定义时明确写出,否则编译器会报错int age = 20;         // 必须显式指定类型
string name = "Tom";

而Python: 

x = 10          # x 是整数
x = "Hello"     # x 变成字符串
x = [1, 2, 3]   # x 变成列表
2.2.3.1 整数
a = 10
print(type(a))

PS:pyte和print类似,也是Python内置的函数,pyte可以来查看一个变量的类型

这里注意一个点:Python的int类型变量,所表示的不是四个字节,而是 没有上限 的,只要内存足够大,理论上就可以表示无限大小的数组

2.2.3.2 浮点数
a = 0.5
print(type(a))

字符串需要用 ' (单引号)或者 " (双引号) ,被这两个符号所包围起来的就被称为字符串。可以用来表示文本

注意'hello'和"hello"是等价的

可以使用 len 函数来计算一个字符串的长度

a = 'hello'
print(len(a))

 

可以使用+针对两个字符串的拼接

a = "hello"
b = " world"
print(a+b)

a = "hello"
b = 1
print(a+b)

此处只是字符串相加,不能拿字符串和其他类型相加 

2.2.3.4 布尔

布尔类型是一个特殊的类型(用于逻辑判断),取值只有两种:True(真)和False(假)

PS:这里True(真)和False(假)必须是首字母大写的

而真假是什么?

例如:

女生每月会有生理期(真)

男士每月会有生理期(假)

a = True
print(type(a))
b = False
print(type(b))

 三、变量类型的意义

类型决定了数据在内存中占据多大内存空间

  • float类型在内存中占据8个字节
  • int 动态扩容
  • bool为一个字节

类型约定了能对这个变量做了什么样的工作

  • 例如int / float 类型的变量,可以进行+ - * / 等操作
  • 而str类型的变量,只能进行+(并且行为是字符串拼接),不能进行 - * / ,但是还能使用len等其他操作 

四、动态类型特性 

在Python中,一个变量是什么类型,是可以在"程序运行"过程中发生变化的(也就是变量类型是可以改变的)。这个特性称为“动态类型”

a = 10
print(type(a))
a = 'hello'
print(type(a))

大家注意,程序执行过程中,a的类型从int变为str了,而这是在c++/Java中是不行的

  • 静态类型

程序运行时,变量的类型始终不变

  • 动态类型

程序运行时,变量的类型是可以改变的

一个编程语言,是否为动态类型,只取决于运行时,类型是否发生改变,不取决于变量定义的时候是否声明类型

当然了,动态类型是一把双刃剑

  • 对于中小型程序,他能大大节约代码量 
  • 对于大型程序,则提高了模块之间交互的成本(A提供的代码很难被B看懂)

其实这就是为什么很多公司一开始使用Python语言来完成项目,而后期又要针对原来的代码用其他语言重构

 五、注释

在编程中,注释就是写在代码中、给程序员看的“说明文字”。它不会被 Python 解释器执行,也就是说,计算机不会运行注释里的内容,但它是写给人看的

5.1 注释的作用

注释的作用

  • 解释代码:让别人(或未来的你)更容易理解代码的意图。
  • 调试代码:暂时屏蔽某段代码,方便调试。
  • 文档说明:在大型项目中,注释可以作为文档的一部分,说明函数、类或模块的功能。
  • 协作沟通:多人协作时,注释可以说明你为什么这样写代码。

5.2 注释的方式

5.2.1.单行注释

使用 # 符号,从 # 开始到这一行的末尾都会被当作注释。

# 这是一个打印语句,输出“你好,Python!”
print("你好,Python!")

5.2.2 多行注释(块注释)

虽然 Python 没有专门的多行注释语法,但我们可以使用三引号 '''""" 来实现多行注释:

'''
这是一个多行注释的例子。
你可以在这里写很多行说明。
这些内容不会被执行。
'''
print("多行注释演示")

注意:严格来说,三引号是字符串,如果它没有被赋值给变量,也不会被运行,因此可以当作注释使用。但在某些上下文中,它可能作为文档字符串(docstring)使用,我们后面会专门讲解。

5.2.3 注释的使用规范 

 注释的使用规范(建议):

类型写法示例
单行注释# 注释内容# 计算两个数的和
行末注释代码 # 注释x = 5 # 设置初始值
多行注释''' 注释内容 ''' 或 """ 注释内容 """
"""
这是一个函数说明:
输入两个参数,返回它们的和。
"""

5.2.4 优秀注释的例子 

注释写得好,代码更清晰!

# 定义两个变量
a = 3
b = 4# 计算平方和
c = a**2 + b**2# 输出结果
print(c)

对比没有注释的版本: 

a = 3
b = 4
c = a**2 + b**2
print(c)

你觉得哪种更容易理解呢?没错,加上注释之后,即使是一个新接触这段代码的人,也能迅速理解每一行代码的目的。

六、输入输出

6.1 和用户交用

  • 用户把消息传递给程序的过程,称为"输入"
  • 用户把结果展示给用户的过程,称为"输出"

输入输出的最基本方法就是控制台:用户通过控制台输入一些字符串,程序再通过控制台打印一些字符串

vs code运行程序的时候,下方弹出的窗口就是控制台

Mac OS自带的终端,也可以视为控制台

输入输出的最常见方法是图形化界面。我们平常对于电脑的操作基本都是图形化界面 

6.2 通过控制台输出

Python使用print函数输出到控制台

print('hello')

不仅可以输出一个字符串,还可以输出一个其他类型的变量

a = 10
print(a)
b = True
print(b)

  

更多的时候,我们希望能够输出的内容是混合了字符串的变量

例如:输出num = 10

num = 10
print(f'num = {num}')

  注意:这里的 f'num = {num}' 是一种格式化字符串,使用{}来嵌入变量或表达式

例如:

#格式化字符串
a = 10
#希望数字和字符串混在一起
print(f'a = {a + 10}')

 

6.3 通过控制台输入

Python使用input函数输入,从控制台读取用户的输入

# 通过控制台输入
num = 0
num = input('请输入一个整数:')
print(f'你输入的整数是{num}')

当我们在控制台输入10,再按回车,就运行完成

注意:

  • input的参数相当于一个"提示信息",也可以没有
  • input的返回值就是用户输入的内容,是字符串类型 

 下面这个代码大家想想会输出什么?两数相加吗?

a = input('请输入一个整数:')
b = input('请输入二个整数:')print(f'a + b = {a + b}')

 

答案显而易见:此处的结果是字符串的连接而不是算术运算

那我们该怎么进行算术运算呢:转换类型

a = input('请输入一个整数:')
b = input('请输入二个整数:')a = int(a)
b = int(b)print(f'a + b = {a + b}')

小练习:输入5个小数,求5个小数的平均值

a = input('请输入一个整数:')
b = input('请输入二个整数:')
c = input('请输入三个整数:')
d = input('请输入四个整数:')
e = input('请输入五个整数:')a = int(a)
b = int(b)
c = int(c)
d = int(d)
e = int(e)avg = (a + b + c + d + e)/5
print(f'平均值: {avg}')

 


 

http://www.dtcms.com/a/299918.html

相关文章:

  • Java 面向对象之方法与方法重载:从基础到实践
  • Go 多模块仓库标签管理教程
  • 详解Aerospike数据库在Linux系统上的安装流程
  • LLM中 词嵌入向量中的正负值表示什么含义
  • Aerospike与Redis深度对比:从架构到性能的全方位解析
  • 【HTML】<script>元素中的 defer 和 async 属性详解
  • 认识泛型、泛型类和泛型接口
  • 服务器生成图片
  • 力扣872. 叶子相似的树
  • Ubuntu系统安装EasyTier组网
  • rt-thread 5.2.1 基于at-start-f437开发过程记录
  • Flutter开发 BUG 记录 (持续更新)
  • [特殊字符] 嵌入式队列精要指南:数据流的艺术与实战
  • Python爬虫实战:研究furl库相关技术
  • 阿里开源Qwen3-Coder,编程大模型进入高效时代
  • 文件操作认识
  • 差模干扰 共模干扰
  • QUIC协议如何在UDP基础上解决网络切换问题
  • PCIe 的L状态(链路状态)和D状态(设备状态)
  • 命令行创建 UV 环境及本地化实战演示—— 基于《Python 多版本与开发环境治理架构设计》的最佳实践
  • oracle数据库表空间碎片整理
  • 基于java的在线教育平台管理系统、在线学习系统的设计与实现
  • 图解同步/异步,阻塞/非阻塞,五种模型之差
  • 【AcWing 830题解】单调栈
  • Node.js 模拟 Linux 环境
  • 栈----2.最小栈
  • S7-200 SMART 数字量 I/O 组态指南:从参数设置到实战案例
  • OpenFeign-远程调用
  • 解决英文版Windows10安装WireShark报错
  • 秋招Day19 - 分布式 - 分布式设计