3.2:Python数据类型(数字)
在Python中,数字数据类型有int、float、bool(布尔型)、complex(复数)。在这里要提醒一下学过C语言的人,在Python中浮点类型只有单精度float,不要以为保留两位小数的数就是双精度类型(double),在Python中无论你是多少位小数它的数据类型都是float。
当然,如果你想判断该数字的数据类型,你可以尝试用type()函数来判定,如以下代码实例:
a6,a5,a3,a2,a1=4 + 7j,47.88 ,47 ,47.8 ,47.88888
a4=False
print(type(a1),type(a2),type(a3),type(a4),type(a5),type(a6))
输出如下
当然,也可以用isinstance()函数来判定,结果返回True代表你认为的数据类型是正确的,False就代表错误。
a6,a5,a3,a2,a1=4 + 7j,47.88 ,47 ,47.8 ,47.88888
a4=False
print("Type a1:",type(a1),isinstance(a1, type(a1)),)
print("Type a2:",type(a2),isinstance(a2, type(a2)),)
print("Type a1\3:",type(a3),isinstance(a3, type(a3)),)
print("Type a4:",type(a4),isinstance(a4, type(a4)),)
print("Type a5:",type(a5),isinstance(a5, type(a5)),)
print("Type a6:",type(a6),isinstance(a6, type(a6)),)
输出
好了,既然学完了数字数据类型,那么也学下算术运算符吧。
3.2.1:算术运算符
在Python中,运算符有:+、-、*、/、%、**、//(加、减、乘、除、取模、次方、整除)
+:加法,两个变量相加求和
-:减法,两个变量相减求差
*:乘法,变量相乘求积
/:除法,变量相除求商
%:取模,得到除法结果第一位余数
**:次方,求变量(a)的n次幂->(a)ⁿ,可以用pow()函数代替
//:整除,取除法后的整数部分
学完算术运算符后,我们可以与之前学过的数字数据类型来结合使用。
a = 1314
b = 521
print(a+b,a-b,a*b,a/b,a%b,a**b,pow(a,b),a//b,)
输出如下
3.3:Python数据类型(字串符:string)
在Python中,数据类型不仅仅有数字数据类型,当然也有其他的,string(字串符)数据类型也是其中一种。
如果你想换行转义输出,你可以在要转义的字串符之间加个\n(PS:反斜杠\是特殊转义字符),但在字串符前加个r将会是原字串符输出。
a = 'Hello','LWL'
b = 'Hello''LWL'
#注意字串符a与b的区别,如果有逗号,
#那么输出时将会是两个字串符一起输出,如
#果没有输出将会两个字串符相互结合输出
c,d= 'Hello','LWL'
print(a)
print(b)
print(c,d)
print(c+d)
print(b[0:-2])
print(c[0:-3])
print(d[0:-1])
print(c*2,d*2)#各输出两次
print((c+d)*2)#结合输出两次
print('Hello,\nLWL')
print(r'Hello,LWL')#加了r后转义字符失效
e='Love LWL 1314'
print(e[0],e[5])#输出指定索引位置的字母
print(e[0],e[-2],e[3])#Python与C语言字串符不同的地方在于Python字串符是不可以被改变的,
#如果向一个指定索引赋值,那么将会错误
输出结果如下
3.3:Python数据类型(列表:List)
在Python中,复合数据类型分别有三种:Tuple(元组)、Set(集合)与List(列表)。然后今天教的复合数据类型就是这三类之中最easist的一类:List(列表)
在Python中,创建一个列表数据类型方法如下
变量名称 = ['数值',数值]
1
在列表的数值内容中,数值可以类型不同,但要记住的一点是:**除数字以外其他任何数值都必须要用单引号括起(无论是中文还是其他国家语言,都必须要),而数字数值可以不用单引号括起)。**代码实例如下
PS:具体内容已在注释
a = ['a','b','c',3] #创建两个列表
b = [4,7,'love','to','lwl',',','never','change']
print(a,b)
print(a[0:1:3]) #输出指定列表被切割后的指定数据
print(b[1:7])
print(a[3]) #输出指定索引搜索的数据
print(b[7])
a[0:3]='A','B','C' #修改列表中指定数据,即可以直接修改
print(a)
b.append(347) #append()函数用于在制定列表末尾添加新数值
print(b)
a[1]=[] #移除a列表中指定索引数据
print(a)
print('a列表数据个数:',len(a),'b列表数据个数:',len(b)) #len()函数用于统计列表数据个数
c=[0,1] #生成一个嵌入式列表
d=[2,3]
e=[c,d]
print(e)
3.4:Python数据类型(Tuple:元组)
在Python中,元组的语法与列表差不多,不同之处就是元组使用小括号(),且括号中元素不能被改变,创建元组可以不需要括号;而列表是使用中括号[]。
因此想要把列表转换为元组或元组转换为列表,只需要改一下括号即可
变量名称 = ('元素',元素)
变量名称 = "元素","元素"
创建元组实例
a = ('C/c++','Python',2) #创建两个元组
b = "Python菜中菜的菜鸟","Love to lxx for Li wenli","never change"
print(a,b)
创建一个空的元组
a = ()
因为元组与列表语法相似,所以元组可以与其他元组结合为一个新元组并输出
a = ('C/C++','Python',2) #创建两个元组
b = "Python菜中菜的菜鸟","Love to lxx for Li wenli","never change"
c = a+b #相互结合
print(c)
出
如果想删除元组,那么可以用del语句来实现
a = ('C/C++','Python',2) #创建两个元组
b = "Python菜中菜的菜鸟","Love to lxx for Li wenli","never change"
c = a+b #相互结合
print(c)
del c
print(c)
因后元组被删除所以会输出异常
当然,元组也和字串符一样支持+和*运算符(具体已在注释表面)
a = ('C/C++','Python',2) #创建两个元组
b = "Python菜中菜的菜鸟","Love to lxx for Li wenli","never change"
c = a+b #相互结合
print(len(c))#输出c元组内数据个数
print(c*2)#复制输出
print(b in ("Python菜中菜的菜鸟","Love to lxx for Li wenli","never change"))
#判断元素是否存在
for c in ("Python菜中菜的菜鸟","Love to lxx for Li wenli","never change",'C/C++','Python',2):
print(c,) #迭代输出
1
输出
元组的内置函数(具体在注释)
a = ['C/C++','Python',2,4] #创建列表
b = ["Python菜中菜的菜鸟","Love to lwl for Li wenli","never change"]
c = a+b #相互结合
c = tuple(c)#强制转换为元组
print(len(c))#输出列表内数据个数
d = ('3','4','7')
print(max(d))#输出d元组内最大数值
print(min(d))#输出d元组内最小数值,max()是判断最大值函数,min()反之
输出
3.5:Python数据类型(Set:集合)
Set(集合)数据类型它和Tuple、List一样都属于复合数据类型,而且集合数据类型是一种无序不重复元素的序列
在Python中,我们可以使用大括号{}或内置函数Set()来创建一个集合(创建一个空集合必须用Set()函数,不可用{},因为{}实质是创建一个空的字典
格式实例
a = {'a','b','c','d','a'}#创建集合a
print(a)#因为集合是无序不重复元素序列,所以不会输出多出的a
b = set('sdgsdggfdgdasrfdsf')#运用Set()函数创建集合b
print(b)
输出
判断元素是否在集合内
a = {'a','b','c','d','a'}#创建集合a
print('a' in a,'e' in a)
在这个代码中代码片段’a’ in a与’e’ in a主要判断a与e元素是否在此集合内,如果在就输出True,反之位False。
输出结果
与List与Tuple一样,Set也支持数学运算符运算,不同运算符使用范围也不同
a = set('sdfygsyfysdgfsdtfsyhf')
b = set('hgdhsdfsghdvhgsfs')
print(a - b)
print(a | b)
print(a & b)
print(a ^ b)
在这里面,减号(-)的作用就是输出a集合中b集合内没有的元素,竖线符号(|)主要输出集合a或b中包含的元素,逻辑符号(&:and,和,拉丁美语为et)就是要输出集合a和b中共同包含的元素,乘方(^)主要输出不同时包含于a和b的元素。
输出结果
在集合中,我们可以使用关键字add或update来添加新的元素
b = set('hgdhsdfsghdvhgsfs')
print(b)
b.add('fuck')
b.update('good')
print(b)
输出结果,大家对照会发现,每次输出都会有不同的新元素输出
============== RESTART: C:\Users\Administrator\Desktop\新建文件夹\4.py ==============
{'h', 'g', 'f', 's', 'v', 'd'}
{'h', 'fuck', 'g', 'f', 's', 'v', 'o', 'd'}
当然,如果想要删除某些元素,可以使用关键字remove,discard或pop(pop会随机删除某些元素)
b = set('abcdefghijk,fuck,abats')
print(b)
b.remove('f')
print(b)
b.discard('h')
print(b)
b.pop()
print(b)
在这里remove与discard分别删除f与h元素,而pop扶着随机删除集合内任意一个元素
============== RESTART: C:\Users\Administrator\Desktop\新建文件夹\4.py ==============
{'j', 't', 'h', 'k', 'b', 'd', 's', 'f', 'g', 'i', ',', 'a', 'c', 'e', 'u'}
{'j', 't', 'h', 'k', 'b', 'd', 's', 'g', 'i', ',', 'a', 'c', 'e', 'u'}
{'j', 't', 'k', 'b', 'd', 's', 'g', 'i', ',', 'a', 'c', 'e', 'u'}
{'t', 'k', 'b', 'd', 's', 'g', 'i', ',', 'a', 'c', 'e', 'u'}
>>>
============== RESTART: C:\Users\Administrator\Desktop\新建文件夹\4.py ==============
{'e', 'd', 's', 'g', 'h', 'b', 'c', 'i', 'f', 'k', 'u', 'j', 'a', ',', 't'}
{'e', 'd', 's', 'g', 'h', 'b', 'c', 'i', 'k', 'u', 'j', 'a', ',', 't'}
{'e', 'd', 's', 'g', 'b', 'c', 'i', 'k', 'u', 'j', 'a', ',', 't'}
{'d', 's', 'g', 'b', 'c', 'i', 'k', 'u', 'j', 'a', ',', 't'}
大家仔细观察一下,两次输出虽然因为无序输出导致输出不同,但最后删除的元素都分别不同,第一次删除元素为字母j,第二次为字母e。
当然,如果觉得删除一个不过瘾,大家可以使用函数clear()来进行全部删除 😃
b = set('abcdefghijk,fuck,abats')
print(b)
b.clear()
print(b)
在这个代码中第一次输出因为没有使用clear()函数清除因此正常输出,而第二次输出使用了clear()函数删库跑路了,所以只能输出一个空的集合。因此,输出结果如下
============== RESTART: C:\Users\Administrator\Desktop\新建文件夹\4.py ==============
{'t', 'a', 'k', 'c', 'i', 'j', 'b', 'f', 's', ',', 'd', 'u', 'g', 'e', 'h'}
set()
3.6:Python数据类型(字典:dictionary)
在Python中,字典是另外一种数据储存的可变容器,而且可以存储任何数据类型的数据值对象。
在上一节提及到,创建一个空字典需要用大括号{},在字典中每一个值对用冒号,且每个值需要逗号(,)分隔。
a = {key1:value1,key2:value2,key3:value3}
1
dictionary{key->1value1
key2->value2
key3->value3
下面将演示创建一个字典并输出
```python
a = {'a':'Python','b':'347','c':'hjgjhfgy'}#创建一个字典
b = {'a':'HTML/Javascript','b':'Rust'}
print(b)
print(a['a'],a['c'])
这个代码中a['a']与a['c']是分别访问并输出字典内对应数据值,与索引方式差不多,而print(b)则负责输出整个字典b内数据。
输出结果
```python
============== RESTART: C:\Users\Administrator\Desktop\新建文件夹\4.py ==============
{'a': 'HTML/Javascript', 'b': 'Rust'}
Python hjgjhfgy
如果要输出的值字典内没有,那么输出将会显示异常。
a = {'a':'Python','b':'347','c':'hjgjhfgy'}#创建一个字典
b = {'a':'HTML/Javascript','b':'Rust'}
print(b)
print(a['a'],a['d'])
输出
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\新建文件夹\4.py", line 4, in
print(a['a'],a['d'])
KeyError: 'd'
想要修改字典内的数据很简单,与前面的复合数据类型修改方式一样,不过要注意字典修改数据时修改对象填的不是数字,而是对应的名称。
a = {'a':'Python','b':'347','c':'hjgjhfgy'}#创建一个字典
b = {'a':'HTML/Javascript','b':'Rust'}
print(b)
print(a['a'],a['c'])
a['c']='Perl'
print(a['a'],a['c'])
输出
============== RESTART: C:\Users\Administrator\Desktop\新建文件夹\4.py ==============
{'a': 'HTML/Javascript', 'b': 'Rust'}
Python hjgjhfgy
Python Perl
清除字典数据也很简单,与集合一样,使用clear()函数,然而删除的话就需要用到del语句
a = {'a':'Python','b':'347','c':'hjgjhfgy'}#创建一个字典
print(a)
a.clear()#清除字典所有数据
print(a)
del a#删除字典
print(a)
因为del语句把字典删除了,所以输出异常
输出如下
{'a': 'Python', 'b': '347', 'c': 'hjgjhfgy'}
{}
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\新建文件夹\4.py", line 6, in
print(a)
NameError: name 'a' is not defined
第四章:代码格式整洁与三种流行编程规则
4.1:格式整洁
在平时写代码时,我想有一部分人他们平时可能不会注意代码的整洁性,所以写出来的代码都是一坨坨的,导致自己或他人维护会显得很不方便。例如以下C语言迷宫代码
#include#include#include
int map[10][10]={0,0,0,0,0,0,0,0,0,0,
0,1,2,1,0,0,0,0,0,0,
0,1,1,1,0,0,0,0,0,0,
0,0,1,1,0,0,0,0,0,0,
0,0,0,1,0,0,0,0,0,0,
0,0,0,1,0,0,0,0,0,0,
0,0,0,1,1,0,0,0,0,0,
0,0,0,0,1,0,0,0,0,0,
0,0,0,0,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,0,0,};void DrawMap();void playGame();int main(){while(1){DrawMap();playGame();system("cls");}}
void DrawMap(){int i,j;
for(i=0; i<10; i++){for(j=0; j<10; j++){if(map[i][j]==0){printf("□");}else if(map[i][j]==1){printf(" ");}else{printf("*");}}printf("\n");}}
void playGame(){char key=getch();int i,j;for(i=0;i<10;i++){for(j=0;j<10;j++){if(map[i][j]==2){break; }}if(map[i][j]==2){break;}}
因为字数限制导致无法显示完全,但从这一部分代码可以看出此代码非常不美观且难以维护。但如果我们加入缩进与换行
#include#include#include
int map[10][10]={0,0,0,0,0,0,0,0,0,0,
0,1,2,1,0,0,0,0,0,0,
0,1,1,1,0,0,0,0,0,0,
0,0,1,1,0,0,0,0,0,0,
0,0,0,1,0,0,0,0,0,0,
0,0,0,1,0,0,0,0,0,0,
0,0,0,1,1,0,0,0,0,0,
0,0,0,0,1,0,0,0,0,0,
0,0,0,0,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,0,0,};void DrawMap();void playGame();int main(){while(1){DrawMap();playGame();system("cls");}}
void DrawMap(){int i,j;
for(i=0; i<10; i++)
{
for(j=0; j<10; j++)
{
if(map[i][j]==0)
{
printf("□");
}
else if(map[i][j]==1)
{
printf(" ");
}
else
{
printf("*");
}
}
printf("\n");
}}
void playGame(){ char key=getch();
int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
if(map[i][j]==2)
{
break;
}
}
if(map[i][j]==2)
{
break;
}
}
switch(key){
case'w':
if(map[i-1][j]==1)
{
map[i][j]=map[i][j]-1;
map[i-1][j]=map[i-1][j]+1;
break;
}
case's':
if(map[i+1][j]==1)
{
map[i][j]=map[i][j]-1;
map[i+1][j]=map[i+1][j]+1;
break;
}
case'a':
if(map[i][j-1]==1)
{
map[i][j]=map[i][j]-1;
map[i][j-1]=map[i][j-1]+1;
break;
}
case'd':
if(map[i][j+1]==1)
{
map[i][j]=map[i][j]-1;
map[i][j+1]=map[i][j+1]+1;
break;
system("PAUSE");
看起来是否觉得舒服很多?想维护的欲望是否增加许多?
当然,在其他语言比如C/C++可能还有可以不遵守代码整洁这首歌唱,但在Python这里这首歌可就Say goodbye了。因为如果你不遵守代码格式整洁,报错将会可能把你给逼疯。
如以下Python代码
a = '要是时光可以倒流那该多好,要是可以那么就可以多陪汶励一段时间了。'
print(a)
在此代码中,因为变量a前面有一个缩进,所以代码在运行时将会报错,无法运行
如果我们将缩进去掉,那么将可以正常运行代码
输出如下
要是时光可以倒流那该多好,要是可以那么就可以多陪汶励一段时间了。
1
好了,废话不多说,开始进入写法教程
4.2:编程规则
匈牙利命名法
匈牙利命名法是由Microsoft 程序员查尔斯- 西蒙尼(Charles Simonyi)提出,匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等这些符号可以多个同时使用,顺序是先m_(成员变量), 再指针,再简单数据类型,再其它 。如c_MessageBox 上一页 1 2 3 4 下一页
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。如稿件版权单位或个人不想在本网发布,可与本网联系,本网视情况可立即将其撤除。