python 备选

 

 

 

4.1 Number  数字

  数据类型是不允许改变的

  整数:int   通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,布尔(bool)是整型的子类型。

  浮点数:float  浮点型由整数部分与小数部分组成

  复数:complex   复数由实数部分和虚数部分构成

    主要用计算,使用不多,记住以下就行:

      加:+  减:-   乘:*   除: /    取余:%   整除://  幂:**

    取值范围:

      在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647

      在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807

i= 5.8    # 浮点数
print(int(i)) # 转换位 整数 精度损失
s = str(i)         # int 转换为字符串
b = bool(i)         # int 转换为布尔值    只有0是False  非0都是True

  

  

 

bool :布尔型 ,如:True、False

    True    真     1

    False   假     0

注意:Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加 True==1,False==0 是会返回 Ture,但可以通过 is 来判断类型。

# 同上  布尔值转换为int  只 能输出 0 和 1    

i = int(True)   
b = int(False)      

while True:
  pass
while 1:   # 这个效率更高,因为电脑只识别0101二进制,True还要转换以下
  pass

 

  

 

4.2 字符串 String:一般用英文:'内容' , "内容" , ''' 内容:多行'''  ,

    可以相加,可以数字加乘,存放少量数据

同上 字符串转换为 int 或布尔值

c = "123"
b = int(c)      # 注:字符串转换为int 前提条件必须是 数值类型

字符串转换为布尔值

s = ""   --> False
#非空字符串都是True   

s
if s:
  print('你输入的为空,请重新输入')
else:
  pass

 

  

# 字符串的索引与切片

s = 'ASDFGHJKL'

#索引  字符串有一定顺序,且从0开始
s1 = s[0]     # 新的s1与上面的s已经没有任何关联
print(s1)
>> A

s3 = s[-1]    # 如果字符串很长,我又去最后几位 就可以倒着取
print(s3)
>> L

# 切片  取前不取后
s2 = s[0:4]   # 不影响s哦
print(s2)
>> ASDF

s4 = s[0:] # 全部取,你以为是 = [0:-1]  你会发现最后一位没取,记得取后不取前
s5 = s[:]   # 也可以这样写哦!
print(s4,s5)
>> ASDFGHJKL ASDFGHJKL

# 跳这取 s[首:尾:步长]
s6 = s[0:6:2]
print(s6)
>> ADG

# 倒着切
s7 = s[4:0:-1]
print(s7)
>> GFDS
s8 = s[4::-2]  # 倒着跳取 到最前面那位
print(s8)
>> GDA
s9 = s[-1::-1]  # 倒着取完
print(s9)
>> LKJHGFDSA
s10 = s[::-1]  # 倒着取完另一种方法
print(s10)
>> LKJHGFDSA

  

 

# 字符串的操作
s = 'asdfghj'

# capitalize       首字母大写
s1 = s.capitalize()
print(s1)
>> Asdfghj

# upper   全部大写
s2 = s.upper()
print(s2)
>> ASDFGHJ
'''
# 一道题 请输入验证码的题
s21 = 'sdFG'
s22 = input("请输入验证码,不区分大小写 ")
if s21.upper() == s22.upper():
    print('验证码正确')
else:
    print('验证码错误')
'''

# lower       全部小写
s3 = s.lower()
print(s3)
>> asdfghj

# swapcase   大小写翻转
s4 = s.swapcase()
print(s4)
>> ASDFGHJ

# title    每个隔开(特殊字符或数字)单词首字母大写
s5 = 'asd vbn fgh'
s51 = s5.title()
print(s51)
>> Asd Vbn Fgh

# center  填充
s6 = s.center(20)     # 居中填充 不写默认空白填充
s61 = s.center(10,'*') # 可以跟参数 10是算字符串总的为 不满用参数填充
print(s6,s61)
>>       asdfghj        *asdfghj**

# \t     加上前面所占不到8位补8位,超过8位不足16位补16位
s7 = 'fg\tkl'
s71 = s7.expandtabs()
print(s71)
>> fg      kl

# len   计算字符串长度
s8 = len(s)
print(s8)
>> 7

# startswith    判断字符串是否以什么开头只能返回 True和False  ,后面不加条件 就判断整体
s9 = 'asdDFG'
s91 = s9.startswith('a')
s92 = s9.startswith('d',2,5)  # 可以切片判断
print(s91,s92)
>> True True

# find   通过元素 找元素所占的索引,找不到就返回-1
s9 = 'asdDFG'
s10 = s9.find('D')
s101 = s9.index('D') # 另一种方法  找不到会报错 ,首选find
print(s10,s101)
>> 3 3

