一.变量

1 什么是变量之声明变量

#变量名=变量值
age=18
gender1='male'
gender2='female'

2 为什么要有变量

变量作用:“变”=>变化,“量”=>计量/保存状态
程序的运行本质是一系列状态的变化,变量的目的就是用来保存状态,变量值的变化就构成了程序运行的不同结果。

3 变量值之类型与对象

程序中需要处理的状态很多,于是有了不同类型的变量值,x='seven',变量值'seven'存放与内存中,绑定一个名字x,变量值即我们要存储的数据。

在python中所有数据都是围绕对象这个概念来构建的,对象包含一些基本的数据类型:数字,字符串,列表,元组,字典等
程序中存储的所有数据都是对象,
对象三个特性
• 身份:内存地址,可以用id()获取
• 类型:决定了该对象可以保存什么类型值,可执行何种操作,需遵循什么规则,可用type()获取
• 值:对象保存的真实数据
注:我们在定义数据类型,只需这样:x=1,内部生成1这一内存对象会自动触发,我们无需关心

1 对象的类型也称为对象的类别,python为每个类型都定制了属于该类型特有的方法,极大地方便了开发者对数据的处理
2 创建某个特定类型的对象也称为创建了该类型的一个实例,工厂函数的概念来源于此

4 可变对象与不可变对象

实例被创建后,身份和类型是不可变的,
如果值是不可以被修改的,则是不可变对象
如果值是可以被修改的,则是可变对象

可变数据类型:在id不变的情况下,数据类型内部的元素可以改变,

不可变数据类型:value改变,id也跟着改变(数字、字符串、布尔)

补充  True--->1

     False--->0

5 容器对象

某个对象包含对其他对象的引用,则称为容器或集合,Python中可作为容器的有:列表,元组,字典

6 对象的属性和方法

属性就是对象的值,方法就是调用时将在对象本身上执行某些操作的函数,使用.运算符可以访问对象的属性和方法,如
a=3+4j
a.real

b=[1,2,3]
b.append(4)

7 身份比较,类型比较,值比较

x=1

y=1
x is y #x与y是同一个对象,is比较的是id,即身份
type(x) is type(y) #对象的类型本身也是一个对象,所以可以用is比较两个对象的类型的身份
x == y #==比较的是两个对象的值是否相等

8 变量的赋值操作

• 与c语言的区别在于变量赋值操作无返回值
• 链式赋值:y=x=a=1
• 多元赋值:x,y=1,2 x,y=y,x
• 增量赋值:x+=1

二.数据类型

2.2基本数据类型

2.2.1数字:

特性:
1.只能存放一个值
2.一经定义,不可更改
3.直接访问
分类:整型,长整型,布尔,浮点,复数

整型int:年级,年纪,等级,身份证号,qq号,手机号
level=10
Python的整型相当于C中的long型,Python中的整数可以用十进制,八进制,十六进制表示。
>>> 10
10 --------->默认十进制
>>> oct(10)
'012' --------->八进制表示整数时,数值前面要加上一个前缀“0”
>>> hex(10)
'0xa' --------->十六进制表示整数时,数字前面要加上前缀0X或0x
python2.*与python3.*关于整型的区别
python2.*
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647

在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
python3.*整形长度无限制

浮点型float:身高,体重,薪资,温度,价格
height=1.81
salary=3.3
Python的浮点数就是数学中的小数,类似C语言中的double。
在运算中,整数与浮点数运算的结果是浮点数
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,
一个浮点数的小数点位置是可变的,比如,1.23*109和12.3*108是相等的。
浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,
就必须用科学计数法表示,把10用e替代,1.23*109就是1.23e9,或者12.3e8,0.000012
可以写成1.2e-5,等等。
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的而浮点数运算则可能会有
四舍五入的误差。

2.2.2字符串

字符串str:它是一个有序的字符的集合,用于存储和表示基本的文本信息,‘’或“”或‘’‘ ’‘’中间包含的内容称之为字符串,包含在引号(单,双,三)里面,由一串字符组成

特性:
1.只能存放一个值
2.不可变
3.按照从左到右的顺序定义字符集合,下标从0开始顺序访问,有序
补充:
  1.字符串的单引号和双引号都无法取消特殊字符的含义,如果想让引号内所有字符均取消特殊意义,在引号前面加r,如name=r'l\thf'
  2.unicode字符串与r连用必需在r前面,如name=ur'l\thf'

