Python3 语法简明教程

目录

  • 0 前言
  • 1 输出语句、注释
    • 1.1 输出语句
    • 1.2 单行、多行注释
  • 2 变量与对象、输入语句
    • 2.1 变量与对象
    • 2.2 数字类型和运算符
    • 2.3 输入语句
  • 3 条件控制、循环语句
    • 3.1 条件控制
    • 3.2 循环语句
      • 3.2.1 while...else
      • 3.2.2 for...else
  • 4 字典
  • 5 元组、列表
    • 5.1 元组
    • 5.2 列表
  • 6 集合、推导式
    • 6.1 集合
    • 6.2 推导式

0 前言

本文是本人学习菜鸟教程的Python 3教程后,整理学习笔记而成。

本文主要给本人查询语法之用,也可供有C/C++基础的其他读者参阅Python 3的语法。OI/ACM选手大多使用C++,大学生学习的第一种语言一般是C;本文主要针对这些读者编写。

本文只包含Python 3的基本用法,大部分内容来自菜鸟教程,但未包含菜鸟教程的全部内容。如果有错误之处,敬请批评指正。

1 输出语句、注释

本节内容包括:

  1. print()的用法;
  2. Python 3的语法特点;
  3. 单行、多行注释的写法。

学习本节内容后你将掌握:

编写Hello World程序,并编写注释。

练习题

洛谷 P1000 超级玛丽游戏

1.1 输出语句

print()是常用的输出语句,可以将字符串打印到控制台中。

print('Hello, Python!')

注意到print()语句后没有分号。与C/C++相比,Python代码具有以下特点:

  1. 语句后分号可加可不加。 特别地,如果一行有多个语句,则它们都必须加分号;
  2. 不使用大括号{},使用缩进控制代码层次。 处于统一代码块的代码,缩进必须对齐。

此外,在Python中,'"没有区别。

1.2 单行、多行注释

单行注释以#开头,多行注释的开始和结束都是'''"""

# 第一个注释
# 第二个注释
'''
第三注释
第四注释
'''
"""
第五注释
第六注释
"""
print ("Hello, Python!")

2 变量与对象、输入语句

本节内容包括:

  1. 对象的类型;
  2. 变量的定义、赋值、删除等;
  3. 几种数字类型和运算符;
  4. input()的用法。

学习本节内容后你将掌握:

  1. 用Python处理简单数据,并进行简单数学计算;
  2. 从键盘读入数据;
  3. 数字类型强制转换。

练习题

洛谷 P1001 A+B Problem
洛谷 P1932 A+B A-B A*B A/B A%B Problem

2.3部分参考了此链接。

2.1 变量与对象

在Python中,变量没有类型,变量所指的对象才有类型。这与C/C++不同。

Python中的变量不需要声明。每个变量在使用前都必须赋值。

a=2		#int
b=2.9	#float
c="hi!"	#string
d=1+2j	#complex
e=True	#bool

不再需要一个变量以后,可以删除它。

del a, b

2.2 数字类型和运算符

Python有int, float, bool, complex几种数字类型。可以用type()判断变量的类型。

>>> a, b, c, d = 20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>

也可以用isinstance()判断。

>>> a = 111
>>> isinstance(a, int)
True

Python的除法和C/C++相比略有不同。

  1. x//y,x除以y,结果向下取整。比如-9//2=-57.5//3.5=2.0
  2. x/y,若x,y是实数,则永远返回一个浮点数;否则返回复数(实数部分则不一定是浮点数)。

此外,x**y表示x的y次方,相当于pow(x, y)。比如10**3=1000

2.3 输入语句

input()是常用的输入语句,可以给出提示信息,并从键盘中读入字符串。

str=input('Please input a string...')

请看以下示例。

a = input("Enter a number: ")
b = input("Enter another number: ")print("aType: ", type(a))
print("bType: ", type(b))result = a + b
print("resultValue: ", result)
print("resultType: ", type(result))
Enter a number: 100↙
Enter another number: 45↙
aType:  <class 'str'>
bType:  <class 'str'>
resultValue:  10045
resultType:  <class 'str'>

本例中我们输入了两个整数,希望计算出它们的和,但是事与愿违,Python只是它们当成了字符串,+起到了拼接字符串的作用,而不是求和的作用。

为了解决这个问题,可以用类似C/C++中的强制转换,把string类对象转为int类对象。