# strip   删除前后元素 默认删除前后空格
s11 = '  hjkl  '
s111 = s11.strip()
s112 = '$%kljflk*'
s113 = s112.strip('*$%') # 可以加参数,里面不按顺序
s114 = s112.rstrip('*$%')  # 从右删,左边不动,同理 lstrip:从左删 右边不动
print(s111,s113,s114)
>> hjkl kljflk $%kljflk

# 附一道小题
# username = input('请输入你的名字:')
# if username.strip() == '小米':
#     print('答对了')

# count 计数
s12 = s.count('a') # 数字符串所有的元素,也可以两个一起'as'
print(s12)
>> 1

# split  分割 也是字符串转换成列表的一种方式
s13 = 'kjh jkjhk kjhjk'  
s131 = s13.split()  # 括号里是参数,分隔后参数是不显示的
print(s131)
>> ['kjh', 'jkjhk', 'kjhjk']
str.split(str="", num=string.count(str)) 
# 第一个是以哪个参数分割 ,num这个字符串里有多个参数 分割次数,num有指定值则分割num+1,默认为-1,即分割所有
s = 'alexwusirlex'
li = s.split('l',1) # 以l分割第一个
print(li)

#>> ['a', 'exwusirlex']

 

#format 格式化输出
s14 = '我叫{},今年{},喜欢{}'.format('huang',25,'girl')
s141 = '我叫{0},今年{1},喜欢{1}'.format('huang',25,'girl')
s142 = '我叫{name},今年{age},喜欢{hobby}'.format(name='huang',age=25,hobby='girl')
print(s14,s141,s142)
>> 我叫huang,今年25,喜欢girl 我叫huang,今年25,喜欢25 我叫huang,今年25,喜欢girl

# replace 替换
s15 = '我来看你了你知道吗你知道吗'
s151 = s15.replace('知道','haha',1) # 替换 目标,值 ,有相同的第几个
print(s151)
>> 我来看你了你haha吗你知道吗

  

  

  

 

  tuple:元组,元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。

    例:(1,2,3)("a","b","c")

# 元组 只读列表 可循环查询 可切片  儿子不能改 孙子可能可以改

ts = ('name','age','column',[1,2,'hello'],'man')
print(ts[3][2])  # 查
>> hello

ts[3][2] = ts[3][2].upper()  # 改孙子元素
print(ts)
>> ('name', 'age', 'column', [1, 2, 'HELLO'], 'man')

ts[3].append('ha')  # 添加
print(ts)
>> ('name', 'age', 'column', [1, 2, 'hello', 'ha'], 'man')
# python range() 函数可创建一个整数列表,一般用在 for 循环中。
#
#  函数语法
#  range(start, stop[, step])
#  参数说明:
#  start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
#  stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
#  step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

for i in range(0,10):  # (开始,结束,步长)
    print(i)
>> 0 1 2 3 4 5 6 7 8 9
for s in range(10,0,-2):
    print(s)
>> 10 8 6 4 2
for d in range(3,-10,-2):
    print(d)
>> 3 1 -1 -3 -5 -7 -9

 

  

# 一道题 两种方法参考
li = [1,2,3,5,'alex',[2,3,4,5,'taibai'],'afds']  # 都打印出来 包括里面的列表元素
# for i in li:
#     if type(i) == list:
#         for k in i:
#             print(k)
#     else:print(i)

for i in range(len(li)):
    if type(li[i]) == list:
        for j in li[i]:
            print(j)
    else:print(li[i])

  

  

  

 

  list:列表:[] 括起来,每个元素以逗号隔开,可以存储大量数据,而且他里面可以存放各种数据类型比如:

    li = [‘alex’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,],{‘name’:’alex’}]

    列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。

    而且列表是有序的,有索引值,可切片,方便取值。

# 列表 增删改查

# 增加 append          还在基础上增加 没有创建新的
p.append('happy,new year')
print(p)

# HR 输入名字 持续增加 当输入Q的时候 就退出
# while 1:
#     username = input('>>>')
#     if username.strip().upper() == 'Q':
#         break
#     else:
#         p.append(username)
#         print(p)

# insert 插入
p.insert(4,'老铁')
print(p)

# extend 插入可迭代的元素
p.extend('你好')
p.extend([1,2])
print(p)

# 删 pop
p2 = p.pop()  # 有返回值 不填参数 默认删最后一个
p21 = p.pop(4)  # 指定索引位删
print(p,p2,p21)

# remove 按元素删
p.remove('i love you')
print(p)

# clear 清空列表 但不删列结构
p.clear()
print(p)

# del
del p[0:2]  # 切片删
del p   # 全删包括列
print(p)   # 你会发现报错 ,因为没有了,所以他肯定报错

