Python3 语法简明教程

目录

  • [0 前言](#0 前言)
  • [1 输出语句、注释](#1 输出语句、注释)
    • [1.1 输出语句](#1.1 输出语句)
    • [1.2 单行、多行注释](#1.2 单行、多行注释)
  • [2 变量与对象、输入语句](#2 变量与对象、输入语句)
    • [2.1 变量与对象](#2.1 变量与对象)
    • [2.2 数字类型和运算符](#2.2 数字类型和运算符)
    • [2.3 输入语句](#2.3 输入语句)
  • [3 条件控制、循环语句](#3 条件控制、循环语句)
    • [3.1 条件控制](#3.1 条件控制)
    • [3.2 循环语句](#3.2 循环语句)
      • [3.2.1 while...else](#3.2.1 while...else)
      • [3.2.2 for...else](#3.2.2 for...else)
  • [4 字典](#4 字典)
  • [5 元组、列表](#5 元组、列表)
    • [5.1 元组](#5.1 元组)
    • [5.2 列表](#5.2 列表)
  • [6 集合、推导式](#6 集合、推导式)
    • [6.1 集合](#6.1 集合)
    • [6.2 推导式](#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()是常用的输出语句,可以将字符串打印到控制台中。

py 复制代码
print('Hello, Python!')

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

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

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

1.2 单行、多行注释

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

py 复制代码
# 第一个注释
# 第二个注释
'''
第三注释
第四注释
'''
"""
第五注释
第六注释
"""
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中的变量不需要声明。每个变量在使用前都必须赋值。

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

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

py 复制代码
del a, b

2.2 数字类型和运算符

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

py 复制代码
>>> 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()判断。

py 复制代码
>>> 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()是常用的输入语句,可以给出提示信息,并从键盘中读入字符串。

py 复制代码
str=input('Please input a string...')

请看以下示例。

py 复制代码
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))
py 复制代码
Enter a number: 100↙
Enter another number: 45↙
aType:  <class 'str'>
bType:  <class 'str'>
resultValue:  10045
resultType:  <class 'str'>

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

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

py 复制代码
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语句格式如下。

py 复制代码
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

py 复制代码
while condition:
	statement1
else:
	statement2

其中else部分可省略。

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

py 复制代码
a=1
while True:
    print(a)
    a=a+1
    if(a>3):
        break
else:
    print('else')
1
2
3

3.2.2 for...else

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

py 复制代码
for <variable> in <sequence>:
    <statements>
else:
    <statements>

比如:

py 复制代码
sites = ["Baidu", "Google","Runoob","Taobao"]
for site in sites:
    print(site)
py 复制代码
word = 'runoob'
for letter in word:
    print(letter)
py 复制代码
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 的类型分别一致。

py 复制代码
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());

字典可以迭代,比如:

py 复制代码
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。

元组可以被双向索引,如下图所示。非负数代表正向索引,负数代表反向索引。

py 复制代码
tup=('Google','Runoob',1997,2000,26.8,0)
print(tup[2])
print(tup[-2])

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

py 复制代码
for x in (1, 2, 3): 
    print (x, end=" ")

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

5.2 列表

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

py 复制代码
list.append('Baidu')
del list[2]

其余与元组类似。

6 集合、推导式

本节内容包括:

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

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

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

6.1 集合

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

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

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

py 复制代码
>>> 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∣一个推导式}

推导式有两种格式。

py 复制代码
表达式 for 变量 in 列表
表达式 for 变量 in 列表 if 条件

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

py 复制代码
>>> 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']
py 复制代码
listdemo = ['Google','Runoob', 'Taobao']
# 将列表中各字符串值为键,各字符串的长度为值,组成键值对
>>> newdict = {key:len(key) for key in listdemo}
>>> newdict
{'Google': 6, 'Runoob': 6, 'Taobao': 6}
py 复制代码
>>> setnew = {i**2 for i in (1,2,3)}
>>> setnew
{1, 4, 9}
py 复制代码
>>> 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)
相关推荐
湫ccc1 小时前
《Python基础》之字符串格式化输出
开发语言·python
mqiqe2 小时前
Python MySQL通过Binlog 获取变更记录 恢复数据
开发语言·python·mysql
AttackingLin2 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python
哭泣的眼泪4082 小时前
解析粗糙度仪在工业制造及材料科学和建筑工程领域的重要性
python·算法·django·virtualenv·pygame
Ysjt | 深2 小时前
C++多线程编程入门教程(优质版)
java·开发语言·jvm·c++
ephemerals__2 小时前
【c++丨STL】list模拟实现(附源码)
开发语言·c++·list
湫ccc2 小时前
《Python基础》之基本数据类型
开发语言·python
Microsoft Word2 小时前
c++基础语法
开发语言·c++·算法
一只小小汤圆3 小时前
opencascade源码学习之BRepOffsetAPI包 -BRepOffsetAPI_DraftAngle
c++·学习·opencascade