a=int(a)
b=int(b)

除了int(),Python还有ord(), chr()

ord() 将字符转换为对应的 ASCII 码,相当于C/C++的 int()
chr() 将 ASCII 码转换为对应的字符,相当于C/C++的 char()

3 条件控制、循环语句

本节内容包括:

  1. 条件控制语法;
  2. 循环语句语法。

学习本节内容后你将掌握:

  1. if, while...else, for...else的语法;
  2. for语句的迭代格式。

练习题

洛谷 P1035 [NOIP2002 普及组] 级数求和

3.1 条件控制

if语句格式如下。

if condition_1:statement_block_1
elif condition_2:statement_block_2
else:statement_block_3

3.2 循环语句

Python没有do...while,有while...elsefor...else

3.2.1 while…else

while condition:statement1
else:statement2

其中else部分可省略。

else的部分只会在依靠whilecondition跳出循环以后才会执行。如果whilebreak语句结束,则else部分不会执行。比如:

a=1
while True:print(a)a=a+1if(a>3):break
else:print('else')
1
2
3

3.2.2 for…else

与C/C++不同的是,python 的 for 只需给出变量的变化范围集合(sequence),而无需给出遍历方式(例如从1到n)。

for <variable> in <sequence>:<statements>
else:<statements>

比如:

sites = ["Baidu", "Google","Runoob","Taobao"]
for site in sites:print(site)
word = 'runoob'
for letter in word:print(letter)
for number in range(1, 6):print(number)
else:print("Finally finished!")

range(st, ed, step) 能生成一个等差数列,范围是 [ s t , e d ) [st,ed) [st,ed),公差是 s t e p step step(不指定则为1)。因此上述代码的运行结果是:

1
2
3
4
5
Finally finished!

4 字典

本节内容包括:

字典的用法。

学习本节内容后你将掌握:

字典的定义、赋值、修改、迭代。

练习题

洛谷 P2580 于是他错误的点名开始了

字典(Dictionary)是key -> value无序的映射集合。类似于C/C++的 map,但不要求 keyvalue 的类型分别一致。

dict={}
dict['hello']=1
dict[2]='world'
dt={2:'This is ',1:'another dictionary'}print(dict['hello']);
print(dict[2]);
print(dt);
print(dt.keys());
print(dt.values());

字典可以迭代,比如:

dt={2:'This is ',1:'another dictionary'}
for i in dt.keys():print(dt[i],end=' ')
This is  another dictionary 

5 元组、列表

本节内容包括:

元组、列表的用法。

学习本节内容后你将掌握:

  1. 元组的定义、赋值、迭代等。
  2. 列表的定义、 赋值、修改、迭代等。

练习题

P1459 [USACO2.1] 三值的排序 Sorting a Three-Valued Sequence
P1162 填涂颜色

5.1 元组

元组是一种只读的列表,在定义后便不可更改,类似于const版本的C/C++的list。

元组可以被双向索引,如下图所示。非负数代表正向索引,负数代表反向索引。
在这里插入图片描述

tup=('Google','Runoob',1997,2000,26.8,0)
print(tup[2])
print(tup[-2])

a+b表示首尾相接,a*4表示a+a+a+a。此外,元组也可以迭代:

for x in (1, 2, 3): print (x, end=" ")

len(t)可以求元组t的元素个数。

5.2 列表

list.append()可以在列表末尾插入一个元素,del可以删除一个元素。

list.append('Baidu')
del list[2]

其余与元组类似。

6 集合、推导式

本节内容包括:

  1. 集合的用法;
  2. 表达式的用法。

学习本节内容后你将掌握:

  1. 集合的定义、赋值、运算等;
  2. 表达式的语法和用法。

6.1 集合

顾名思义,每种元素在集合中至多只能出现一次。

>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)                      # 这里演示的是去重功能
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket                 # 快速判断元素是否在集合内
True
>>> 'crabgrass' in basket
False

下面展示两个集合间的运算。

>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  
{'a', 'r', 'b', 'c', 'd'}
>>> a - b                              # 集合a中包含而集合b中不包含的元素
{'r', 'd', 'b'}
>>> a | b                              # 集合a或b中包含的所有元素
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b                              # 集合a和b中都包含了的元素
{'a', 'c'}
>>> a ^ b                              # 不同时包含于a和b的元素
{'r', 'd', 'b', 'm', 'z', 'l'}

