基本数据类型

类型转换

纯数字的字符串转成int

res=int('100111')
print(res,type(res))

float类型转换

res=float("3.1")
print(res,type(res))

字符串类型转换

str可以把任意其他类型都转成字符串

res=str({'a':1})
print(res,type(res))

使用:内置方法

按索引取值(正向取+反向取) :只能取

msg='hello world'
正向取
print(msg[0])
print(msg[5])
反向取
print(msg[-1])

只能取
msg[0]='H'

切片:索引的拓展应用,从一个大字符串中拷贝出一个子字符串

msg='hello world'
顾头不顾尾
res=msg[0:5] #x
print(res)
print(msg)
步长
res=msg[0:5:2] # 0 2 4
print(res) # hlo
反向步长(了解)
res=msg[5:0:-1]
print(res) #" olle"
msg='hello world'
res=msg[:] # res=msg[0:11]
print(res)
res=msg[::-1] # 把字符串倒过来
print(res)

长度len

msg='hello world'
print(len(msg))

成员运算in和not in

判断一个子字符串是否存在于一个大字符串中

print("alex" in "alex is sb")
print("alex" not in "alex is sb")
print(not "alex" in "alex is sb") # 不推荐使用

移除字符串左右两侧的符号strip

默认去掉的空格

msg='      egon      '
res=msg.strip()
print(msg) # 不会改变原值
print(res) # 是产生了新值

默认去掉的空格

msg='****egon****'
print(msg.strip('*'))

strip只取两边,不去中间

# msg='****e*****gon****'
# print(msg.strip('*'))

切分split:把一个字符串按照某种分隔符进行切分,得到一个列表

默认分隔符是空格

info='egon 18 male'
res=info.split()
print(res)

指定分隔符

info='egon:18:male'
res=info.split(':',1)
print(res)

strip,lstrip,rstrip

print(msg.strip('*'))
print(msg.lstrip('*'))
print(msg.rstrip('*'))

lower,upper

msg='AbbbCCCC'
print(msg.lower())
print(msg.upper())

startswith,endswith

print("alex is sb".startswith("alex"))
print("alex is sb".endswith('sb'))

split,rsplit:将字符串切成列表

info="egon:18:male"
print(info.split(':',1)) # ["egon","18:male"]
print(info.rsplit(':',1)) # ["egon:18","male"]

join: 把列表拼接成字符串

print(res)l=['egon', '18', 'male']
res=l[0]+":"+l[1]+":"+l[2]
res=":".join(l) # 按照某个分隔符号,把元素全为字符串的列表拼接成一个大字符串
print(res)

replace

msg="you can you up no can no bb"
print(msg.replace("you","YOU",))
print(msg.replace("you","YOU",1))

isdigit

判断字符串是否由纯数字组成

print('123'.isdigit())
print('12.3'.isdigit())

字符串了解内容

find rfind 返回的是找到第一个字符串的索引 找不到会返回-1

msg='tony say hello'
print(msg.find('n'))

index rindex 返回的是找到第一个字符串的索引 找不到会报错

msg='tony say hello'
print(msg.index('a',2,9))

count 统计字符在字符串中出现的位置

msg='tony say helloooooooo'
print(msg.count('o',1,6))

capatalize 首字母大写

msg='hello everyone nice to meet you'
print(msg.capitalize())

swapace 大小写翻转

msg='Hi girl,I want make friends with you!'
print(msg.swapcase())

title 每个单词首字母大写

msg='dear my friend i miss you very much'
print(msg.title())

添加

append 往列表尾部追加元素

l=[11,22,31]
l.append(2222)
print(l)

**extend 一次性往列表尾部添加多个元素 只能添加列表元素 **

l=[111,22,33,2]
l.extend([1111,22222,555])
print(l)

insert 在指定位置插入值

l=[11,222,34,4]
l.insert(1,'qqq')
print(l)

删除

1. del 通用删除 没有返回值

l=[111,222,3333]
del l[1]
print(l)

2.pop 默认删除列表最后一个元素,并将删除的值返回,括号内可以按照索引值来删除元素*

l=[1111,22,3,4,2]
# l.pop()
l.pop(2)
print(l)

3.remove 括号内填写要删除的元素,返回值为None

l=[111,222,34,5]
res=l.remove(222)
print(res,l)

**sort 给列表内的元素排序 按照升序排列 排序必须是同类型的元素,否则报错
默认升序排序 **

