C++转职学Python
主要在看fkpython讲义
把最近的知识点做一个小结
0、python的元素不用定义类型,直接用即可,类型还可以随意改变(当场震惊)
1、python引入模块(类似C++头文件?)
import math
还有os,time,sys,random,string……
2、print的格式
print(value,……,sep=' ',end='\n',file=sys.stdout,flush=False)
sep是分隔字符
3、python内置函数(容易与变量重名)
del,from,bin,all,id,len,next,sum一定要小心
4、python的复数模块(import cmath(complex math))
注意虚部是j
5、python3在字符串中可以直接用中文
6、repr()函数
与str()相似(将其他类型转化为string类型)
repr还可以输出表达式形式的字符串
7、input()函数
……555555,我连A+B problem都过不了
就是这个input
它直接返回的是字符串
要用字符串中的split()函数将其按照空格来断开
语法str.split(str="", num=string.count(str)).
就是断开前num个子串str(str被删除)
8、除法运算
/(小数除法)
//(整除)
%(求余)
其中后两者并不要求是整数类型
9、乘方开方运算**
如4**0.5=2.0
10、python可以直接截取某个列表或元组的等差数列
a=[1,2,3,4,5,6,7,8,9]
a[1:7:2]=[2,4,6]
(区间[1,7)中取间隔为2的位置的数)
(列表是从0开始的)
11、列表[list],元组(tuple),字典{dict}
list:类似与vector
tuple:类似于不可变的vector
dict:类似于map
12、关于list
append()在末尾增加元素
pop()弹出最后的元素
count(value)计数
index(value,l=start,r=end)求value在[l,r)中第一次出现的位置,如果不存在就会报错
reverse()反向
sort()排序
例a.sort(kep=functools.cmp_to_key(cmp))可以自定义排序(要import functools)
13、关于dict
get(key)(若存在则返回value,否则返回None,防报错)
update(dict)(更新字典(若有重复则直接覆盖原来的值))
items()keys()values()(分别返回所有的key-value对,key,value)
pop(key)删除key-value对
popitem()返回dict中的某一个key-value对,并弹出
setdefault(key,value)若key存在则返回对应的value值,否则就新建key-value对,返回传入的value
dict.fromkeys(tuple||list,val)新建字典,包含的key值为tuple||list的值,value初始化为val
14、利用字典格式化字符串
dict={'name':asdf,'price':123}
print("%(name)s,%(price)010.2f"%dict)
15、生成随机数
import random
a=random.randint()
16、选择结构
if ……:
……
elif ……:
……
else:
……
17、三目运算符
A if B else C
B为真,返回A,否则返回C
18、while ……:
注意,python使用tab标记的":"执行内容,与C++使用的{}不一样
19、for-in循环(爷青结)
for i in range(0,10)(相当于for(i=0;i<10;i++))
for i in range(0,len(list||tuple))(遍历下标)
for val in list||tuple||set(直接遍历值)
for key,val in dict.items()(遍历key-val对)
20、for表达式(方便快速创建列表、元组等)
a=list(x*x for x in range(0,10) if x&1)
(a=[1,9,25,49,81])
(先暂时写到这里)
感悟:
OI中的C++其实只是编程中很小的一部分
五年OI生涯学习内容也仅仅停留于if、for、function和struct上
虽然这些足以实现许多高级算法与数据结构了
但真实的编程还有很多很多
比如类(class),模块,图形界面,数据库,多线程,网络编程,爬虫……
千万不要认为自己学了OI,进计算机专业做题就是砍瓜切菜
始终保持一颗谦虚而平和的心
这才是求学之道