set.add(x)x加入集合set中,set.discard(x)x从集合set删除。

此外,还有 len()clear()x in set 等。

6.2 推导式

推导式可以用简短的代码描述一类对象,就像数学中的集合的一种定义方法
{ x ∣ 一个推导式 } \{x|一个推导式\} {x一个推导式}

推导式有两种格式。

表达式 for 变量 in 列表
表达式 for 变量 in 列表 if 条件

对列表、字典、集合、元组都适用。举例如下:

>>> names = ['Bob','Tom','alice','Jerry','Wendy','Smith']
>>> new_names = [name.upper() for name in names if len(name)>3]
>>> print(new_names)
['ALICE', 'JERRY', 'WENDY', 'SMITH']
listdemo = ['Google','Runoob', 'Taobao']
# 将列表中各字符串值为键,各字符串的长度为值,组成键值对
>>> newdict = {key:len(key) for key in listdemo}
>>> newdict
{'Google': 6, 'Runoob': 6, 'Taobao': 6}
>>> setnew = {i**2 for i in (1,2,3)}
>>> setnew
{1, 4, 9}
>>> a = (x for x in range(1,10))
>>> a
<generator object <genexpr> at 0x7faf6ee20a50>  # 返回的是生成器对象>>> tuple(a)       # 使用 tuple() 函数,可以直接将生成器对象转换成元组
(1, 2, 3, 4, 5, 6, 7, 8, 9)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/136791.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言——贪吃蛇小游戏

目录 一、ncurse 1.1 为什么需要用ncurse&#xff1a; 1.2 ncurse的输入输出&#xff1a; 1.2.1 如何使用ncurse&#xff1a; 1.2.2 编译ncurse的程序&#xff1a; 1.2.3 测试输入一个按键ncurse的响应速度&#xff1a; 1.3 ncurse上下左右键获取&#xff1a; 1.3.1 如…

【IntelliJ IDEA】cmd和idea Terminal查看java版本不一致

问题描述 原来win10电脑上安装的是jdk8的版本&#xff0c;因某些原因&#xff0c;现在想换成jdk7的版本&#xff0c;修改环境变量后&#xff0c;在cmd中执行 [java -version]命令&#xff0c;显示的是7的版本。 但在idea的Terminal中执行&#xff0c;确实显示8的版本。 原因分…

基于深度强化学习的四旋翼无人机航线跟随

源自&#xff1a;指挥与控制学报 作者&#xff1a;杨志鹏 李波 甘志刚 梁诗阳 摘 要 针对无人机在空中执行航线跟随任务时无法对未知环境作出合理应对措施等问题, 提出了一种基于深度强化学习的四 旋翼无人机航线跟随方法. 通过无人机受力分析、欧拉角变换建立四旋翼无人…

2023.9.18 网络层 IP 协议详解

目录 IP协议 IPv4 32位 源IP 地址 / 32位 目的IP 地址 IP 地址管理 特殊 IP 路由选择 IP协议 IPv4 32位 源IP 地址 / 32位 目的IP 地址 基本知识&#xff1a; 在 IP 报头中一般表示为 32位 二进制整数日常生活中的 IP 一般将 32位 二进制整数&#xff0c;也就是 4字节 的二…

2023/9/19 -- C++/QT

作业 1> 登录框实现注册功能&#xff0c;将注册的结果放入文件中&#xff08;君子作业&#xff09; 2> 完成文本编辑器的保存工作 void Widget::on_saveBtn_clicked() {QString fileName QFileDialog::getSaveFileName(this,"另存为","./","…

036:vue导出页面生成pdf文件

第036个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

元数据管理平台Datahub0.10.5版本安装部署与导入各种元数据手册

官网文档连接 DataHub Quickstart Guide | DataHub (datahubproject.io) 本文所选择的Python的版本为3.8.16&#xff0c;Docker版本为20.10.0&#xff0c;Datahub为0.10.5版本 python必须为3.7以上的版本。0.10.5不支持以下的版本 如果要使用web上的 添加数据源 直接调用的…

中国提出FastSAM:在RTX3090上提升了ViT-H E(32×32) 50倍速度

