从C++到python
python的优点是简单易学,库安装简单配置丰富,写法简洁,本文目的即初步认识python的规则化写法。
环境安装
- 进入’https://www.jetbrains.com/pycharm/‘ 下载pycharm并安装。
- 根据引导安装应用并登录,创建你的第一段python代码。
差异
- 毋庸置疑,py比cpp更简单,写代码形式上亦是如此,大体上差别如下:
- 不需要头文件
- 主函数没有函数名
- 不需要{}
- 不需要;
接下来,从最简单的输出开始;
基本知识
输入输出
输出函数print()语法就是:
1 | print() |
输入函数是 input(),功能是接收用户输入的内容,语法是:
1 | input(输出的内容) |
举例:接收用户输入的密码并打印:
1 | n = input("请输入密码:") #把输入内容赋给n,用 n 接收一下 |
在Python里,“#” 表示注释,“#”后面的东西不会被执行。
1 | 提示信息 |
变量
- 合法的标识符:大小写字母,数字(不能开头),下划线。
- 没有长度限制。
建议望文生义,函数名、变量名等命名方法各有区分:
1
2
3
4
51. 包名:全小写,例如 time ;
2. 类名:每个单词的首字母大写,其他的小写,简称大驼峰命名,例如 HelloWorld ;
3. 变量名/函数名:第一个单词的首字母小写,后面的单词的首字母大写,简称小驼峰命名,例如 helloWorld ;
4. 常量:全大写,例如 HELLO 。
5. 其他命名方式,比如 hello_world 。
数据类型
与c++不同,python不需要类型说明符,在设置时会自行分配。(不是没有!!!)
- 整型
- 浮点型
- 字符串
- bool类型
- None 是一个单独的数据类型
- 列表、元组、字典、集合也是常见的数据类型
- 类型转换:
1
2
3int() #被转换的必须为全数字的字符串
str()
float() #被转换的必须为全数字的字符串 - 获取类型信息例子:
1
2
3
4type() #返回的是对象的类型
type().__name__
sinstance(,) #常用来判断数据类型,返回bool输出:1
2
3
4f = 30
print(type(f))
print(type(f).__name__)
print(isinstance(f,int))1
2
3
4f = 30
print(type(f))
print(type(f).__name__)
print(isinstance(f,float))
运算符
运算符可以分为很多4类
一般运算符
+,-,*,/(真除法),//(地板除,舍去小数部分),%(取余数),**(幂运算)
赋值运算符
=,+=,-=,*=,/=,%=,**=
连续赋值:a=b=c=d=10布尔运算符
== (等于),!=(不等于), >= ,<= ,>, <
4.逻辑运算符
主要有not、and和or三类,又称非、与和或
and:前后都为真则为真
or:有一个为真则为真
not:非真,非假
例子:
1 | a = 10 |
输出;
1 | False False True |
流程控制
条件分支 (if elif else)
例子:
1 | s = int(input("请输入分数:")) |
输出:
1 | 请输入分数:55 |
循环流程
- while循环
语法:
1 | while 布尔表达式: |
只要条件(布尔表达式)为真就执行里面的代码块。
举例:比如说输入一个整数并计算各个位和,例如输入321,那么各个位之和则为6。
1 | # 请输入一个整数,并计算各个位和 如:321=6 |
输出:
1 | 请输入一个整数:2345 |
- for循环
语法:
1 | for 变量 in 可迭代对象: |
例子:
1 | l=[3,2,1] |
输出:
1 | 1 |
- range
for循环经常会搭配range来使用,range是一个可迭代对象,range的语法如下:
1 | range(start=0,stop,step=1) |
Range对象返回一个对象,该对象按步生成从开始(包含)到结束(排除)的整数序列。Range (i, j)产生i, i+1, i+2,…j - 1。Start默认为0,stop省略!
Range(4)产生0,1,2,3。这些正是包含4个元素的列表的有效索引。
当给出step时,它指定增量(或减量)。
- continue break
continue跳过本次循环,后面的循环继续执行
break终止循环
列表(List)
列表是可以同时存放任何数据,包括整型,浮点型,字符串,布尔型等等,是常用的数据类型之一。
列表的创建
1 | 列表也是一个可迭代对象 |
从列表中获取数据
列表是有下标的,并且下标从0开始,获取方法类似数组
但是列表的下标正序从0开始,倒叙从-1开始
print(List)顺序输出整个列表
列表中数据交换
例子:
1 | l = [1, 2, 3, 4, 5] # 下标/索引:0开始 |
Output:
1 | [1, 2, 4, 3, 5] |
向列表添加元素
1 | append(project) #列表尾插对象(作为整体) |
列表删除元素
1 | clear()#清空列表(列表还在,没被删除) |
例子:
1 | l = [1, 2, 3, 4, 5] |
Output
1 | [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] |
修改元素
同数组。
列表高级特性
切片操作
切片,顾名思义就是把1个列表切分为多个列表,语法如下:
1 | 变量[起始下标:结束下标] #结束下标取不到 |
做切片操作时要注意以下几个点:
- 如果下标从0开始可以省略不写,例如 n = l[:4]。
- 如果结束下标取的是最后一个元素,可以省略不写,例如 n = l[3:]。
- 如果列表中的元素都要,开始和结束下标都可以省略,例如 n = l[:]。
- n = l[:-1] 表示从0开始 - 到数二个元素。
例子:
1 | l = [1, 2, 3, 4, 5] |
Output
1 | [1, 2, 3, 4] |
等距抽取
方法是 n = l[开始:结束:步长] ,这个方法既可以正向去操作列表,也可以反向去操作列表,例如:
1 | l = [1, 2, 3, 4, 5] |
Output
1 | [5, 4] |
列表的一些操作符
比较运算符
列表之间进行比较,以相同下标进行比较,从小到大进行比较,如果值相同则比较下一组元素,如果不同直接出结果,例如:
1 | l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 下标/索引:0开始 |
Output
1 | True |
逻辑运算符
逻辑运算符and not or 跟比较运算符相似,返回结果都是布尔值(True/False)
拼接运算符
拼接运算符是 + ,常用来进行两个列表拼接
1 | l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 下标/索引:0开始 |
重复操作符
重复操作符为 * ,后面常跟数字,表示将列表里面的元素重复复制几遍
1 | l2 = [2, 3, 4, 6] |
成员关系操作符
成员关系操作符主要有 in和not in,用来判断元素是否在列表中,返回结果是布尔值
1 | l = [2, 3, 4, 6] |
执行结果
1 | True |
列表的其他方法
1 | copy()#浅拷贝 |
二维列表
1 | #变量[外层列表下标][内层列表的下标] |
Output
1 | 1 |
元组(tuple)
元组的创建及访问
元组用()的形式,是可迭代对象,是有序的,下标操作,支持切面操作 [:]
同列表,不再赘述。
修改和删除
元组是不可变类型,不能修改,但是可以通过将元组转换成列表的形式进行修改和删除等操作,最后再将列表转换成元组,完成元组的修改和删除。
例如:修改元组中的元素:
1 | t = (1, 2, 3, 4, 5) |
Output
1 | [1, 2, 3, 4, 5] |
元组的操作符
元组同样也有着操作符,方法跟列表的操作符是一样的,不再赘述。
元组的方法
对其操作先转换成列表再行操作,不再赘述。
另外有两种方法新增:
1 | 1. count(value) |
字符串
在Python中,字符和字符串没有区别。可用' '也可以是” “
字符串的特点
1 | 1. 字符串不可变类型 |
字符串的方法
1 | capitalize()#把字符串的第一个字符改为大写,后面的小写 |
格式化输出
- format 语法1:用数字占位(下标)2.format 语法2:{} 占位
1
2
3
4
5"{0} 嘿嘿".format("Python")
a = 100
s = "{0}{1}{2} 嘿嘿"
s2 = s.format(a, "JAVA", "C++")
print(s2)3.format 语法3:{} 占位用字母占位1
2
3
4
5
6a = 100
s = "{}{}{} 嘿嘿"
s2 = s.format(a, "JAVA", "C++", "C# ")
print(s2)
#Output
100JAVAC++ 嘿嘿s.format(s2)可理解为使用s格式化s21
2
3
4
5s = "{a}{b}{c} 嘿嘿"
s2 = s.format(b="JAVA", a="C++", c="C# ")
print(s2)
#Output:
C++JAVAC# 嘿嘿
4.%s
语法为 “%s”%(值) ,最常用的参数可以是任意值。
例子:
1 | for i in range(1, 10): |
转义字符
1 | 1. “\n” :换行符 |
在这里值得注意的是 \ ,它有很多比较巧的运用,比如可以实现代码换行
1 | a = "sxsxsxsxsxsxsxs\ |
字典(dict)
字典是用来存储数据的,字典中的数据以映射关系存储。
字典的特点
- 字典是Python中唯一的映射类型
- 字典是无序的
- 字典是可迭代对象
- 字典的构成:
键:key
值:value
映射:键映射值
键-值:键值对,又叫 项
创建字典
1 | 1. 直接创建 |
例子:
1 | d3 = dict([("one",1),("two",2)]) |
这就是一个元组,one是键,1是值, ‘one’ : 1 是键值对。
1 | 4. dict(**kwargs) |
例子:
1 | d4 = dict(a=3, b=4) |
字典访问
- 基本形式:
变量名[键名] #键所对应的值 - 添加一个键值对
变量名[键名]=值 - 修改一个键值对的值
变量名[键名]=值
Example
1 | d = {"name": "小黑"} |