# 改
p[0] = '你好'   # 直接对应的 索引位改
p[0] = [4,5,6]    # 也可以直接改列表
p[0:3] = '你好' # 把前三个删了 划分到最小的元素添加
p[0:3] = ['hao','ba'] # 添加列表里每一个元素
print(p)

# 查
print(p[0:4])  # 直接查
l = len(p)  # 查列表长度
print(l)

# count 查一个元素的次数
print(p.count('ba'))

# index  查元素在列表中的索引位
print(p.index('hao'))

# sort 排序
s = [1,6,5,9,10]
s.sort()      # 正向排序
print(s)

s.sort(reverse = True)  # 倒向排序
print(s)

s.reverse()  # 翻转
print(s)
# 列表的嵌套

t = ['xiaomi','haha','happy new year',1,2]
print(t[1][1]) # 找里面元素的元素
name = t[1].capitalize()  # 所选的元素的首字母大写,但里面本质没有改变
print(name)
print(t)
t[0] = name # 这样里面元素已经改变
print(t)
print(t[2].replace('h','好')) # 里面元素替换
t[2] = t[2].replace('h','好')
print(t)


# 列表转换成 字符串 join 字符串转换成列表 split
s ='huang'
s1 = '+'.join(s)  # 可以对可迭代对象任何操作
print(s1)

#>> h+u+a+n+g

# ''.join()
li = ['alex','wusir','rain']
s2 = ''.join(li)
print(type(s2))
print(s2)

#>> <class 'str'>
#>> alexwusirrain

 

 

 

 

  dict:字典,用{ } 括起来,key不存在重复

'''
# dict
# 数据类型划分:可变、不可变
# 不可变 :元组、bool、int、str  可哈希
# 可变:list、dict、set         不可哈希

# dict key 必须是不可变得数据类型   可哈希
       value  任意数据类型。
dict 优点:二分查找去查询、存储大量的关系型数据
     特点:3.5版之前是无序的
            
       
'''

dict = {
    'name':'小米',
    'age':'18',
    'p1':[{'xuexi':15},20]
}

# 增
dict['hello'] = 'world'
print(dict)
# >> {'name': '小米', 'age': '18', 'p1': [{'xuexi': 15}, 20], 'hello': 'world'}

# 如果有了 会直接覆盖掉
dict['age'] = 25
print(dict)
# >> 'name': '小米', 'age': 25, 'p1': [{'xuexi': 15}, 20], 'hello': 'world'}

# setdefault
dict.setdefault('身高') # 没有vlaue会填充None
print(dict)
# >> {'name': '小米', 'age': 25, 'p1': [{'xuexi': 15}, 20], 'hello': 'world', '身高': None}
dict.setdefault('age','20') # 对里面有键值对,不做任何改变,没有参会添加
print(dict)
# >> {'name': '小米', 'age': 25, 'p1': [{'xuexi': 15}, 20], 'hello': 'world', '身高': None}

# 删
# pop
print(dict.pop('age')) # 有返回值
print(dict)
# >> 25
# >> {'name': '小米', 'p1': [{'xuexi': 15}, 20], 'hello': 'world', '身高': None}
print(dict.pop('age',None))  # 如果字典里没有你要删除的键值对,你就要加个返回值,可自定义 防止报错飘红
print(dict)
# >> None
# >> {'name': '小米', 'p1': [{'xuexi': 15}, 20], 'hello': 'world', '身高': None}

# popitem
print(dict.popitem()) # 删除最后一个,3.5以前随机删除 ,返回值 删除的键值对
print(dict)
# >> ('身高', None)
# >> {'name': '小米', 'p1': [{'xuexi': 15}, 20], 'hello': 'world'}

# del
del dict['name']  # 所在键值对不在时会报错
print(dict)
# >>{'p1': [{'xuexi': 15}, 20], 'hello': 'world'}

dict.clear()  #     清空字典
print(dict)
# >> {}

# 改
# 直接改
dict['age'] = 18
print(dict)
# >> {'age': 18}

# update
dict1 = {'name':'xiaomi','hello':'world'}
dict.update(dict1) # 把dict1的全部键值对 添加到 dict ,相同的覆盖
print(dict1)
print(dict)
# >> {'name': 'xiaomi', 'hello': 'world'}
# >> {'age': 18, 'name': 'xiaomi', 'hello': 'world'}

# 查
print(dict.keys())
print(dict.values())
print(dict.items())
# >> dict_keys(['age', 'name', 'hello'])
# >> dict_values([18, 'xiaomi', 'world'])
# >> dict_items([('age', 18), ('name', 'xiaomi'), ('hello', 'world')])

v1 = dict['name'] # 输出是值,没有就会报错
print(v1)
# >> xiaomi