文章目录 1. Abstract2. 背景介绍3. 框架详情 (Methodology)3.1 Overview3.2 All-instance Segmentation3.3 Prompt-guided Selection4. Experiments4.1 Run-time Efficiency Evaluation4.2 Zero-Shot Edge Detection4.2.1 BSDS5004.2.2 Sobel filtering4.2.3 NMS4.3 Zero-Shot…

Redis 列表操作实战(全)

目录 LINDEX 获取指定下标元素 LSET 指定下标添加元素 LPUSH 将元素插入列表头 LPUSHX RPUSH 将元素插入列表尾 RPUSHX LINSERT 将元素插入列表某位置之前 LLEN 列表长度 LPOP 取列表头元素 RPOP 取列表尾元素 BLPOP 阻塞式取列表头元素 BRPOP 阻塞式取列表尾元素…

视频监控系统/视频汇聚平台EasyCVR平台页面展示优化

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

企望制造ERP存在远程命令执行漏洞 附POC

文章目录 企望制造ERP存在远程命令执行漏洞 附POC1. 企望制造ERP简介2.漏洞描述3.影响版本4.fofa查询语句5.漏洞复现6.POC&EXP7.整改意见8.往期回顾 企望制造ERP存在远程命令执行漏洞 附POC 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播…

C# OpenCvSharp 图片模糊检测(拉普拉斯算子)

效果 项目 代码 using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Windows.Forms.VisualStyl…

python+django学习资料在线分享系统vue

本站是一个B/S模式系统&#xff0c;采用vue框架作为开发技术&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得校园资料分享平台管理工作系统化、规范化。技术栈 后端&#xff1a;pyth…

零基础学前端(四)1. 重点讲解 CSS:盒子模型、样式选择器

1. 该篇适用于从零基础学习前端的小白 2. 初学者不懂代码得含义也要坚持模仿逐行敲代码&#xff0c;以身体感悟带动头脑去理解新知识 3. 初学者切忌&#xff0c;不要眼花缭乱&#xff0c;不要四处找其它文档&#xff0c;要坚定一个教授者的方式&#xff0c;将其学通透&#xff…

RK3568平台开发系列讲解(驱动篇)RK3568 I2C总线介绍

🚀返回专栏总目录 文章目录 一、I2C 简介1.1、起始位1.2、停止位1.3、数据传输1.4、应答信号1.5、I2C 写时序1.6、I2C 读时序1.7、I2C 多字节读写时序二、RK3568 I2C 总线介绍沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将讲解RK3568 I2C总线特性。 一、…

使用 K 均值聚类进行颜色分割

介绍 颜色分割是计算机视觉中使用的一种技术,用于根据颜色识别和区分图像中的不同对象或区域。聚类算法可以自动将相似的颜色分组在一起,而不需要为每种颜色指定阈值。当处理具有大范围颜色的图像时,或者当事先不知道确切的阈值时,这非常有用。 在本教程中,我们将探讨如何…

Zipping

Zipping 信息收集端口扫描目录扫描webbanner信息收集 漏洞利用空字节绕过---->失败sqlI-preg_match bypass反弹shell 稳定维持 提权-共享库漏洞 参考&#xff1a;https://rouvin.gitbook.io/ibreakstuff/writeups/htb-season-2/zipping#sudo-privileges-greater-than-stock-…

【ComfyUI】RuntimeError: CUDA error: operation not supported

文章目录 前言解决办法方式一&#xff1a;黑名单策略方式二&#xff1a;启动时添加--disable-cuda-malloc 前言 最近好不容易&#xff0c;安装好ComfyUI后&#xff0c;启动也OK&#xff0c;点击生成图片时&#xff0c;报错了 got prompt model_type EPS adm 0 making attenti…

Postman应用——Collection、Folder和Request

文章目录 Collection新建CollectionCollection重命名保存Request到Collection在Collection下创建Request删除Collection Folder新建FolderFolder重命名保存Request到Folder在Folder下创建Request在Folder下创建Folder删除Folder Request创建临时RequestRequest重命名删除Reques…

【AAAI2023】Spatial-Spectral Transformer for Hyperspectral Image Denoising

论文&#xff1a;https://readpaper.com/paper/4694783227240398849 代码&#xff1a;https://github.com/MyuLi/SST 1、总体介绍 高光谱图像&#xff08;HSI&#xff09;去噪是后续HSI应用的关键预处理过程&#xff0c;但是基于CNN的方法需要在计算效率与非局部特征建模能力之…