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

Python语法基础(变量 注释 数据类型 输入与输出 运算符 缩进)

目录

  • 变量
    • 变量命名规则
    • 变量的类型
    • 变量的创建
    • 变量的作用域
  • 注释的方法
  • 数据类型
    • 对象和引用的概念
    • Number(数字)
    • 数据转换
  • 输入与输出
    • 输入函数
    • 输出函数
    • 输出函数的end参数
    • 输出格式
    • 多行语句
  • 运算符
    • 算术运算符
    • 赋值运算符
    • 三目运算符
    • 运算符的优先级
  • 缩进
    • 缩进格式
    • 注意事项
    • 层级嵌套


变量

标识符:用户编写代码时,对变量、类、方法等编写的名字,叫做标识符。

变量命名规则

  1. 变量名必须以字母或下划线字符开头
  2. 变量名不能以数字开头
  3. 变量名称只能包含字母数字字符和下划线
  4. 变量名区分大小写
  5. 不能与关键字重复

变量的类型

类型说明使用
整型变量(int)用来存储整数age = 20
浮点型变量(float)用来存储实数price = 3.99
字符串型变量(str)用来存储字符串name = "Tom"

Python 没有类似 C++ 的long long 和 double 等类型,遇到数据溢出时,会自动扩容。

查看类型的函数:type()

print(type(text))

变量的创建

相比C++的变量创建,Python不需要附加变量的类型。

r = 17
s = "Hello World!"

变量的作用域

在Python中,没有像C++或C语言中的main函数那样的特定入口点。当运行Python程序时,解释器会从脚本的第一行开始执行,逐行执行代码。

global_variable = 42  # 这是一个全局变量def some_function():global num  # 声明num为全局变量print(global_variable)  # 可以在函数内部访问全局变量some_function()
print(global_variable)  # 可以在函数外部访问全局变量

注释的方法