# get
print(dict.get('name'))  # 有就会直接返回值 没有就会返回None
print(dict.get('name2','没有这个值')) # 也可以自定义
# >> xiaomi
# >> 没有这个值

a,b = 1,2
a,b = [1,2]
a,b = [1,2],[3,4]
print(a,b)
# >> 1 2
# >> 1 2
# >> [1,2] [3,4]
# 用一行代码把 a b 值交换
a = 1
b = 2
a,b = b,a
print(a,b)
# >> 2 1

# 一一对应,接受值
for k,v in dict.items():
    print(k,v)

 

# 嵌套
dic = {
    'name':['xiaomi','zhangsan','lisi'],
    'jihe':{
        'time':'123',
        'learn_money':19800,
        'leader':'huang'

    },
    'age':18
}
# 改
dic['age'] = 25
print(dic)
#>> {'name': ['xiaomi', 'zhangsan', 'lisi'], 'jihe': {'time': '123', 'learn_money': 19800, 'leader': 'huang'}, 'age': 25}
dic['name'].append('leader')
print(dic)
# >> {'name': ['xiaomi', 'zhangsan', 'lisi', 'leader'], 'jihe': {'time': '123', 'learn_money': 19800, 'leader': 'huang'}, 'age': 25}
dic['name'][1] = dic['name'][1].upper()  # 其中一个值改大写
print(dic)
# 》{'name': ['xiaomi', 'ZHANGSAN', 'lisi', 'leader'], 'jihe': {'time': '123', 'learn_money': 19800, 'leader': 'huang'}, 'age': 25}
dic['jihe']['gou'] = 8
print(dic)
# >> {'name': ['xiaomi', 'ZHANGSAN', 'lisi', 'leader'], 'jihe': {'time': '123', 'learn_money': 19800, 'leader': 'huang', 'gou': 8}, 'age': 25}


# 一道题
f = input('>>>')
for i in f:
    if i.isalpha():
        f = f.replace(i,'')
o = f.split()
print(o)
print(len(str(o)))

  

 

 

  set:集合,用{ } 括起来,集合是无序的,不重复的数据集合,里面的元素是不可变类型

 # is 比较,比较的事内存地址

'''
# 集合:可变的数据类型,它里面的元素必须是不可变得数据类型,无序,不重复,{}
set = {1,'sdfsd',2,3,'hello'}

# add 增加
set.add("name")
print(set)
# >> {1, 2, 3, 'name', 'sdfsd', 'hello'}

# update
set.update('leader')
print(set)
# >> {1, 2, 3, 'hello', 'a', 'd', 'name', 'l', 'r', 'sdfsd', 'e'}

#  pop 删除
set.pop()
print(set.pop())  # 随机删除 有返回值
print(set)
# 》 1
# 》 {2, 3, 'd', 'r', 'l', 'sdfsd', 'hello', 'a', 'e'}

# remove
set.remove(2) # 按元素去删
print(set)
# 》{'sdfsd', 1, 3, 'hello'}

# clear  清除集合
set.clear()
print(set)
# >> set()

# del 删除整个集合
del set
print(set)
# >> <class 'set'>

# 查
for i in set:
    print(i)

# 求交集
set1 = {1,2,3,4,"hello"}
set2 = {1,4,2,5,"world"}

set3 = set1 & set2      # 第一种
print(set3)
# >> {1, 2, 4}
print(set1.intersection(set2))       # 第二种
# 》 {1, 2, 4}

# 求并集
print(set1 | set2)
# 》 {1, 2, 3, 4, 5, 'world', 'hello'}
print(set1.union(set2))
# >> {1, 2, 3, 4, 5, 'world', 'hello'}

# 反差集
print(set1 - set2)
# 》 {'hello', 3}
print(set1.difference(set2))
# >> {3, 'hello'}

# 子集 超集
print(set1 < set2)
print(set1.issubset(set2))   # 这两个相同,若返回True 则set1是set2子集

print(set2 > set1)
print(set2.issuperset(set1))     # 这两个相同,若返回True 则set2是set1超集
'''
# set 本身是可变数据类型,但可以让他变成不可变数据类型,冻住
s = frozenset('barry')
print(s,type(s))
# >>frozenset({'b', 'r', 'a', 'y'}) <class 'frozenset'>


# 一道小题 去重
li = [11,22,33,33,44,55,66,66,77]
set5 = set(li)
print(set5)
li = list(set5)
print(li)

  

 

  complex:复数 

  float:浮点型 ,如:12.20

 

  注:

    type():查看数据类型的方法

    字符串转换成数字:int(str)    ,条件str必须是数值组成

    同样数字转换成字符串:str(int)

    用户交互input输出的全部是 str

 

posted @ 2018-12-20 09:55  钟鼎山林  阅读(777)  评论(0编辑  收藏  举报