python数据类型
Posted 七彩蜗牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python数据类型相关的知识,希望对你有一定的参考价值。
变量以及类型
变量:存储程序运行中的数据,变量有3个要素:变量名、变量类型、变量值。python属于弱类型语言,不需要声明变量类型。
[root@localhost python]# ipython3 In [1]: a=1 //变量名=变量值;在堆内存中的一个区域存了一个值为1,内存分为堆内存和栈内存,栈内存的是引用。指向堆内存中的值。 In [4]: b=88 In [5]: c=a+b In [7]: c Out[7]: 89 In [8]: a Out[8]: 1 In [9]: type(a) Out[9]: int In [10]: type(c) Out[10]: int In [11]: str="hello" In [12]: str Out[12]: \'hello\' In [13]: x,y=1,2 In [14]: x Out[14]: 1 In [15]: y Out[15]: 2 In [16]: In [16]: type(str) Out[16]: str
变量类型
标识符:自定义的一些符号和名称,标识符是自己定义的,如变量名、函数名等。
规则:由字母、下划线和数字组成,且不能以数字开头;不能包含一些有特殊意义的符号,如#.&!()等;同时区分大小写。
大小写规则:
驼峰命名法:如小驼峰:userName / userLoginFlag 大驼峰:UserName;类的名字一般首字母大写。
下划线规则:user_name user_login_flag
保留字/关键字:在计算机中有特殊含义的单词。
In [1]: import keyword In [2]: keyword.kwlist Out[2]: [\'False\', \'None\', \'True\', \'and\', \'as\', \'assert\', \'break\', \'class\', \'continue\', \'def\', \'del\', \'elif\', \'else\', \'except\', \'finally\', \'for\', \'from\', \'global\', \'if\', \'import\', \'in\', \'is\', \'lambda\', \'nonlocal\', \'not\', \'or\', \'pass\', \'raise\', \'return\', \'try\', \'while\', \'with\', \'yield\'] In [3]:
输出和输出格式
In [4]: print(\'hello\',\'world\',\'zyj\',\'hello\') //输出多个变量 hello world zyj hello In [5]: print(111+222) //输出表达式 333 In [6]: exit [root@localhost python]#vim 3.py 1 a=35 2 print("my age is:%d"%a ) //变量替换 [root@localhost python]# python3 3.py my age is:35 [root@localhost python]#vim 3.py 1 a=35 2 b=10 3 print("my age is:%d"%a+b) [root@localhost python]# python3 3.py Traceback (most recent call last): File "3.py", line 3, in <module> print("my age is:%d"%a+b) //错误行 TypeError: must be str, not int //错误类型 [root@localhost python]#vim 3.py 1 a=35 2 b=10 3 print("my age is:%d"%(a+b)) //表达式需要用括号括起来 [root@localhost python]# python3 3.py my age is:45 [root@localhost python]#vim 3.py 1 a=35 2 b=10 3 my_name="zyj" 4 print("my age is:%d,my name is:%s" %(a+b,my_name)) //如果需要多个变量替换也要加小括号,并且每个变量用逗号隔开,%d代表整数类型替换,%s代表所有的类型变量替换,可以只记住%s [root@localhost python]# python3 3.py my age is:45,my name is:zyj [root@localhost python]# vim 3.py 1 a=35 2 b=10 3 my_name="zyj" 4 print("my age is:%d,my name is:%s" %(a+b,my_name)) 5 money=2 6 print("I have money:%04d" %money)//不够4位前面用0填充 7 w=3.1415926 8 print("w is:%.2f"%w) //输出的数字包含两位小数,如果没有用0填充 9 print("it\'s:%d%%"%a) //%表示占位符,%%第一个%表示转义符 [root@localhost python]# python3 3.py my age is:45,my name is:zyj I have money:0002 w is:3.14 it\'s:35%
输入和运算符:注意python2和python3中的一些区别。
输入:用户从电脑输入一些字符,可以让用户输入。
[root@localhost python]# vim 02输入.py 1 #encoding=UTF-8 2 #raw_input()只在python2中有,将输入内容作为字符串。 区别1 3 a=raw_input("请输入你的名字:") // [root@localhost python]# python 02输入.py 请输入你的名字:zyj [root@localhost python]#
[root@localhost python]# vim 02输入.py 4 #input函数在python2和python3中都有 5 #在python2中input函数输入的内容作为表达式,而不是字符串,在python3作为字符串。在python3中取消支持表达式,可以防止某些恶意脚本中包含大量的表达式,提升安全性。区别2 6 a=input("请输入姓名:") 7 print(a) [root@localhost python]# python3 02输入.py 请输入姓名:ZYJ ZYJ [root@localhost python]# python 02输入.py 请输入姓名:11+11 22
[root@localhost python]# vim 02输入.py 6 name=input("请输入姓名:") 7 print(name) 8 age=input("请输入年龄:") 9 print("你输入的姓名:%s,你输入的年龄:%s" %(name,age)) [root@localhost python]# python3 02输入.py 请输入姓名:zyj zyj 请输入年龄:18 [root@localhost python]# vim 02输入.py 6 name=input("请输入姓名:") 7 print(name) 8 age=input("请输入年龄:") 9 print(type(age)) 10 age=age+2 //年龄加2岁 11 print("你输入的姓名:%s,你输入的年龄:%s" %(name,age)) <class \'str\'> Traceback (most recent call last): File "02输入.py", line 10, in <module> age=age+2 TypeError: must be str, not int //age为字符串,第10行只能字符串相加 [root@localhost python]# vim 02输入.py 6 name=input("请输入姓名:") 7 print(name) 8 age=input("请输入年龄:") 9 print(type(age)) 10 age=int(age)+2 //转换类型后进行相加 11 print("你输入的姓名:%s,你输入的年龄:%s" %(name,age)) [root@localhost python]# python3 02输入.py 请输入姓名:zyj zyj 请输入年龄:18 <class \'str\'> 你输入的姓名:zyj,输入的年龄:20
运算符:
赋值运算符=:把=右边的结果给左边的变量。注意区别与==,==为数学中的等于号;
+-*/%//** 加减乘除取余取整除幂
In [1]: 3**2 Out[1]: 9 In [2]: 3//2 Out[2]: 1 In [3]: 3/2 Out[3]: 1.5 In [4]: 3%2 Out[4]: 1
复合赋值运算符:前后先操作再赋值
+= -= *= /= %= **= //=
In [7]: a=3 In [9]: b=2 In [10]: b+=a //b=b+a In [11]: b Out[11]: 5
In [13]: a=6 In [14]: a*=23-21+34-7 //a=6*(29) In [15]: a Out[15]: 174
条件判断
if<条件判断1>: 执行1 elif<条件判断2>: 执行2 elif<条件判断3>: 执行3 else: 执行4
举例:
[root@localhost python]# vim 04.py 1 age=input("age:") 2 age=int(age) 3 sex=input("sex:") 4 # and or not 5 if age >=18 and sex == "man" : 6 print(\'you can do it\') 7 elif age <18 or sex == "woman" : 8 print("you can\'t do it") 9 elif not (sex == "man" or sex == "woman"):#sex != "woman" and sex != "man" //<>也是不等于 10 print("人妖") 11 else: 12 pass #以后填充代码,为了保证不出现语法错误,当由else:又没有写其他的时候会出现语法错误 [root@localhost python]# python3 04.py age:19 sex:man you can do it [root@localhost python]# python3 04.py age:14 sex:woman you can\'t do it [root@localhost python]# vim 04.py [root@localhost python]# python3 04.py age:13 sex:dsfdsf you can\'t do it [root@localhost python]# python3 04.py age:19 sex:dfdsf 人妖
小技巧:age:dfsdfsdf^H^H^H^H^H^H^H 当键盘输入删除符时会当作字符,此时需要按ctrl+backspace键可以删除。
特殊的真和假
真:非0
假:0 “” None [] () {}
[root@localhost python]# vim 05.py 1 age=int(input(\'age:\')) 2 if age: 3 print("age不为0") 4 else: 5 print("age为0") 6 name="" 7 if name: 8 print("name 不是空字符串") 9 else: 10 print("name 是空字符串") [root@localhost python]# python3 05.py age:0 age为0 name 是空字符串
练习:
1、根据BMI公式(体重除以身高的平方)计算输入人的BMI指数,低于18.5过轻,18.5-25正常,25-28过重,高于32严重肥胖,用if-elif输出打印出来
[root@localhost python]# vim 06.py 1 h=float(input("input your height:")) 2 w=float(input("input your weight:")) 3 print("your height is %.2f,weight is %.2f"%(h,w)) 4 BMI=w/(h**2) 5 if BMI <18.5 : 6 print("you are too light") 7 elif BMI >=18.5 and BMI <25: 8 print("you are nomal") 9 10 elif BMI >=25 and BMI <32: 11 print("you are weight") 12 13 else: 14 print("you are too weight") 15 print("your BMI is:%.2f"%BMI) [root@localhost python]# python3 06.py input your height:1.50 input your weight:48 your height is 1.50,weight is 48.00 you are nomal your BMI is:21.33 [root@localhost python]#
2、情节描述:输入公交卡余额,超过2元就可以上车,如果空位置数量大于0,就可以坐下;
[root@localhost python]# vim 07.py 1 b=float(input("please input your balance:")) 2 s=int(input("please input the number of the empty seat:")) 3 print("your balance is:%.2f,the empty seat is:%d"%(b,s)) 4 if b >= 2 and s > 0: 5 print("please get on and you have a seat") 6 elif b >= 2 and s <= 0: //第一次忘记写:号,第二次调式的时候与预期不一致,忘记写=号,输入0时没有匹配到。边界值测试 7 print("you can get on but there is no seat for you") 8 else: 9 print("sorry you can\'t get on,because your balance is too short") 10 print("goodluck to you") [root@localhost python]# python3 07.py File "07.py", line 6 elif b >= 2 and s < 0 ^ SyntaxError: invalid syntax [root@localhost python]# vim 07.py 6 //进去后光标在报错行 #运行测试,查看结果 [root@localhost python]# python3 07.py please input your balance:2 #边界值测试 please input the number of the empty seat:0 #边界值 your balance is:2.00,the empty seat is:0 you can get on but there is no seat for you goodluck to you [root@localhost python]# python3 07.py please input your balance:1 #正常值测试 please input the number of the empty seat:3 #正常值 your balance is:1.00,the empty seat is:3 sorry you can\'t get on,because your balance is too short goodluck to you [root@localhost python]# python3 07.py please input your balance:0 please input the number of the empty seat:0 your balance is:0.00,the empty seat is:0 sorry you can\'t get on,because your balance is too short goodluck to you [root@localhost python]# python3 07.py please input your balance:10 please input the number of the empty seat:10 your balance is:10.00,the empty seat is:10 please get on and you have a seat goodluck to you [root@localhost python]# python3 07.py please input your balance:-1 #非法值测试 please input the number of the empty seat:-1#非法值测试 your balance is:-1.00,the empty seat is:-1 sorry you can\'t get on,because your balance is too short goodluck to you [root@localhost python]# python3 07.py please input your balance:1000000000000000000000000 #超大值测试 please input the number of the empty seat:1000000000000000000000000 your balance is:999999999999999983222784.00,the empty seat is:1000000000000000000000000 please get on and you have a seat goodluck to you [root@localhost python]#
使用if嵌套实现,更符合正常逻辑。
[root@localhost python]# python3 07.py 1 m = float(input("money:")) 2 s = int(input("seat:")) 3 if m >= 2: 4 print("you can get on") 5 if s > 0: 6 print("there is a seat for you") 7 else: 8 print("sorry there is no seat for you") 9 else: 10 print("sorry,you can\'t get on ") [root@localhost python]# python3 08.py #边界值测试 money:2 seat:0 you can get on sorry there is no seat for you [root@localhost python]# python3 08.py #正常值测试 money:2 seat:1 you can get on there is a seat for you [root@localhost python]# python3 08.py #非法值测试 money:-1 seat:-1 sorry,you can\'t get on [root@localhost python]# python3 08.py #较大的值测试 money:100000000000000 seat:1000000000000000000000 you can get on there is a seat for you
循环:在程序中做相同的事情,需要使用循环。
while循环
while 条件: 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做的事情3 .......
举例:
求1加到100的和:
[root@localhost python]# vim 09.py 1 i = 1 2 s = 0 3 while i <= 100: #满足条件的才进入while循环 4 s += i 5 #i++ python不支持这种写法 6 i+=1 #如果i不变的时候,一直为1,则会一直循环,出现死循环。 7 print("从1加到100的和为:%d" %s) [root@localhost python]# python3 09.py 从1加到100的和为:5050
求1-100之间偶数的和,包含1和100。
[root@localhost python]# vim 10.py 1 i=1 2 s=0 3 while i <= 100: 4 even = i % 2 5 if even == 0 : 6 s+=i 7 else: 8 pass 9 i+=1 10 print("1和100之间的偶数和为:%d" %s) [root@localhost python]# python3 10.py 1和100之间的偶数和为:2550
打印下面的图形:
[root@localhost python]# vim 12.py 1 i=1 2 while i <= 5 : 3 print(i*"*") 4 i+=1 [root@localhost python]# python3 12.py * ** *** **** *****
1 i=1 2 while i <= 10 : 3 print(10*"*") 4 i+=1 [root@localhost python]# python3 12.py ********** ********** ********** ********** ********** ********** ********** ********** ********** **********
while循环嵌套
while 条件1: 条件1满足时,做的事情1 条件1满足时,做的事情2 条件1满足时,做的事情3 ....... while 条件2: 条件2满足时,做的事情1 条件2满足时,做的事情2 条件2满足时,做的事情3 ......
举例:用星号打印矩形
版本1:按照逻辑初次编写
1 x=1 #x为矩形长 2 y=1 #y为矩形宽 3 4 while y <= 10 :#输出10行 5 while x <= 10 :#在一行中输出10个* 6 print("*") 7 x += 1 8 y += 1 9 print("pass") [root@localhost python]# python3 11.py * * * * * * * * * * pass #输出结果不符合预期
版本2:解决输出一行时,进行了换行的问题。
1 x=1 #x为矩形长 2 y=1 #y为矩形宽 3 4 while y <= 10 :#输出10行 5 while x <= 10 :#在一行中输出10个* 6 print("*",end="")#print函数默认输出后就会换行,如果不换行,end="" 7 x += 1 8 y += 1 9 print("pass")
[root@localhost python]# python3 11.py
**********pass #输出不符合预期
版本3:解决只打印了一行星号的问题。
1 x=1 #x为矩形长 2 y=1 #y为矩形宽 3 4 while y <= 10 :#输出10行 5 x=1 #每行执行完成后,x为11,若不重新赋值,则第二次大循环的时候不会进到小循环里面,因此只会输出一行*,因此这里需要重新赋值。 6 while x <= 10 :#在一行中输出10个* 7 print("*",end="")#print函数默认输出后就会换行,如果不换行,end="" 8 x += 1 9 y += 1 10 print("pass") [root@localhost python]# python3 11.py ****************************************************************************************************pass #还是不满足预期
版本4:解决多行星号没有换行的问题
1 x=1 #x为矩形长 2 y=1 #y为矩形宽 3 4 while y <= 10 :#输出10行 5 x=1 #每行执行完成后,x为11,若不重新赋值,则第二次大循环的时候不会进到小循环里面,因此只会输出一行* 6 while x <= 10 :#在一行中输出10个* 7 print("*",end="")#print函数默认输出后就会换行,如果不换行,end="" 8 x += 1 9 print("")#每行结束后输出一个换行,print函数默认会输出换行 10 y += 1 11 print("pass") [root@localhost python]# python3 11.py ********** ********** ********** ********** ********** ********** ********** ********** ********** ********** pass
说明:查看python中函数的帮助文档:
[root@localhost ~]# ipython3 In [1]: help(以上是关于python数据类型的主要内容,如果未能解决你的问题,请参考以下文章