# 单行注释'''
多行注释
'''

数据类型

对象和引用的概念

  1. 对象(Object)是数据的抽象表示,它将数据与操作数据的函数绑定在一起,形成一个完整的实体。对象包含了数据(所谓的属性)和操作数据的方法。
  2. 引用(Reference)则可以看成指向对象的指针。当我们用一个变量名来指向一个对象时,实际上是建立了一个指向该对象的引用。
  3. Python中的所有事物都是对象,像数字、字符串、列表、字典等数据类型,都是对象,函数也是对象,Modules同样也是对象。
  4. 当我们使用一个变量名时,实际上是在操作对象引用,而不是直接操作对象本身。也就是说,变量名仅仅是一个指向目标对象的引用。
  5. 多个变量名可以指向同一个对象,即多个引用可以指向同一个对象。这就是所谓的“传对象引用”。
  6. 如果无引用指向一个对象,该对象将被垃圾回收。

下面我们通过一个简单的例子来说明Python的对象和引用:

a = 123

在这个例子中,我们定义了一个变量a,并将其赋值为整数123。实际上,a是一个引用,它存储了整数对象123的地址。

b = a

现在我们定义了另一个变量b,并将其赋值为变量a的值。由于a存储的是整数对象123的地址,因此b也存储了这个地址。因此,a和b引用了同一个对象。

del a

现在我们删除了变量a。由于a和b引用了同一个对象,因此Python并不会释放整数对象123所占用的内存。只有当没有任何引用指向这个对象时,Python才会释放它所占用的内存。

del b

现在我们删除了变量b。由于没有任何引用指向整数对象123,因此Python会释放它所占用的内存。

Number(数字)

Python Number 数据类型用于存储数值。

数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间。

以下实例在变量赋值时 Number 对象将被创建:

var1 = 5
var2 = 10

可以使用del语句删除一些 Number 对象引用。

del语句的语法是:

del var1[,var2[,var3[....,varN]]]]

可以通过使用del语句删除单个或多个对象,例如:

del var
del var1,var2, ...... , varN

数据转换

语句(函数)说明
int(x)将x转换为一个整数
float(x)将x转换为一个浮点数
str(x)将对象 x 转换为字符串

str(x) 相较于C++中的 to_string() 函数
int(x) 可以相较于C++中的 stoi() 函数

s = str(123)

注意:

  • 任何类型,都可以通过str(),转换成字符串。
  • 字符串内必须真的是数字,才可以将字符串转换为数字。

输入与输出

输入函数

使用 input() 输入函数来接收输入流的数据

input语句获取的数据类型最终都是:字符串类型的数据

需要自己转换数据类型

使用方法:

  1. 不加参数
  2. 加参数(提示信息)
s = input()
r = input("请输入数字")  # 在输入前会有提示信息

输出函数

print() 输出函数(可接 '\n' 换行)
与 C++ 中的 cout 使用类似
与 java 中的print使用相同 print(str1 + str2 + num) 可以各种拼接

import math
r = float(input("请输入圆的半径:> "))
s = r ** 2 * math.pi / 2  # 将字符串类型的数据转换为float类型
print(s)

输出函数的end参数

在Python中,print()函数默认在输出内容之后会自动添加换行符。如果你希望取消自动换行,可以使用end参数将其设置为空字符串或其他值,以替代默认的换行符。

例如:

print("Hello, ", end='')
print("World")
# Hello, World

上述代码中,将end参数设置为空字符串,因此不会在输出内容之后添加换行符,而是继续在同一行上输出后续内容。输出结果将是"Hello, World"。

你还可以使用其他字符来代替默认的换行符,例如:

print("This is a sentence.", end='!!\n')

这将在输出内容之后添加双感叹号和一个换行符,产生类似"This is a sentence.!!"的输出。

通过调整end参数,你可以控制print()函数的输出格式。


输出格式

w = input("今天的天气情况(可选项:晴天、阴天):")
if w == "晴天":print("打球")
else:print(f"天⽓{w}不打球")
# 等同于 print("天⽓%s不打球" % w)

f 是 Python 中的 f-string 的标志符号,允许在字符串中嵌入变量的值,{w} 是一个占位符,它将被替换为变量 w 的值。当你使用这个字符串时,f 将会触发字符串内的变量替换,生成最终的字符串,其中 {w}w 的值替代。

%s 替换字符串,与C++中的类似用法,不过后面需 加上% + 替换变量。

print(f"对应的摄⽒温度等于: {c:.2f}")  # 进行小数点后两位数的输出
符 号描 述
%c格式化字符及其ASCII码
%s格式化字符串
%d格式化整数
%u格式化无符号整型
%o格式化无符号八进制数
%x格式化无符号十六进制数
%X格式化无符号十六进制数(大写)
%f格式化浮点数字,可指定小数点后的精度
%e用科学计数法格式化浮点数
%E作用同%e,用科学计数法格式化浮点数
%g%f和%e的简写
%G%f 和 %E 的简写
%p用十六进制数格式化变量的地址

多行语句

在编写代码中通常是一行写完一条语句,但如果变量名很长,我们可以使用反斜杠 \ 来实现多行语句在 [], {}, 或 () 中的多行语句。

text1="明天天气"
text2="怎么样,是晴天"
text3= "还是雨天?"print(text1 + \text2 + \text3)

运算符

算术运算符

运算符说明实例结果
+12.45 + 1527.45
-4.56 - 0.264.3
*5 * 3.618.0
/除法7 / 23.5
//整除(向下取整)7 // 23
%取余7 % 21
**幂运算2 ** 4164

赋值运算符

运算符说 明用法举例等价形式
=最基本的赋值运算x = yx = y
+=加赋值x += yx = x + y
-=减赋值x -= yx = x - y
*=乘赋值x *= yx = x * y
/=除赋值x /= yx = x / y
%=取余数赋值x %= yx = x % y
**=幂赋值x **= yx = x ** y
//=取整数赋值x //= yx = x // y
&=按位与赋值x &= yx = x & y
=按位或赋值 x= yx = x
^=按位异或赋值x ^= yx = x ^ y
<<=左移赋值x <<= yx = x << y,这里的 y 指的是左移的位数
<<=右移赋值x >>= yx = x >> y,这里的 y 指的是右移的位数

三目运算符

与 C++ 条件顺序不同

exp1 if contion else exp2

求两数最大值的例子:

a, b = 10, 100
max_element = a if a > b else b
print(max_element)

运算符的优先级

在这里插入图片描述

缩进

Python最具特⾊的语法之⼀是⽤缩进代替花括号{},而花括号是Java、C++语⾔中表达逻辑关系的语法。

缩进格式

一般习惯采用四个空格,即TAB一次缩进。

w = input("今天的天气情况(可选项:晴天、阴天):")
if w == "晴天":print("打球")
else:print(f"天⽓{w}不打球")
# 等同于 print("天⽓%s不打球" % w)

注意事项

同一代码块缩进量要相同。

Python 虽然不限制代码块的缩进量,你可以随意缩进 n 个空格,但是,同一个代码块内的所有语句都必须拥有相同的缩进量,不能一会缩进 2 个空格,一会缩进 4 个空格。

下面的代码是一个反面教材:

age = int( input("请输入你的年龄:") )
if age < 18 :print("你还未成年,建议在家人陪同下使用该软件!")print("未成年人如果得到了家长的同意,请忽略以上提示。")  #缩进量不对

运行这段代码,Python 解释器会报出语法错误:

SyntaxError: unexpected indent
# 语法错误:意外的缩进

这段代码中,第一个 print() 语句缩进了 4 个空格,第二个 print() 语句缩进了 6 个空格,缩进量不同导致它们不是同一个代码块。Python 会认为第一个 print() 语句是 if 的执行体,而第二个 print() 是一个意外的存在,不知道该把它当做谁的代码块,所以解析失败,报错。


另外需要注意的是,不需要使用代码块的地方千万不要缩进,一旦缩进就会产生一个代码块。

下面的代码是一个反面教材:

info = "Hello"print(info)

这两条简单的语句没有包含分支、循环、函数、类等结构,不应该使用缩进。


层级嵌套

w = input("请输⼊天⽓情况(可选项:晴天、阴天):")
fri_n = input("请输⼊打球伙伴数:")
fri_n = int(fri_n)
if w == "晴天":if fri_n >= 3:print("我们去打球吧")else:print(f"⼈⼿不够")
else:print(f"天⽓{w}不打球")

相关文章:

Python语法基础(变量 注释 数据类型 输入与输出 运算符 缩进)

目录 变量变量命名规则变量的类型变量的创建变量的作用域 注释的方法数据类型对象和引用的概念Number(数字)数据转换 输入与输出输入函数输出函数输出函数的end参数输出格式多行语句 运算符算术运算符赋值运算符三目运算符运算符的优先级 缩进缩进格式注意事项层级嵌套 变量 标…...

linux espeak语音tts;pyttsx3 ubuntu使用

整体使用espeak声音很机械不太自然 1、linux espeak语音tts 安装&#xff1a; sudo apt install espeak使用&#xff1a; #中文男声 espeak -v zh 你好 #中文女声 espeak -v zhf3 你好 #粤语男声 espeak -v zhy 你好注意&#xff1a;espeak -v zh 你好 &#xff08;Full d…...

小白该如何学习Linux操作系统?

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 Linux作为一种开源操作系…...

2023双十一:实体门店闯入,第二战场全面开战

“闺女&#xff0c;吃饺子了吗&#xff1f;”11月8日&#xff0c;立冬&#xff0c;忙碌一天的陈曦回家路上接到母亲电话&#xff0c;才想起来家里冷冻水饺没了&#xff0c;又不想再去超市&#xff0c;直接打开美团买菜买了两袋&#xff0c;回家就煮了吃。当然&#xff0c;最终她…...

操作系统·处理机调度死锁

3.1 处理机调度概述 3.1.1 处理机调度概述 高级调度 (High level Scheduling)决定把外存上哪些作业调入内存、创建进程、分配资源。高级调度又称作业调度、长程调度或宏观调度。只在批处理系统中有高级调度。 中级调度 (Middle level Scheduling)完成进程的部分或全部在内、…...

SQL第四次上机实验

1.查询借阅了计算机类或者文学类图书的读者的借书证号 USE TSGL GO SELECT DISTINCT Reader.Lno FROM Book,Lend,Reader WHERE Book.ISBNLend.ISBN AND Lend.LnoReader.Lno AND Class 计算机类 OR Class 文学类2.查询同时借阅了计算机类和文学类图书的读者的借书证号 USE T…...

读书笔记:彼得·德鲁克《认识管理》第11章 若干例外及经验教训

一、章节内容概述 例外的服务机构不仅表明服务机构实现卓越绩效不是天方夜谭&#xff0c;而 且指明了实现的方法。这一课&#xff0c;是美国电话电报公司给“自然垄断行业”上的;是19世纪后期处于创建阶段的美国现代大学给学校或医院类机构上的;是20世纪30年代的田纳西河流域管…...

JVM-虚拟机的故障处理与调优案例分析

案例1&#xff1a;大内存硬件上的程序部署策略 一个15万PV/日左右的在线文档类型网站最近更换了硬件系统&#xff0c;服务器的硬件为四路志强处理器、16GB物理内存&#xff0c;操作系统为64位CentOS 5.4&#xff0c;Resin作为Web服务器。整个服务器暂时没有部署别的应用&#…...

JMeter 相关的面试题

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;加入1000人软件测试技术学习交流群&#x1f4e2;资源分享&#xff1a;进了字节跳动之后&#xff0c;才…...

你在React项目中是如何使用Redux的? 项目结构是如何划分的?

一、背景 在前面文章了解中&#xff0c;我们了解到redux是用于数据状态管理&#xff0c;而react是一个视图层面的库 如果将两者连接在一起&#xff0c;可以使用官方推荐react-redux库&#xff0c;其具有高效且灵活的特性 react-redux将组件分成&#xff1a; 容器组件&#…...

[每周一更]-(第71期):DevOps 是什么?

Wiki的解释&#xff1a; DevOps&#xff08;Development和Operations的混成词&#xff09;是一种重视“软件开发人员&#xff08;Dev&#xff09;”和“IT运维技术人员&#xff08;Ops&#xff09;”之间沟通合作的文化、运动或惯例。 通过自动化“软件交付”和“架构变更”的…...

k8s的安装部署,详细过程展示(保姆级安装教程)

k8s应用部署方式演变 在部署应用程序的方式上&#xff0c;主要经历了三个时代&#xff1a; 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上 优点&#xff1a;简单&#xff0c;不需要其它技术的参与 缺点&#xff1a;不能为应用程序定义资源使用…...

基于windows、GDAL2.2.3版本和Java集成安装和使用GDAL库的方法

基于windows、GDAL2.2.3版本和Java集成安装和使用GDAL库的方法 一、下载gdal windows版本64位2.2.3版本 下载地址&#xff1a; https://www.gisinternals.com/archive.php 找到gdal-202-1911-x64-core.msi下载并安装 安装后默认目录为&#xff1a;C:\Program Files\GDAL 二、…...

AlphaControls控件TsRadioGroup的使用

通常使用AlphaControls控件中的TsRadioGroup时&#xff0c;往往使用默认值&#xff0c;会造成TsRadioGroup标题被TsRadioGroup的ITEMs占用&#xff0c;严重影响美观&#xff1a; 解决方案&#xff0c;通过对TsRadioGroup的ContentVOffset属性&#xff0c;设置为10。即可立即改善…...

安卓常见设计模式8------享元模式(Kotlin版)

1. W1 是什么&#xff0c;什么是享元模式&#xff1f;​ 享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;用于有效地支持大量细粒度的对象共享。在 Android 中&#xff0c;享元模式可以用于减少内存使用和提高性能&#xff0c;特别是在需…...

day54 django中orm数据库增删改查

昨日内容回顾 三板斧问题 HttpResponse # 返回的是字符串 render # 渲染一个HTML静态文件&#xff0c;模板文件 redirect # 重定向的 ​ """在视图文件中得视图函数必须要接收一个形参request&#xff0c;并且&#xff0c;视图…...

【js逆向实战】某sakura动漫视频逆向

写在前面 再写一个逆向实战&#xff0c;后面写点爬虫程序来实现一下。 网站简介与逆向目标 经典的一个视频网站&#xff0c;大多数视频网站走的是M3U8协议&#xff0c;就是一个分段传输&#xff0c;其实这里就有两个分支。 通过传统的m3u8协议&#xff0c;我们可以直接进行分…...

L2-015 互评成绩

学生互评作业的简单规则是这样定的&#xff1a;每个人的作业会被k个同学评审&#xff0c;得到k个成绩。系统需要去掉一个最高分和一个最低分&#xff0c;将剩下的分数取平均&#xff0c;就得到这个学生的最后成绩。本题就要求你编写这个互评系统的算分模块。 输入格式&#xf…...

【Docker安装RockeMQ:基于Windows宿主机,并重点解决docker rocketMQ安装情况下控制台无法访问的问题】

拉取镜像 docker pull rocketmqinc/rocketmq创建网络 docker network create rocketmq-net构建namesrv容器 docker run -d -p 9876:9876 -v D:/dockerFile/rocketmq/namesrv/logs:/root/logs -v D:/dockerFile/rocketmq/namesrv/store:/root/store --network rocketmq-net -…...

Android Studio——android项目运行main()函数

报错&#xff1a; 解决&#xff1a; 如图&#xff0c;在 .idea 的 gradle.xml 中标注的位置增加如下一行代码即可<option name"delegatedBuild" value"false" />...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...