l=[111,333,4,2,1]
l.sort()
print(l)

reverse 把列表翻转过来

l=[122,1,3333,2,4]
l.reverse()
print(l)

is数字系列

在python3中

num1=b'4' #bytes
num2=u'4' #unicode,python3中无需加u就是unicode
num3='四' #中文数字
num4='Ⅳ' #罗马数字

isdigt:bytes,unicode

print(num1.isdigit()) #True
print(num2.isdigit()) #True
print(num3.isdigit()) #False
print(num4.isdigit()) #False

isdecimal:uncicode

#bytes类型无isdecimal方法
print(num2.isdecimal()) #True
print(num3.isdecimal()) #False
print(num4.isdecimal()) #False

isnumberic:unicode,中文数字,罗马数字

#bytes类型无isnumberic方法
print(num2.isnumeric()) #True
print(num3.isnumeric()) #True
print(num4.isnumeric()) #True

**三者不能判断浮点数

num5='4.3'
print(num5.isdigit())
print(num5.isdecimal())
print(num5.isnumeric())

总结:
最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景
如果要判断中文数字或罗马数字,则需要用到isnumeric

is其他

print('===>')
name='egon123'
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成
print(name.isidentifier())
print(name.islower())
print(name.isupper())
print(name.isspace())
print(name.istitle())

元组

元组与列表相似,可以存放多种类型的值,但是元组不能修改元素 属于不可变类型 单纯用于取

定义

在()内用逗号分隔开多个任意类型的值

l=(1,2,3,4)

类型转换

print(tuple('casd'))

字典

类型转换

1.
info=dict([['name','tom'],('age',18)])
print(info)

2.fromkeys会从元组中取出每个值当做key,然后与None组成key:value放到字典中
dic={}.fromkeys(('name','age','sex'),None)
print(dic)

使用

1.对于赋值操作,如果key原先不存在于字典,则会新增key:value

info={'name':'egon','age':18}
info['sex']='male'
print(info)

2.对于赋值操作,如果key原先存在于字典,则会修改对应value的值

info={'name':'egon','age':'18'}
info['name']='tank'
print(info)

删除
1.pop 通过字典key来删除字典的键值对

info={'name':'egon','age':18}
info.pop('age')
print(info)

键keys() 值valus() 键值对items()

info={'name':'egon','age':18}

获取key

res=info.keys()
print(res)

获取 valuse

res=info.values()
print(res)

获取 字典所有键值对

print(info.items())

集合

集合、list、tuple、dict一样都可以存放多个值,但是集合主要用于:去重、关系运算

定义

在{}内用逗号分隔开多个元素,集合具备以下三个特点:
1、每个元素必须是不可变类型
2、集合内没有重复的元素
3、集合内元素无序

s={1,2} # s=set({1,2})
s={1,[1,2]} # 集合内元素必须为不可变类型
s={1,'a','z','b',4,7} # 集合内元素无序
s={1,1,1,1,1,1,'a','b'} # 集合内元素没有重复
print(s)
s={} # 默认是空字典
print(type(s))
定义空集合
s=set()
print(s,type(s))

类型转换