用途(描述性的数据):姓名,性别,地址,学历,密码:alex3714
name='egon'

取值:
首先要明确,字符串整体就是一个值,只不过特殊之处在于:
python中没有字符类型,字符串是由一串字符组成,想取出字符串中
的字符,也可以按照下标的方式取得

name:取得是字符串整体的那一个值
name[1]:取得是第二位置的字符

字符串拼接:
>>> msg1='hello'
>>> msg2=' world'
>>>
>>> msg1 + msg2
'hello world'
>>> res=msg1 + msg2
>>> print(res)
hello world

>>> msg1*3
'hellohellohello'

  1. #strip
  2. name='*egon**'
  3. print(name.strip('*'))
  4. print(name.lstrip('*'))
  5. print(name.rstrip('*'))
  6.  
  7. #startswith,endswith
  8. name='alex_SB'
  9. print(name.endswith('SB'))
  10. print(name.startswith('alex'))
  11.  
  12. #replace
  13. name='alex say :i have one tesla,my name is alex'
  14. print(name.replace('alex','SB',1))
  15.  
  16. #format的三种玩法
  17. res='{} {} {}'.format('egon',18,'male')
  18. res='{1} {0} {1}'.format('egon',18,'male')
  19. res='{name} {age} {sex}'.format(sex='male',name='egon',age=18)
  20.  
  21. #find,rfind,index,rindex,count
  22. name='egon say hello'
  23. print(name.find('o',1,3)) #顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引
  24. # print(name.index('e',2,4)) #同上,但是找不到会报错
  25. print(name.count('e',1,3)) #顾头不顾尾,如果不指定范围则查找所有
  26.  
  27. #split
  28. name='root:x:0:0::/root:/bin/bash'
  29. print(name.split(':')) #默认分隔符为空格
  30. name='C:/a/b/c/d.txt' #只想拿到顶级目录
  31. print(name.split('/',1))
  32.  
  33. name='a|b|c'
  34. print(name.rsplit('|',1)) #从右开始切分
  35.  
  36. #join
  37. tag=' '
  38. print(tag.join(['egon','say','hello','world'])) #可迭代对象必须都是字符串
  39.  
  40. #center,ljust,rjust,zfill
  41. name='egon'
  42. print(name.center(30,'-'))
  43. print(name.ljust(30,'*'))
  44. print(name.rjust(30,'*'))
  45. print(name.zfill(50)) #用0填充
  46.  
  47. #expandtabs
  48. name='egon\thello'
  49. print(name)
  50. print(name.expandtabs(1))
  51.  
  52. #lower,upper
  53. name='egon'
  54. print(name.lower())
  55. print(name.upper())
  56.  
  57. #captalize,swapcase,title
  58. print(name.capitalize()) #首字母大写
  59. print(name.swapcase()) #大小写翻转
  60. msg='egon say hi'
  61. print(msg.title()) #每个单词的首字母大写
  62.  
  63. #is数字系列
  64. #在python3中
  65. num1=b'' #bytes
  66. num2=u'' #unicode,python3中无需加u就是unicode
  67. num3='四' #中文数字
  68. num4='Ⅳ' #罗马数字
  69.  
  70. #isdigt:bytes,unicode
  71. print(num1.isdigit()) #True
  72. print(num2.isdigit()) #True
  73. print(num3.isdigit()) #False
  74. print(num4.isdigit()) #False
  75.  
  76. #isdecimal:uncicode
  77. #bytes类型无isdecimal方法
  78. print(num2.isdecimal()) #True
  79. print(num3.isdecimal()) #False
  80. print(num4.isdecimal()) #False
  81.  
  82. #isnumberic:unicode,中文数字,罗马数字
  83. #bytes类型无isnumberic方法
  84. print(num2.isnumeric()) #True
  85. print(num3.isnumeric()) #True
  86. print(num4.isnumeric()) #True
  87.  
  88. #三者不能判断浮点数
  89. num5='4.3'
  90. print(num5.isdigit())
  91. print(num5.isdecimal())
  92. print(num5.isnumeric())
  93. '''
  94. 总结:
  95. 最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景
  96. 如果要判断中文数字或罗马数字,则需要用到isnumeric
  97. '''
  98.  
  99. #is其他
  100. print('===>')
  101. name='egon123'
  102. print(name.isalnum()) #字符串由字母和数字组成
  103. print(name.isalpha()) #字符串只由字母组成
  104.  
  105. print(name.isidentifier())
  106. print(name.islower())
  107. print(name.isupper())
  108. print(name.isspace())
  109. print(name.istitle())

