【Python基础】4. 基本语句
文章目录
- 注释(Comment)
- 解释伴随行
- 文本编码问题
- 输入输出语句(Input & Output)
- 输出语句
- 普通输出
- 格式化输出(3种)
- format 格式总结
- 输入语句
- 基本语句
- if 语句
- match 语句(Python3.10 新增)
- for 循环语句
- while 循环语句
- while/for .. else语句
- continue 语句
- break 语句
- return 语句
- pass 语句
- 总结
注释(Comment)
- 单行注释
# 注释内容
#
井号,只能单行注释。 - 多行注释
由'''2023.1.21新年好! ''' """除了单引号双引号也可以哦 """
'''
或"""
包裹,可以多行注释,一般用于解释函数或程序功能。
解释伴随行
在一些编辑器中,新建 Python 模板会自带形如#!/usr/bin/env python
的注释 。
实际上,#!
是类Unix系统中的Shebang
符号,即解释伴随行。该代码告诉操作系统执行该脚本时,调用系统环境下的 python 解释器。可以在git bash
中使用,直接调用文件名执行。
$ ./test.py
在Windows系统中,该代码实际无效,可以删除。例如在power shell
中运行,仍需采用python [file]
形式调用。
python test.py
文本编码问题
在新建 Python 模板往往会自带以下注释之一,一般位于文件开头前两行。
# coding = utf-8
# -*- coding: utf-8 -*-
解释器会读取该注释,并按指定文本编码解码,从而避免乱码问题。
在Python2.x版本中,默认编码格式为ASCII,而Python3.x中,默认编码格式为UTF-8。
如果出现中文乱码或报错现象,可以指定编码格式为GBK。大小写皆可。
# coding = GBK
# coding = gbk
# -*- coding: GBK -*-
# -*- coding: gbk -*-
输入输出语句(Input & Output)
输入输出语句是实现人机交互的关键。
输出语句
完整格式形如print(*object(s), sep=' ', end='\n', file = sys.stdout, flush = False)
参数 | 含义 |
---|---|
*object(s) | 任意数量的输出,以逗号, 分隔 |
sep | 可选,指定如何分割多个输出对象,默认为空格' ' |
end | 可选,指定在末尾打印的内容,默认为换行'\n' |
file | 可选,写入方法的对象,默认为sys.stdout |
flush | 可选,指定输出是刷新(True )还是缓冲(False )。默认为False |
普通输出
语法格式形如
print(常量、变量、表达式列表)
实例为
print("Hello world")
a = 1
print(a)
print(2)
print(a, 2)
-
Python 可以同时输出多个值,输出结果由空格分隔,这是由
sep
参数默认为空格' '
决定的。而C语言必须书写多个格式声明才能实现。可见 Python 的输出功能更加简洁、强大。 -
Python 中一个 print 输出结束后会自动换行,而C语言的 printf 不会。这是由
end
参数默认为换行'\n'
决定的。
格式化输出(3种)
-
格式一:
print(格式控制 % 输出列表)
print("我今年的年龄%d" % 18) print("酒精浓度为%s%%" % 50) print("今年是%d,去年是%d,明年是%d" % (2023, 2022, 2024)) print("今年是%s,去年是%s,明年是%s" % (2023, 2022, 2024))
该格式与C语言类似。多个输出时用小括号包裹。输出百分号使用两个连续的百分号
%%
。Python 中
%s
既可以输出字符串,也可以输出整型和浮点型。C语言无法这样。 -
格式二:
print("普通字符{format格式}".format(输出列表))
# 无编号 print("我今年的年龄{}".format(18)) print("今年是{},去年是{},明年是{}".format(2023, 2022, 2024)) # 带编号 print("今年是{0},去年是{1},明年是{2}".format(2023, 2022, 2024)) print("今天是{0}年的尾声,你好{0},再见{0}".format(2022) # 带键值 print("我是{a},她是{b},{b}喜欢{a}".format(a = "小明", b = "小红"))
- format格式功能非常强大,风格与 C# 类似。详见 format 格式总结。
- 带编号的format格式在重复使用某些变量时具备优势,使得表达简洁,灵活。
- 带键值的format格式可以使表达式不拘泥于顺序,而按键值配对,更加灵活。
-
格式三:
print(f"普通字符{常量、变量、表达式}")
year = 2023 print(f"我的年龄是{18}岁,今年是{year}年,1+2={1+2}")
f - 格式化字符串(Python3.6新增) 比百分号输出格式与format 输出格式更加高效简洁。
format 格式总结
格式 | 样例 | 输出 | 说明 |
---|---|---|---|
{:.nf} | {:.0f} 3.1415 | 3 | 保留n位小数(n = 0,1…) |
{:+.nf} | {:+.2f} 3.1415 | +3.14 | 带符号保留n位小数 |
{:m>nd} | {:0>3d} 1 | 001 | 向左补0 |
{:m<nd} | {:x<3d} 1 | 1xx | 向右补x |
{:>nd} | {:>3d} 1 | 右对齐 | |
{:<nd} | {:<3d} 1 | 左对齐 | |
{:^nd} | {:^3d} 1 | 中间对齐 | |
{:,} | {:,} 100000 | 100,000 | 千位分隔符 |
{:%} | {:.0%} 0.5 | 50% | 百分比格式 |
{:e} | {:.1e} 5000000 | 5.0e+06 | 指数格式 |
输入语句
语法格式形如
str1 = input(“提示信息”)
- 输出提示信息后,等待用户输入
- 一般存储至变量中,如
password = input("请输入密码:")
- 所有用户输入都视作字符串类型,如果后续用于数值比较,需要转换数据类型。
显然,Python 优化了C语言中的输入语句,将用户提示输出语句和输入绑定在一起。
基本语句
if 语句
i = 0;
if i > 1:# 逻辑代码pass
elif i < -1:# 逻辑代码pass
else:# 逻辑代码pass
由if
、elif
、else
划分分支,常用于单变量分类讨论。可以嵌套,但不推荐过多的嵌套,不够优雅。
注意:
- Python 中用关键字
elif
代替了else if
。 pass
关键词用于给未完成的逻辑代码占位,避免语法报错。
match 语句(Python3.10 新增)
i = 1;
match i:case 0:# 逻辑代码passcase 1:# 逻辑代码passcase 2|3:# 逻辑代码passcase _:# 逻辑代码pass
match 语句用于多分支离散型数据分类。Python3.10 新增。
-
case _
类似C语言中的default,可以匹配任意字段。 -
当不同 case 子句的语句块一致,可以通过
|
设置多个匹配条件,共用语句块。
从形式和上述用法上match 语句和 C语言中的switch 语句几乎没什么不同,而且使用 if 语句也完全可以实现上述需求,那这种新特性的意义何在?
实际上,match 语句适用范围远远不止上述字面量的分类判断。列举一个比较重要的特性:match 语句可以将match
后的待匹配变量的值,赋值给case
后的变量
def func1(name):match name:case "":print("...")case myName:print(f"Hi, my name is {myName}!")
func1("TOM") # Hi, my name is TOM!
for 循环语句
# 1
str1 = "abcdef" # 字符串序列
for i in str:print(i)# 2
for i in range(1, 6):print(i) # 1 2 3 4 5# 3
str1 = "abcdef" # 字符串序列
for i, j in enumerate(str):print(f"第{i}个字母为{j}")# 4. 错误示例
list1 = [1, 2, 3, 4, 5]
for i, num in enumerate(list1):if num == 2:list1.remove(list1[i])print(num) # 1 2 4 5 与预期输出不符# 5. 正确示例
list1 = [1, 2, 3, 4, 5]
for i, num in enumerate(list1.copy()):if num == 2:list1.remove(list1[i])print(num) # 1 2 3 4 5
for 循环一般用于可迭代对象的遍历。
如对列表等可变类型进行循环操作 ,涉及增改删时需慎重。这些操作会改变原有列表元素,从而导致遍历结果异常。
正确且常用的操作是将列表通过copy
方法复制一份,对该复制列表进行遍历即可。
while 循环语句
i = 0
while i <= 5:# 逻辑代码i += 1
while 循环与 for 循环往往可以等价替换,常用于退出条件明确而循环次数未知的情况。
在游戏编程中,我们往往习惯用While True
无限循环包裹。
while/for … else语句
# 1. while..else
i = 0
while i <= 5:print(i)i += 1
else: # 循环正常退出时执行print("循环结束!")# 2. for..else
str1 = "abcdef"
for str in str1:print(str)
else: # 循环正常退出时执行print("正常结束!")
else 关键字可以和循环配合使用,这是C语言所不具备的特性。当循环正常退出时执行 else 后的代码。
注:break 会影响 else 的执行,continue 不会影响。
continue 语句
continue
用于循环语句中,跳过当前循环,继续下一个循环。注意计数器是否变化,否则容易死循环。
break 语句
break
用于循环语句或 switch 语句中,跳出当前层循环,不能跳出多层循环。
return 语句
# 无变量
return# 单个变量
return True
return x
return a+b# 多个变量
return a, b # 默认以元组形式返回
return (a, b) # 与上式等效
return [a, b] # 以列表形式返回
return {'1': a, '2': b} # 以字典形式返回
用于函数中,可以跳出当前函数。当缺省时,实际返回None
。
特别的,Python支持同时返回多个变量,默认以元组类型打包。这是C语言所不具备的。
pass 语句
pass
表示什么都不做。在编程的过程中,可以先用 pass
关键字占位,后续再补充逻辑。
总结
本章总结了诸多Python中的语句,现在,你可以书写一些简单的小程序了。
相关文章:
【Python基础】4. 基本语句
文章目录 注释(Comment)解释伴随行文本编码问题 输入输出语句(Input & Output)输出语句普通输出格式化输出(3种)format 格式总结 输入语句 基本语句if 语句match 语句(Python3.10 新增&…...
兼顾友好与安全,隐私协议 Unijoin 助推新一轮 Web3 浪潮
区块链本身不仅崇尚去中心化,同时也崇尚公开透明,虽然这正在让 DAO 治理等变得更加公平,但它同时也是一把双刃剑,个人交易者尤其是一些巨鲸交易者的所以链上交易都被公之于众,这似乎并不是他们想要的结果。 所以从加密…...

TCP端口崩溃,msg:socket(): Too many open files
一、现象 linux系统中运行了一个TCP服务器,该服务器监听的TCP端口为10000。但是长时间运行时发现该端口会崩溃,TCP客户端连接该端口会失败: 可以看到进行三次握手时,TCP客户端向该TCP服务器的10000端口发送了SYN报文,…...

基于Laravel 5.6的运动健身类小程序前后端源码
基于Laravel 5.6的运动健身、健康类小程序前后端源码,一套比较基础的运动健康、健身类小程序源码。朋友自己无聊写的,比较基础,有需要的可以拿去修修改改升级开发一下。 使用宝塔安装,比较省事,PHP相关的扩展需要启用…...

NodeMCU ESP8266硬件开发板的熟悉
文章目录 硬件开发环境的熟悉基础介绍什么是 ESP8266 NodeMCU?NodeMCU芯片ESP12-E 模组开发板 ESP8266 版本引脚图Power GND I2CGPIOADCUARTSPIPWMControl 总结 硬件开发环境的熟悉 基础介绍 什么是 ESP8266 NodeMCU? ESP8266是乐鑫开发的一款低成本 …...

计算机毕业设计 基于SSM的在线预约导游系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...

Mac 挂载 Alist网盘
挂载服务器的Alist 网盘到 Mac mac,使用的是 CloundMounter 这个软件进行挂载 http://ip:port/dav/ 需要在末尾加上 /dav/ 在一些服务器上,为了提供WebDAV服务,需要在URL地址的末尾添加"/dav/“。这是因为WebDAV协议规定了一些标准的URL路径&#x…...

【多模态融合】TransFusion学习笔记(1)
工作上主要还是以纯lidar的算法开发,部署以及系统架构设计为主。对于多模态融合(这里主要是只指Lidar和Camer的融合)这方面研究甚少。最近借助和朋友们讨论论文的契机接触了一下这方面的知识,起步是晚了一点,但好歹是开了个头。下面就借助TransFusion论文…...

(二)正点原子STM32MP135移植——TF-A移植
目录 一、TF-A概述 二、编译官方代码 2.1 解压源码 2.2 打补丁 2.3 编译准备 (1)修改Makfile.sdk (2)设置环境变量 (3)编译 三、移植 3.1 复制官方文件 3.2 修改电源 3.3 修改TF卡和emmc 3.4 添…...

将二叉搜索树转化为排序的双向链表
链接: LCR 155. 将二叉搜索树转化为排序的双向链表 题解: /* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node() {}Node(int _val) {val _val;left NULL;right NULL;}Node(int _val, Node* _left…...

电脑dll丢失应该怎么解决,dll文件丢失怎么恢复方法分享
DLL(Dynamic Link Library,动态链接库)是一种可执行文件,它包含了在程序运行时需要调用的代码和资源。DLL 文件的主要作用是实现代码和资源的共享,这样在多个程序之间就可以避免重复的代码和资源,从而节省系…...

通达信和同花顺能否实现程序化自动交易股票,量化交易如何实现?
以下写给正在寻找自动交易接口的朋友,首先,不是那种设置个简单条件的条件单,或者某些客户端上形同鸡肋的策略交易,那些策略根本称不上策略,还有各种限制,不支持这个不支持那个,可设置的参数也不…...

基于Kylin的数据统计分析平台架构设计与实现
目录 1 前言 2 关键模块 2.1 数据仓库的搭建 2.2 ETL 2.3 Kylin数据分析系统 2.4 数据可视化系统 2.5 报表模块 3 最终成果 4 遇到问题 1 前言 这是在TP-LINK公司云平台部门做的一个项目,总体包括云上数据统计平台的架构设计和组件开发,在此只做…...

Linux CentOS7 vim寄存器
计算机中通常所说的寄存器Register一般指的是CPU中的寄存器,用来暂存CPU处理所需要的指令、数据等。 vim中同样也有寄存器,使用的方式和CPU非常类似。 vim中的寄存器(register)作用和windows中的剪切板类似,不过vim中的寄存器不止一个&…...

摄影后期图像编辑软件Lightroom Classic 2023 mac中文特点介绍
Lightroom Classic 2023 mac是一款图像处理软件,是数字摄影后期制作的重要工具之一,lrc2023 mac适合数字摄影后期制作、摄影师、设计师等专业人士使用。 Lightroom Classic 2023 mac软件特点 高效的图像管理:Lightroom Classic提供了强大的图…...

一种4g扫码付费通电控制器方案
之前开发了一款扫码付款通电控制器 功能:用户扫码付款后设备通电,开始倒计时,倒计时结束后设备断电,资金到账商家的商家助手里面,腾讯会收取千分之6手续费。 产品主要应用场景 本产品主要应用于各类无人值守或者自助…...

桌面自动化工具总结
引言:产品经理提出桌面程序需要自动化的测试,避免繁琐的人肉点击。说干就干。 现有自动化工具是五花八门,我找了两个框架。 这两个框架都是基于微软的UIA 框架,链接地址 https://learn.microsoft.com/en-us/windows/win32/winauto/uiauto-providerportal?source=recommen…...
Python入门教程 | Python 常用标准库概览
Python3 标准库概览 Python 标准库非常庞大,所提供的组件涉及范围十分广泛,使用标准库我们可以让您轻松地完成各种任务。 以下是一些 Python3 标准库中的模块: os 模块:os 模块提供了许多与操作系统交互的函数,例如创…...

【JavaScript】读取本地json文件并绘制表格
本文为避免跨域问题,使用了改造过的本地json文件的方法实现读取json数据并绘制表格。 如果发起http请求获取本地 json文件中数据,需要架设本地服务器,本文不做阐述。 概述 1、json在本地,并不需要从服务器下载。 2、采用jquery…...
前端笔试题总结,带答案和解析(一)
1. 执行以下程序,输出结果为() var x 10; var y 20; var z x < y ? x:y; console.log(xx;yy;zz);A x11;y21;z11 B x11;y20;z10 C x11;y21;z10 D x11;y20;z11 初始化x的值为10,y的值为20,x < y返回结果为tru…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...