set({1,2,3})
res=set('hellolllll')
print(res)
print(set([1,1,1,1,1,1]))
print(set([1,1,1,1,1,1,[11,222]]) # 报错
print(set({'k1':1,'k2':2}))

内置方法

取交集:两者共同的好友

friends1 = {"zero","kevin","jason","egon"}
friends2 = {"Jy","ricky","jason","egon"}
res=friends1 & friends2
print(res)
print(friends1.intersection(friends2))

取并集/合集:两者所有的好友

取并集/合集:两者所有的好友

friends1 = {"zero","kevin","jason","egon"}
friends2 = {"Jy","ricky","jason","egon"}
res=friends1 & friends2
print(friends1 | friends2)
print(friends1.union(friends2))

###取差集:取friends1独有的好友

friends1 = {"zero","kevin","jason","egon"}
friends2 = {"Jy","ricky","jason","egon"}
print(friends1 - friends2)
print(friends1.difference(friends2))

取friends2独有的好友

friends1 = {"zero","kevin","jason","egon"}
friends2 = {"Jy","ricky","jason","egon"}
print(friends2 - friends1)
print(friends2.difference(friends1))

###对称差集: 求两个用户独有的好友们

friends1 = {"zero","kevin","jason","egon"}
friends2 = {"Jy","ricky","jason","egon"}
print(friends1 ^ friends2)
print(friends1.symmetric_difference(friends2))

###父子集:包含的关系

s1={1,2,3}
s2={1,2,4}
print(s1 > s2)
print(s1 < s2)

##去重
只能针对不可变类型去重

print(set([1,1,1,1,2]))

无法保证原来的顺序

l=[1,'a','b','z',1,1,1,2]
l=list(set(l))
print(l)

###长度

s={'a','b','c'}
len(s)

###成员运算

'c' in s

##其他内置方法
###需要掌握的内置方法1:discard

s.discard(4) # 删除元素不存在do nothing
print(s)
s.remove(4)# 删除元素不存在则报错

###需要掌握的内置方法2:update

s.update({1,3,5})
print(s)

###需要掌握的内置方法3:pop

res=s.pop()
print(res)

###需要掌握的内置方法4:add

s.add(4)
print(s)

作业

name=' aleX'

  1. 移除 name 变量对应的值两边的空格,并输出处 理结果
    new_name=name.strip()
    print(new_name)
  2. 判断 name 变量对应的值是否以 "al" 开头,并输出结果
    name1=name.startswith('al')
    print(name1)
  3. 判断 name 变量对应的值是否以 "X" 结尾,并输出结果
    print(name.startswith('X'))
  4. 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
    print(name.replace('l','p'))
  5. 将 name 变量对应的值根据 “l” 分割,并输出结果。
    print(name.rsplit('l'))
  6. 将 name 变量对应的值变大写,并输出结果
    print(name.upper())
  7. 将 name 变量对应的值变小写,并输出结果
    print(name.lower())
  8. 请输出 name 变量对应的值的第 2 个字符?
    print(name[1])
  9. 请输出 name 变量对应的值的前 3 个字符?
    print(name[:3])
  10. 请输出 name 变量对应的值的后 2 个字符?
    print(name[-2:])
  11. 请输出 name 变量对应的值中 “e” 所在索引位置?
    print(name.index('e'))
  12. 获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。
    print(name[:-1])

7.13 作业

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

name=info[0]
age=info[1]
year=info[2][0]
mon=info[2][1]
day=info[2][2]

2、用列表的insert与pop方法模拟从列表的一端存值,然后从另外一端取值

l=[]
l.insert(0,'abc')
l.pop()

3. 用列表的insert与pop方法模拟从列表的一端存值,然后从另外一端取值

l=[]
l.insert(-1,'bbb')
l.pop(0)

4、简单购物车,要求如下:
实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数以三元组形式加入购物列表,如果输入为空或其他非法输入则要求用户重新输入  
msg_dic={
'apple':10,
'tesla':100000,
'mac':3000,
'lenovo':30000,
'chicken':10,
}

msg_dic={
'apple':10,
'tesla':100000,
'mac':3000,
'lenovo':30000,
'chicken':10,
}
tag=True
l=[]
su=0
pic=0
while tag:
    for x,y in msg_dic.items():
        print('商品名:{name}&&价格:{price}'.format(name=x,price=y))
    chioce=input('请输入你要购买的商品名:').strip()
    if chioce in msg_dic:
        count=input('请输入你要买的商品的数量:').strip()
        count=int(count)
        pic=int(msg_dic[chioce])*count
        cmd=input("是否继续购物,如果是请输入’Y',否则按任意键退出。请输入指令》》:")
        if cmd=='y' or cmd=='Y':
            print('欢迎继续购物!')
        else:
            print('欢迎下次光临!')
            tag=False
    else:
        print('请输入正确的商品名!')
        continue
    if  pic not in msg_dic and count not in msg_dic:
        l.append((msg_dic[chioce],count,pic))
        su+=pic
print('消费明细如下:{}'.format(l))
print('共消费:{}'.format(su))

5、有如下值集合 l=[11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中
即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}

l=[11,22,33,44,55,66,77,88,99,90]
dic={'k1':[],'k2':[]}
for x in l:
    if x>66:
        dic['k1'].append(x)
    else:
        dic['k2'].append(x)
print(dic)

6、统计s='hello alex alex say hello sb sb'中每个单词的个数

s='hello alex alex say hello sb sb'
d={}
s=s.split(' ')
for x in s :
    if  x not in d:
        d[x]=s.count(x)
print(d)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352