练习

  1. # 写代码,有如下变量,请按照要求实现每个功能
  2. name = " aleX"
  3. # 1) 移除 name 变量对应的值两边的空格,并输出处理结果
  4. # 2) 判断 name 变量对应的值是否以 "al" 开头,并输出结果

  5. # 3) 判断 name 变量对应的值是否以 "X" 结尾,并输出结果

  6. # 4) 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
  7. # 5) 将 name 变量对应的值根据 “l” 分割,并输出结果。
  8. # 6) 将 name 变量对应的值变大写,并输出结果

  9. # 7) 将 name 变量对应的值变小写,并输出结果

  10. # 8) 请输出 name 变量对应的值的第 2 个字符?
  11. # 9) 请输出 name 变量对应的值的前 3 个字符?
  12. # 10) 请输出 name 变量对应的值的后 2 个字符?

  13. # 11) 请输出 name 变量对应的值中 “e” 所在索引位置?

  14. # 12) 获取子序列,去掉最后一个字符。如: hello 则获取 hell。
  1. # 写代码,有如下变量,请按照要求实现每个功能
  2. name = " aleX"
  3. # 1) 移除 name 变量对应的值两边的空格,并输出处理结果
  4. name = ' aleX'
  5. a=name.strip()
  6. print(a)
  7.  
  8. # 2) 判断 name 变量对应的值是否以 "al" 开头,并输出结果

  9. name=' aleX'
  10. if name.startswith(name):
  11. print(name)
  12. else:
  13. print('no')
  14.  
  15. # 3) 判断 name 变量对应的值是否以 "X" 结尾,并输出结果

  16. name=' aleX'
  17. if name.endswith(name):
  18. print(name)
  19. else:
  20. print('no')
  21.  
  22. # 4) 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
  23. name=' aleX'
  24. print(name.replace('l','p'))
  25.  
  26. # 5) 将 name 变量对应的值根据 “l” 分割,并输出结果。
  27. name=' aleX'
  28. print(name.split('l'))
  29.  
  30. # 6) 将 name 变量对应的值变大写,并输出结果

  31. name=' aleX'
  32. print(name.upper())
  33.  
  34. # 7) 将 name 变量对应的值变小写,并输出结果

  35. name=' aleX'
  36. print(name.lower())
  37.  
  38. # 8) 请输出 name 变量对应的值的第 2 个字符?
  39. name=' aleX'
  40. print(name[1])
  41.  
  42. # 9) 请输出 name 变量对应的值的前 3 个字符?
  43. name=' aleX'
  44. print(name[:3])
  45.  
  46. # 10) 请输出 name 变量对应的值的后 2 个字符?

  47. name=' aleX'
  48. print(name[-2:])
  49.  
  50. # 11) 请输出 name 变量对应的值中 “e” 所在索引位置?

  51. name=' aleX'
  52. print(name.index('e'))
  53.  
  54. # 12) 获取子序列,去掉最后一个字符。如: hello 则获取 hell。
  55. name=' aleX'
  56. a=name[:-1]
  57. print(a)

2.2.3列表

定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素
特性:
1.可存放多个值
2.可修改指定索引位置对应的值,可变
3.按照从左到右的顺序定义列表元素,下标从0开始顺序访问,有序
用途(存多个值,可以修改):爱好,装备,女朋友们
hobby=['play','eat','sleep']
方法:
hobby.append
hobby.remove
操作:
查看:
>>> girls=['alex','wsb',['egon','ysb']]
>>> girls[2]   #查看第3位的元素
['egon', 'ysb']
>>> girls[2][0]   #查看第3位元素的第一个元素

追加
girls.append(元素)  #在列表最后增加新元素
删除
girls.remove(元素)    #删除指定元素
del girls[元素的索引]   #删除目标索引位置的元素
修改
girls[0]='alexSB'

切片

girls[0:2]  #顾头不顾尾   结果为 ['alex', 'wsb']

girls[0:3:2]  #第三位是指定步长为2,默认不写为1,  结果为 ['alex', ['egon', 'ysb']]

长度

循环

包含in

