从 C++ 到 Python
一、注释
#单行注释'''多行注释'''"""多行注释"""
二、字符串
'Hello, python!'
#单、双引号都可以,没有区别
#倾向于用单引号
三、I/O与变量
#输出
print('Hello, python!')
#Python句末可以没有分号
#倾向于用没有分号#输入
a = input()#Python变量无需声明
b = input('Enter b: ')#提示用户要输入的内容
四、基本数据类型及其转换
在本节中,无特殊说明的引用都摘自 Python六大基本数据类型,略有删改。更多信息可以看看原文。
数字(number)
数字又分为 int,float,complex(复数) 三种。(Python 2 中还有 long,在 Python 3 中已取消。)又有 bool(值为 True
或 False
),它是 int 的子类。
复数(complex)由实数部分和虚数部分构成,可以用a + bj,或者 complex(a, b) 表示, 复数的实部 a 和虚部 b 都是浮点型。
在 Python 中定义整数的大小没有限制,可以是一个无限大的整数,比如:
a = 123456789123456789
如果数字的长度过长时,可以使用下划线作为分隔符,比如:
a = 123_345_789_123_456_789其他进制的整数:
十进制:不能以0开头
二进制:以0b开头
八进制:以0o开头
十六进制:以0x开头
但是注意,所有以其他进制定义的整数,输出结果均为十进制
#创建
i = 1
f = 1.0
z = 1 + 2j#不是i + 2i
int(x):将x转换为一个整数。
float(x):将x转换到一个浮点数。
complex(x):将x转换到一个复数,实数部分为 x,虚数部分为 0。
complex(x, y):将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。
字符串(string)
Python 中没有字符类型。
#创建
str 'hello'
以下内容摘自 python截取字符串(字符串切片),略有改动。
s = 'python'
print(s) #输出:python
#从前面截取
print(s[1]) #输出:y,根据下标取字符
print(s[:]) #输出:python,从头取到尾
print(s[1:]) #输出:ython,下标1开始,取到结尾
print(s[0:2]) #输出:py,下标0开始,取到下标2,顾头不顾尾,所有不包含下标2
print(s[0:100]) #输出:python,束位置即使超出字符串实际长度,也不影响正常切片操作
#从后面截取
print(s[-1]) #输出:n,根据下标取字符
print(s[-1:-3]) #无输出,切片要遵循从左向右切的规则
print(s[-3:-1]) #输出:ho,从下标-3开始,取到下标-1,顾头不顾尾,所有不包含下标-1
列表(list)
列表的截取方法与字符串差不多。
#创建
a = [1,2,3]
b = [3,2,1]#访问(其实就是截取)
print(a[0])#输出:1#运算
print(a + b)#输出:[1, 2, 3, 3, 2, 1],把b拼接到a末尾
print(a * 2)#输出:[1, 2, 3, 1, 2, 3],把a重复两遍#检查是否包含某元素
print(1 in a)#输出:True#函数
print(len(a))#输出:3,a的长度
print(min(a))#输出:1,a中的最小值
print(max(a))#输出:3,a中的最大值
元组(tuple)
一个不可变的序列
创建tuple元组,使用(),多个值之间用逗号隔开,注意()括号可以省略不写,但是如果tuple元组中的元素只有一个时,也必须使用,元素才能证明是一个tuple类型的变量
#创建
t1 = (1,2,3)
t2 = 1,2,3
集合(set)
字典(dictionary)
以上两者本文不介绍。
类型检查
print(type('hello'))#输出:<class 'str'>
五、基本运算
Python 中没有 ++
和 --
。
语句 | 含义 | 语句 | 含义 |
---|---|---|---|
a // b (有a //= b ) |
整数除法 | a ** b (有a **= b ) |
$a^b$ |
!= 或 <> |
不等于 | and |
与 |
or |
或 | not |
非 |
没提到的与 C++ 一样。
print(1 + 1)#输出:2
print(1.0 + 1.0)#输出:2.0
print('1' + '1')#输出:11
#A+B Problem.py
a = input('Enter a: ')
b = input('Enter b: ')
print(int(a) + int(b))
六、控制语句
Python 与 C++ 的区别:
- 没有括号,但是末尾要加
:
。 - 没有大括号,靠缩进区分。
if、else
#even-odd.py
a = input('Enter a number: ')
if int(a) % 2 == 0:print('even')
else:print('odd')
while
#while.py
i = 0
while i < 100:print(i)i += 1
for
#for.py
for a in 'hello':print(a)
还可以搭配 range()
使用。
range()
函数语法
range(start, stop[, step])
参数说明:
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
(摘自 Python range() 函数用法)
#sum.py
sum = 0
for i in range(101):sum+=i
print(sum)
输出:
5050
break、continue
略。
七、函数
#定义
def func(a, b):#与控制语句一样,此处要加冒号return a + b#可以不return,此时将自动return None#调用
print(func(1, 2))#输出:3
print(func(a = 1, b = 2))#输出同上
print(func('a', 'b'))#输出:ab
以下内容摘自 python基础知识之函数的定义及用法。
# 拆包
def func():return 11,22,33 # 当返回结果有多个值时,会以元组的形式返回c1 = func()
print(c1) # 返回的是一个元组(11,22,33)a,b,c =func() # 可以通过变量把返回的元组进行拆包,接收对应的值,a接收了11,b接收了22,c接收了33
print(a,b,c) # 返回对应的元素11,22,33
八、模块
Python 的一大优点就是其拥有大量、优质的库。
pip
在 Python 中安装库可以使用 pip。Python 内置 pip。以下是它的使用教程。
检查更新
建议每次使用 pip 前先要检查更新。打开 PowerShell。如果你没有设置环境变量的话,需要在 python.exe
的目录下打开。(比如 Python3.31 的目录是 C:\Users\Administrator\AppData\Local\Programs\Python\Python311\
。)
在 PowerShell 中输入:
python -m pip install --upgrade pip
安装库
以安装 numpy 为例,在 PowerShell 中输入:
pip install numpy
镜像源
在国内使用 pip 下载会很慢。使用镜像源可以大大提高速度。这里以中国科学技术大学的(推荐)为例。
仍以安装 numpy 为例,在 PowerShell 中输入:
pip install -i https://pypi.mirrors.ustc.edu.cn/simple numpy
如果想将该镜像源设为默认源,则在 PowerShell 中输入:
pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple
其他优秀的镜像源还有清华大学的:https://pypi.tuna.tsinghua.edu.cn/simple
、阿里云的 https://mirrors.aliyun.com/pypi/simple
。
在 Python 中导入和使用模块
以 numpy 为例:
#导入模块
import numpy
#测试一下
arr = numpy.array([0,1,2,3])#通过“numpy.”来调用numpy中的内容
print(arr)
还可以这样写,减少代码键入量:
import numpy as np#将np作为numpy的别名arr = np.array([0,1,2,3])#这里只用写“np.”
print(arr)
如果只想导入类中的某个内容,可以这样写:
from numpy import arrayarr = array([0,1,2,3])
print(arr)
九、别的一些什么东西
格式化字符串
如:
s = 'a = %d, b = %d' % (a,b)
这方面好像和 printf()
是一样的。