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

【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种)

  1. 格式一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语言无法这样。

  2. 格式二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格式可以使表达式不拘泥于顺序,而按键值配对,更加灵活
  3. 格式三print(f"普通字符{常量、变量、表达式}")

    year = 2023
    print(f"我的年龄是{18}岁,今年是{year}年,1+2={1+2}")
    

    f - 格式化字符串(Python3.6新增百分号输出格式format 输出格式更加高效简洁


format 格式总结

格式样例输出说明
{:.nf}{:.0f} 3.14153保留n位小数(n = 0,1…)
{:+.nf}{:+.2f} 3.1415+3.14带符号保留n位小数
{:m>nd}{:0>3d} 1001向左补0
{:m<nd}{:x<3d} 11xx向右补x
{:>nd}{:>3d} 1右对齐
{:<nd}{:<3d} 1左对齐
{:^nd}{:^3d} 1中间对齐
{:,}{:,} 100000100,000千位分隔符
{:%}{:.0%} 0.550%百分比格式
{:e}{:.1e} 50000005.0e+06指数格式

输入语句

语法格式形如

str1 = input(“提示信息”)

  • 输出提示信息后,等待用户输入
  • 一般存储至变量中,如password = input("请输入密码:")
  • 所有用户输入都视作字符串类型,如果后续用于数值比较,需要转换数据类型

显然,Python 优化了C语言中的输入语句,将用户提示输出语句输入绑定在一起。


基本语句

if 语句

i = 0;
if i > 1:# 逻辑代码pass
elif i < -1:# 逻辑代码pass
else:# 逻辑代码pass

ifelifelse划分分支,常用于单变量分类讨论。可以嵌套,但不推荐过多的嵌套,不够优雅。

注意

  1. Python 中用关键字 elif 代替了 else if
  2. 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. 基本语句

文章目录 注释&#xff08;Comment&#xff09;解释伴随行文本编码问题 输入输出语句&#xff08;Input & Output&#xff09;输出语句普通输出格式化输出&#xff08;3种&#xff09;format 格式总结 输入语句 基本语句if 语句match 语句&#xff08;Python3.10 新增&…...

兼顾友好与安全,隐私协议 Unijoin 助推新一轮 Web3 浪潮

区块链本身不仅崇尚去中心化&#xff0c;同时也崇尚公开透明&#xff0c;虽然这正在让 DAO 治理等变得更加公平&#xff0c;但它同时也是一把双刃剑&#xff0c;个人交易者尤其是一些巨鲸交易者的所以链上交易都被公之于众&#xff0c;这似乎并不是他们想要的结果。 所以从加密…...

TCP端口崩溃,msg:socket(): Too many open files

一、现象 linux系统中运行了一个TCP服务器&#xff0c;该服务器监听的TCP端口为10000。但是长时间运行时发现该端口会崩溃&#xff0c;TCP客户端连接该端口会失败&#xff1a; 可以看到进行三次握手时&#xff0c;TCP客户端向该TCP服务器的10000端口发送了SYN报文&#xff0c;…...

基于Laravel 5.6的运动健身类小程序前后端源码

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

NodeMCU ESP8266硬件开发板的熟悉

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

计算机毕业设计 基于SSM的在线预约导游系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…...

Mac 挂载 Alist网盘

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

【多模态融合】TransFusion学习笔记(1)

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

(二)正点原子STM32MP135移植——TF-A移植

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

将二叉搜索树转化为排序的双向链表

链接&#xff1a; ​​​​​​LCR 155. 将二叉搜索树转化为排序的双向链表 题解&#xff1a; /* // 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&#xff08;Dynamic Link Library&#xff0c;动态链接库&#xff09;是一种可执行文件&#xff0c;它包含了在程序运行时需要调用的代码和资源。DLL 文件的主要作用是实现代码和资源的共享&#xff0c;这样在多个程序之间就可以避免重复的代码和资源&#xff0c;从而节省系…...

通达信和同花顺能否实现程序化自动交易股票,量化交易如何实现?

以下写给正在寻找自动交易接口的朋友&#xff0c;首先&#xff0c;不是那种设置个简单条件的条件单&#xff0c;或者某些客户端上形同鸡肋的策略交易&#xff0c;那些策略根本称不上策略&#xff0c;还有各种限制&#xff0c;不支持这个不支持那个&#xff0c;可设置的参数也不…...

基于Kylin的数据统计分析平台架构设计与实现

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

Linux CentOS7 vim寄存器

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

摄影后期图像编辑软件Lightroom Classic 2023 mac中文特点介绍

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

一种4g扫码付费通电控制器方案

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

桌面自动化工具总结

引言:产品经理提出桌面程序需要自动化的测试,避免繁琐的人肉点击。说干就干。 现有自动化工具是五花八门,我找了两个框架。 这两个框架都是基于微软的UIA 框架,链接地址 https://learn.microsoft.com/en-us/windows/win32/winauto/uiauto-providerportal?source=recommen…...

Python入门教程 | Python 常用标准库概览

Python3 标准库概览 Python 标准库非常庞大&#xff0c;所提供的组件涉及范围十分广泛&#xff0c;使用标准库我们可以让您轻松地完成各种任务。 以下是一些 Python3 标准库中的模块&#xff1a; os 模块&#xff1a;os 模块提供了许多与操作系统交互的函数&#xff0c;例如创…...

【JavaScript】读取本地json文件并绘制表格

本文为避免跨域问题&#xff0c;使用了改造过的本地json文件的方法实现读取json数据并绘制表格。 如果发起http请求获取本地 json文件中数据&#xff0c;需要架设本地服务器&#xff0c;本文不做阐述。 概述 1、json在本地&#xff0c;并不需要从服务器下载。 2、采用jquery…...

前端笔试题总结,带答案和解析(一)

1. 执行以下程序&#xff0c;输出结果为&#xff08;&#xff09; 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&#xff0c;y的值为20&#xff0c;x < y返回结果为tru…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

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

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...