例行开头扯淡
听说Python是一门很好用的语言。。。所以ATP就被好奇心驱使去搞了一本Python的入门书!
书名叫做《Python:从入门到实践》。。。各种看来风评好像还不错的样子就入手了?
因为ATP已经会C++了所以就只整理一下Python跟C++不同的地方
嗯就是这样。
语言基础:语法规则、变量、数组等
- Python与C++最大的不同就是语句后面的分号可有可没有!
不过ATP怕时间长了不打分号切回C++的时候反应不过来。。。那就暂且保留使用分号的习惯。。。。
- Python在定义变量的时候不需要先说明!
也不用告诉系统它是整型啊还是字符串啊还是实型啊啥的
emmm。。。到底是该说【这太方便了】还是说【这太不靠谱了】呢。。。。
Python中大小写是不同的!也就是说message和Message是不同的两个变量喔。
Python的字符串可以用双引号括起来也可以用单引号括起来!
这就保证了能在字符串里包含这两种引号中的任意一种。。。
比如:
message="I'm Li Hua"
print(message)
或者:
message='Li Hua says:"Hello!"'
print(message)
诶可是,如果两种都想要呢。。。。
喔差点忘了,输出语句是print而不是printf。。。。
Python里面还有一些很迷的字符串处理函数。。。
比如这个:
message="oh my GOD!"
print(message.title())
然后程序会输出的是Oh My God
就是说这个函数会把字符串里所有的单词替换成首字母大写其他字母小写这样。。。
还有把所有字母大写的函数upper和所有字母小写的函数lower
不过也有看起来好像很好用的,比如函数lstrip(),rstrip()和strip()
它们会分别把字符串开头/结尾/中间所有的空格消掉
- 关于数字运算这种东西
Python的乘方运算是两个乘号,比如要表示\(2^8\)那就是2**8
仿佛中间被和谐掉了什么东西一样。。。。
然后就是最重要的整除运算。。据说Python2里面是根据你输入的数字类型来判断要用整除还是实数除
然而ATP安装的是Python3.。。它是用双斜杠//代表整除的
然后如果同时使用了双斜杠和实数,比如让它计算3.0//2
它不会输出1.5而是输出1.0
就是先给你整除了然后把结果搞成实数返回来
诶这好奇怪啊。。。。。天啊好奇怪真的好奇怪啊为啥要设计这样的功能啊
Python的注释是用#这个字符的!但是好像程序里面就算是在注释里也不能包含中文否则编译不通过??是ATP安装的编译器有问题吗???
Python也有数组这种东西(那不废话不然这玩意儿怎么用来写代码)!
可以直接给数组元素赋值,就像这样:
a=[1,2,3,4,5,6,7,8,9]
下标和C++一样是从0开始的。
然后还可以直接输出一个数组!对你没听错,输出一个数组!
就这样:
print(a)
然后他就会把数组里的元素连着逗号连着方括号全都输出来,对没错就是上面那条赋值语句等号后面的全部。
然后可以像C++那样用方括号做数组下标来访问任意一个元素
- 关于数组的各种功能!
ATP觉得最厉害的一个就是它允许负数下标
如果访问a[-n]会返回的是“倒数第n个”。当然n肯定不能超过数组里已经有的元素个数。
比如输出a[-1],就会输出最后一个元素这样
然后函数append让你可以在数组最后添加一个元素,比如这样:
a.append(10)
然后它就在数组最后面添加一个数字10
函数insert可以让你在数组任意一个部分插入元素
比如a.insert(0,9)是在数组的0号位置也就是第一个位置插入9
还有del这个语句可以删除数组元素
del a[0]
然后它就删除了数组第一个元素!
还有一个函数叫做pop
它可以弹出数组中最后一个元素
还可以增加参数来弹出某个位置的元素
比如
now=a.pop()
NOW=a.pop(0)
分别返回最后一个和第一个元素
一个叫做remove的函数可以删除数组里的特定值,如果有多个的话只删除第一个。但是要删除的这个值必须在数组里出现过否则就会出错。
比如
a.remove(5)
num=4
a.remove(num)
分别删除了数组中的5和4
- 还有好用的sort函数!ATP都已经早都不会手写排序了。。。。
用法是a.sort()这个样子,然而怎么自定义比较函数ATP还没大弄明白。。。
如果要维持数组原来的顺序的话,b=sorted(a)这样可以把a排好序存到b里面,a的原本顺序不动
如果增加参数reverse=True(注意True一定是首字母大写),可以反过来排序,比如这样:
b=sorted(a,reverse=True)
- 反转整个数组的话用reverse函数,比如:
a.reverse()
print(a)
还有一个函数len(a),它返回一个数字,可以输出数组的长度
- Python的输出语句print是默认输出完了以后自动换行的
如果要连续输出的话需要这样设置:
print('Emmmmmm....',end=' ')
这样就是以空格结尾
如果全输出完了需要换行就另外加一个空的输出语句print()就可以了
基本语句:条件、循环等
- Python里面有两种遍历数组(列表)的方式!
第一种是直接遍历列表里的元素,像这样:
numbers=[0,2,4,6,8,10]
for num in numbers:
print(num);
这样它就会把数组numbers里的元素全都输出出来
这个方法的好处是不需要知道数组具体有多大
实际上感觉Python里面的“列表”和C++里面的动态数组vector很相似呢。
- 另外一种遍历方法就是C++党熟悉的通过下标遍历
for i in range(0,6):
print(numbers[i]);
range(a,b)代表的是左闭右开区间,也就是上面那个循环实际上是从0循环到5。
如果要规定步长的话就在左右端点后面加一个数字
就像这样:
for i in range(0,11,2):
print(i);
输出效果跟上面是一样的。
- 也可以用range函数直接创建一个数组,要使用list这个功能
比如:
numbers=list(range(0,11,2));
和过程
numbers=[];
for i in range(0,11,2):
numbers.append(i);
是一样的
- max(a),min(a),sum(a)三个函数可以实现对数组的求最大最小或求和操作。a是一个数组名字。
三个函数的时间复杂度都是O(n)的
- 相当重要的一点是,python是通过缩进来判断代码之间的关系。
所以格式啥的都得老老实实的。。。。。
比如
for i in range(0,10):
print(i)
print(i+1)
和
for i in range(0,10):
print(i)
print(i+1)
的输出就是不一样的。