1、环境:windows7 + python3 + pycharm(IDE)
2、python跟C、C++、Java,JavaScript不一样,没有{}来控制块,只有缩进,所以python编程的时候,必须缩进得一致。此外,python2.x和python3.x 是两种不用的语言,并不是向下兼容的关系,python2默认情况下不支持中文,python3默认是utf-8编码,默认支持中文。以下所有的代码例子都是基于python3的。
3、python3的数据类型有Number数字、String字符串,List列表、Tuple元组、Dictionary字典、Set集合。其中数字还分为整型(int)、布尔型(bool)、浮点型(float)、复数型(complex),其中bool类型只有True和False两个值,但是他们也属于数字,Ture代表1,False代表,可以参加数字的运算。但是在python2中,在Number类型中,没有bool类型,但是有Long类型,即长整型。
4、python是一种弱类型语言,不需要指定数据类型,定义的时候直接赋值。如果对Java熟悉的话,字典就相当于java.util.Map,集合就是java.util.Set,列表就是java.util.List
a = 1
b = 1.01
c = True
d = 2 + 5j
e = "abc"
f = ["abc","aaa"]
g = ("abc","aaa")
h = {"小明":20,1:3,"小李":10}
i = {"123","12","123","1"}
print(type(a)) # int
print(type(b)) # float
print(type(c)) # bool
print(type(d)) # complex
print(type(e)) # str
print(type(f)) # list
print(type(g)) # tuple
print(type(h)) # dict
print(type(i)) # set
5、对于python文件编码的问题,如果需要指定python文件编码,需要在文件的第一行,比如指定文件为UTF-8编码代码如下,这是一行特殊的注释,让python解释器按照UTF-8编码。
# coding = UTF-8
6、运算符的问题,要说明的是乘法运算符可以操作字符串,比如以下字符串是将abc这个字符重复10次。
str = "abc" * 10
print(str) # 输出 abcabcabcabcabcabcabcabcabcabc
而且没有++,–运算符。此外对于除法运算符,就是单纯的做除操作,并不是和C语言一样,整数除以整数还等于整数了,在python中,结果是多少就是多少,求商用求商运算符,求余数用余数运算符,代码如下
a = 2
b = 5
print(b / a) # 2.5 b除以a
print(b // a) # 2 b除以a取商
print(b % a) # 1 b除以a取余数
print(b ** a) # 25 b的a次方
7、内存分配和引用的问题,和C语言有些区别,在python语言中,id函数可以返回一个变量的地址,用以下的例子来说明一下python语言和C语言的内存分配问题
a = 2
b = 5
print(id(a)) #1584438512
print(id(b)) #1584438560
c = a
print(id(c)) #1584438512
c = b
print(id(c)) #1584438560
a的地址是1584438512,b的地址是1584438560,当把a赋值给c的时候,发现c的地址和a的地址一样,说明,c和a本身就是一个东西,只是名字不一样罢了,也就是说c是a的引用。同理,当把b赋值给c的时候,c就是b的引用了,c的地址就和b的地址一样了。
下面讨论C语言(C++,Java)的情况
#include <stdio.h>
using namespace std;
int main()
{
int a = 5,b = 2;
printf("%d\n",&a); //2686748
printf("%d\n",&b); //2686744
int c = a;
printf("%d\n",&c); //2686740
c = b;
printf("%d\n",&c);
return 0;
}
这表明在C语言中,分别对a、b、c分配了空间,c并不是a或b的引用,而是真真正正存在占用内存的一个变量。
8、字符串的操作更简单了,类似于MATLAB中的操作,可以用中括号的形式,例子如下
str = "abcdefABCDEF"
print(str[1:]) # bcdefABCDEF 从下标1开始到最后
print(str[:5]) # abcde 从开头到下标为5的,但是不包括5
print(str[2:6]) # cdef 从下标2开始,到下标6结束,不包括下标6,也就是说左闭右开
print(str[2:-1]) # cdefABCDE 从下标2开始,到倒数第一个,但是不包括倒数第一个
print(str[1:7:2]) # bdf 从下标为1开始,下标差2的取出来,不超过下标7
print(str[9:-7:-1]) #DCBA 从下标为9开始,下标差-1的取出来,不超过倒数第七个
print(str[::-1]) # FEDCBAfedcba 逆序
字符串也可以判断某个字符串或者某个字符在不在这个字符串中,用关键字in和not in,类似于java.lang.String#contain方法。python字符串也有像C语言中printf的格式化输出的功能,例子如下。
print ("我叫 %s 今年 %d 岁!" % ('小明', 10))
9、列表List和java.util.List完全一样,有顺序,有下标,可以增删改查;元组是不能修改的,只能查看;字典和java.util.Map完全一样,例子如下:
list = [1,"zhangsan",True,2.3]
# 增加单个元素操作
list.append("lisi")
print(list) # [1, 'zhangsan', True, 2.3, 'lisi']
# 把一个集合里面的东西都加进来
temp = ["wangwu",23]
list.extend(temp)
print(list) # [1, 'zhangsan', True, 2.3, 'lisi', 'wangwu', 23]
# 通过list.insert方法,注意下标还是从0开始
list.insert(1,"first");
print(list) # [1, 'first', 'zhangsan', True, 2.3, 'lisi', 'wangwu', 23]
print("="*60)
list = [1,"zhangsan",True,2.3]
# 通过下标获取元素
print(list[0]) # 1
# 删除元素
list.pop() # 删除最后一个,并返回
print(list) # [1, 'zhangsan', True]
# list.remove(obj) 是移除列表中某个值的第一个匹配项
对于字典,其实就是json格式,获取和修改操作和js一样,如
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8; # 更新 Age
dict['School'] = "菜鸟教程" # 添加信息
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
del dict['Name'] # 删除键 'Name'
dict.clear() # 删除字典
del dict # 删除字典
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School']) #会报异常