练习:

    有列表data=['alex',49,[1900,3,18]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变量

  1. l=[
  2. {'name':'alex','age':84},
  3. {'name':'oldboy','age':73},
  4. {'name':'egon','age':18},
  5. ]
  6. l.sort(key=lambda item:item['age'])
  7. print(l)

2.2.4 字典dict

定义:在{},逗号分割,每一个元素的形式都是key:value
定义:{key1:value1,key2:value2},key-value结构,key必须可hash
特性:
1.可存放多个值
2.可修改指定key对应的值,可变
3.无序

字典:
用途:存多个值,这一点与列表相同,值可以是任意数据类型
特征:每一个值都一个唯一个对应关系,即key,强调一点,key必须是
不可变类型:字符串,数字
student_info={
'age':81,
'name':'alex',
'sex':None,
'hobbies':['zsb0','zsb1','zsb2','zsb30']
}

操作:
查看
>>> student_info={
... 'age':81,
... 'name':'alex',
... 'sex':None,
... 'hobbies':['zsb0','zsb1','zsb2','zsb30']
... }
>>>
>>> student_info['age']
81
>>> student_info['hobbies']
['zsb0', 'zsb1', 'zsb2', 'zsb30']
>>> student_info['hobbies'][2]
'zsb2'

增加
student_info['stu_id']=123456

删除
del student_info['stu_id']

修改
student_info['name']='alexSB'

  1. # 作业三:字典练习
  2. #   1
  3. # 有如下值集合[11, 22, 33, 44, 55, 66, 77, 88, 99, 90...],将所有大于
  4. #
  5. # 的值保存至字典的第一个key中,将小于
  6. #
  7. # 的值保存至第二个key的值中。(2
  8. # 分)
  9. #
  10. #   即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
  11. #
  12. # dic={'k1':[],'k2':[]}
  13. # num=[11,22,33,44,55,66,77,88,99,90]
  14. # for i in num :
  15. # if i >66:
  16. # dic['k1'].append(i)
  17. # if i<66:
  18. # dic['k2'].append(i)
  19. # print(dic)
  20.  
  21. #2 统计s = 'hello alex alex say hello sb sb'
  22. # 中每个单词的个数
  23. #
  24. #   结果如:{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}
  25. #方法1:
  26. # s = 'hello alex alex say hello sb sb'
  27. # dic={}
  28. # l=s.split()
  29. # for i in l:
  30. # if i not in dic:
  31. # dic[i]=1
  32. # else:
  33. # dic[i] += 1
  34. # print(dic)
  35.  
  36. #方法2:利用count重复赋值
  37. # s = 'hello alex alex say hello sb sb'
  38. # dic={}
  39. # l=s.split()
  40. # for word in l:
  41. # dic[word]=l.count(word)
  42. # print(dic)
  43.  
  44. #方法3: 利用setdefault
  45. '''
  46. setdefault的功能
  47. 1.key存在,则不赋值,key不存在则设置默认值
  48. 2.key存在,返回的是key对应的已有的值,key不存在,返回的则是要设置的默认值
  49. d={}
  50. print(d.setdefault('a',1)) #返回1
  51.  
  52. d={'a':2222}
  53. print(d.setdefault('a',1)) #返回2222
  54. '''
  55.  
  56. # s = 'hello alex alex say hello sb sb'
  57. # dic={}
  58. # words=s.split()
  59. # for word in words:
  60. # dic.setdefault(word,s.count(word))
  61. # print(dic)
  62.  
  63. #方法4:利用集合,去掉重复,减少循环次数
  64. # s = 'hello alex alex say hello sb sb'
  65. # dic={}
  66. # word=s.split()
  67. # words_set=set(word)
  68. # for word in words_set:
  69. # dic[word]=s.count(word)
  70. # print(dic)

布尔:True False
用途:用来判断

>>> pinfo={'name':'oldboymei','age':53,'sex':'female'}
>>>
>>>
>>> pinfo['age'] > 50
True
>>> pinfo['sex'] == 'female'
True

python基础之数据类型与变量的更多相关文章

  1. 第三篇:python基础之数据类型与变量

    阅读目录 一.变量 二.数据类型 2.1 什么是数据类型及数据类型分类 2.2 标准数据类型: 2.2.1 数字 2.2.1.1 整型: 2.2.1.2 长整型long: 2.2.1.3 布尔bool ...

  2. 第二篇.1、python基础之数据类型与变量

    一.变量 1 什么是变量之声明变量 #变量名=变量值 age=18 gender1='male' gender2='female' 2 为什么要有变量 变量作用:“变”=>变化,“量”=> ...

  3. python学习第三天:python基础(数据类型和变量)

    注释 以  # 开头的语句是注释,如,注释不会被编译运行: 格式 当语句以冒号:结尾时,缩进的语句视为代码块.按照约定俗成的管理,应该始终坚持使用4个空格的缩进(在文本编辑器中,需要设置把Tab自动转 ...

  4. Python基础之数据类型和变量

    数据类型 ​ 计算机顾名思义就是可以做数学机器,可以处理各种数值,计算机还能处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据是需要定义不同的数据类型的,在Python中,能够直接处理的数据 ...

  5. Python基础之数据类型、变量、常量

    数据类型 整数:任意大小的整数,十六进制用0x前缀 浮点数:浮点数也就是小数,科学计数法1.23x109就是1.23e9,0.000012可以写成1.2e-5 字符串:以单引号'或双引号"括 ...

  6. python教程1:Python基础之数据类型和变量、字符串和编码

    视频链接:http://www.bilibili.com/video/av10730372/ 我是在Linux下玩python的,Linux下默认安装python,直接打个pyhon3就好了,pyth ...

  7. Python基础(数据类型与变量、字符串和编码)

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- # name = 200 # if name > 100: # print(name,'大于100' ...

  8. python基础之数据类型与变量patr2

    一.元素分类 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中. 即: ...

  9. python基础之数据类型与变量patr1

    1:编写for循环,利用索引遍历出每一个字符 msg='hello egon 666' 2:编写while循环,利用索引遍历出每一个字符 msg='hello egon 666' 3:msg='hel ...

随机推荐

  1. Bootstrap table使用心得---thead与td无法对齐的问题

    当使用工具条中的显示/隐藏列的时候, 经常出现表格的列头与内容无法对齐的问题. 1. 去掉option中的height,完美对齐,但当数据较多的时候,table会自动增加height,显示所有数据而不 ...

  2. Vijos 1006 晴天小猪历险记之Hill 单源单汇最短路

    背景 在很久很久以前,有一个动物村庄,那里是猪的乐园(^_^),村民们勤劳.勇敢.善良.团结-- 不过有一天,最小的小小猪生病了,而这种病是极其罕见的,因此大家都没有储存这种药物.所以晴天小猪自告奋勇 ...

  3. vue实现对表格数据的增删改查

    在管理员的一些后台页面里,个人中心里的数据列表里,都会有对这些数据进行增删改查的操作.比如在管理员后台的用户列表里,我们可以录入新用户的信息,也可以对既有的用户信息进行修改.在vue中,我们更应该专注 ...

  4. FineReport填报分页设置

    1. 问题描述 进行FineReport数据填报时,如果数据量过大,由于前端浏览器的性能限制,如果将数据全部展现出来,速度会非常的慢,影响用户体验,这时候大家就会想,填报是否能像分页预览一样进行分页呢 ...

  5. jQuery手风琴的制作!!

    jQuery手风琴的制作 首先我们先来做一个简单的jQuery的效果图 效果图 如下: css代码 如下: <style type="text/css" media=&quo ...

  6. mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

    最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...

  7. JavaScript一个猜数字游戏

    效果图: 代码: <body> <script type="text/javascript"> window.onload = newgame; //页面载 ...

  8. 单片机C语言基础编程源码六则2

    1.某单片机系统的P2口接一数模转换器DAC0832输出模拟量,现在要求从DAC0832输出连续的三角波,实现的方法是从P2口连续输出按照三角波变化的数值,从0开始逐渐增大,到某一最大值后逐渐减小,直 ...

  9. CJOJ 2044 【一本通】最长公共子序列(动态规划)

    CJOJ 2044 [一本通]最长公共子序列(动态规划) Description 一个给定序列的子序列是在该序列中删去若干元素后得到的序列.确切地说,若给定序列X,则另一序列Z是X的子序列是指存在一个 ...

  10. Memcached的安装与使用

    这一段折腾了下Memcached,有所收获吧,记录一下. 1.什么是Memcached memcached是一种缓存技术, 他可以把你的数据放入内存,从而通过内存访问提速,因为内存最快的, memca ...