python基础学习第三天

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础学习第三天相关的知识,希望对你有一定的参考价值。

目录:

3.1 字典

3.1.1 字典增加

3.1.2 查询

3.1.3 修改

3.1.4 删除

3.1.5 fromkeys

3.1.6 排序

3.1.7 遍历

3.2 字符串内置方法

3.3 蹩脚的三级菜单脚本


3.1 字典


字典: 键值对数据类型

字典必须是不可修改的类型,字典,元组 都不可以做为键

字典两大特点: 无序,键唯一


a=[1,2,3]

a=list((1,2,3))


dict()   跟list创建方法是一样的

dic1=[]

dic2=dict()  方法必须带括号   dic2=dict((("name","xiong"),("age",33),))


3.1.1 字典增加

dic1={"name":"xiong"}

dic["age"]=222


# 键存在,不改动,返回字典中相应的键的对应值 

dic1.setdefault("hobby","NNN")


# 键不存在,在字典中增加新的键值对,并返回相应值


3.1.2 查询

dic1 = {"name":"xiong", "age":33,}

print(dic["age"])


# 将所有的键都取出做为一个列表, 类型为dict_keys

dic1.keys() 结果:dict_keys([‘name‘, ‘age‘, ‘1‘])


# 将字典中所有的值都出来

dic1.values() 结果: dict_values([‘xiong‘, 33, ‘test1‘])


# 将字典的键值对都取出来

dic1.items() 结果:dict_items([(‘name‘, ‘xiong‘), (‘age‘, 33), (‘1‘, ‘test1‘)])


xx = list((dic1.keys()))

print(type(xx)) <class ‘list‘>


3.1.3 修改

dic = {"name":"xiong", "age":33,}

dic["age"]=34


dic2 = {‘1‘:‘111‘,‘2‘:‘222‘}

dic.update(dic2) # 跟列表中extend功能一样

结果为 {"name":"xiong", "age":33, ‘1‘:‘111‘, ‘2‘:‘222‘}


3.1.4 删除

del dic1["name"] 结果: 删除name的键值对

del dic1 结果: 删除整个字典


dic1.clear() 结果: 清空字典


dic5.pop("age") 结果: 删除字典中指定键值对,并返回该键值对的值


# 随机删除一个键值对,并以元组方式返回值

dic1.popitem() 


3.1.5 fromkeys

其它操作以及涉及到的方法

dic3=dict.fromkeys(["h1","h2","h3"],"hhh")

print(dic3) 得出结果 {‘h1‘: ‘hhh‘, ‘h2‘: ‘hhh‘, ‘h3‘: ‘hhh‘}


# 将多个值赋值给多个键

dic3=dict.fromkeys(["h1","h2","h3"],["hhh","ggg"])  

print(dic3) 结果:{‘h1‘: [‘hhh‘, ‘ggg‘], ‘h2‘: [‘hhh‘, ‘ggg‘], ‘h3‘: [‘hhh‘, ‘ggg‘]}


字典的嵌套

data = [

{"1",22 },

{"2",33 },

]


3.1.6 排序

# 返回一个有序的包含字典所有key的列表

print(sorted(dic3.items()))

结果: [(‘h1‘, [‘hhh‘, ‘ggg‘]), (‘h2‘, [‘hhh‘, ‘ggg‘]), (‘h3‘, [‘hhh‘, ‘ggg‘])]


3.1.7 遍历

dic1=dict((("name","xiong"),("age",33),))

for i in dic1:

   print(i,dic1[i])


3.2 字符串内置方法:


b = ‘abc1‘

b.count(‘1‘) #统计元素个数 结果 1

b.capitalize() #字符串首字母大写 结果 Abc1

b.center(12,‘-‘) #字符居中并两边打印- 结果 ----abc1----


print(‘abc‘.ljust(50,‘*‘)) 向左对齐

print(‘abc‘.rjust(50,‘*‘)) 向右对齐


print("   xiong   ".strip()) 去除所有空格,换行符也会自动取消  很重要的方法


print( ‘xiong‘.replace(‘x‘,‘X‘,1)) 替换 

#两个参数,(想更改的),(要更改成啥),如有多个字符,1表示只替换一次


b.encode #编码


b.endswith(‘1‘) #以某个字符串结尾 结果 True

b.startswith(‘1‘) #以某个字符串起始 结果 False

b.expandtabs(tabsize=#) # 用得少


b.find(‘1‘) #查找第一个元素,并将索引值返回


print(‘xiong‘.rfind(‘g‘)) #与find功能一样

print(‘xiong‘.find(‘g‘))


两个打印结果都是: 4


b.index(‘1‘) #与find功能一样,多了一个元素没有的时候会报错,find不会报错


b.format #格式化输出的另一种方式

b = ‘abc1 {name} is {age}‘

print(b.format(name=‘xiong‘,age=‘123‘))


b.format_map({‘name‘:‘xiong‘,‘age‘:‘123‘})


print(str.isalnum()) # 判断所有字符都是数字或者字母

print(str.isalpha()) # 判断所有字符都是字母

print(str.isdigit()) # 判断所有字符都是数字 必须是一个整形

print(str.islower()) # 判断所有字符都是小写

print(str.isupper()) # 判断所有字符都是大写

print(str.istitle()) # 判断所有单词都是首字母大写,像标题

print(str.isspace()) # 判断所有字符都是空白字符、\t、\n、\r

# 返回结果不是True 就是 False


print(‘Abc‘,lower()) # 大写变小写 结果abc

print(‘Abc‘,upper()) # 小写变大写 结果ABC

print(‘Abc‘,swapcase()) # 小写变大写,大写变小写    结果 aBC


print (‘My test xiong‘.split(‘ ‘)) 将字符串变为一个列表  

# split(‘ ‘,1)   以什么为分隔符进行分割字符串 [‘My‘, ‘test xiong‘]


print (‘My test xiong‘.rsplit(‘ ‘)) 将字符串变为一个列表  

# rsplit(‘ ‘,1) 从右往左, 只分隔一次   [‘My test‘, ‘xiong‘]


print (‘My test xiong‘.title())    所有字符串 首字母都变成大写  My Test Xiong


join 连接方法   拼接   方法为 ‘‘.join(字符串提供的方法)

a=‘123‘

b=‘abc‘

c=‘‘.join([a,b]) #结果 123abc

c=‘****‘.join([a,b]) #结果 123****abc



3.3 蹩脚的三级菜单脚本

#!/usr/bin/env python
# -*- coding:utf-8 -*-
china = {"河北": {"石家庄": ("井径", "正定"),
                "秦皇岛": ("青龙", "昌黎"),
                "承德": ("平泉", "兴隆"),
                "邢台": ("临城", "内丘", "柏乡", "隆尧", "任县", "南和")},
         "湖北": {"武汉": ("黄陂", "新洲", "武昌", "汉阳"),
                "十堰": ("郧县", "郧西", "竹溪", "房县"),
                "襄樊": ("襄阳", "南漳", "谷城", "保康"),
                "黄冈": ("红安", "罗田", "英山", "浠水")},
         "湖南": {"长沙": ("芙蓉区", "天心区", "岳麓区", "开福区",),
                "株洲": ("天元区", "荷塘区", "芦淞区", "石峰区", "株洲县", "攸县,")}
         }

property_list = list(china.keys())
for v,i in enumerate(property_list,1):
    print(v,i)
stop = False
while  True:
    if stop is True:
        break

    property = input("1、请输入省份对应的序列号:如1,按Q退出: ")

    if property.isdigit():
        property = int(property)

        if property > 0 and property <= len(property_list):
            property = (property_list[property - 1])
            print("您输入的省份是: %s 请选择城市、列表如下: " % property)
            ciry_list = china[property]
            ciry = list(ciry_list.keys())
            for v,u in enumerate(ciry,1):
                print(v,u)

            while True:
                if stop is True:
                    break
                county = input("2、请输入县或区对应的序列号:如1,按Q退出,按A返回上一层: ")

                if county.isdigit():
                    county = int(county)

                    if county > 0 and county <= len(ciry):
                        county = ciry[county - 1 ]
                        print (county)
                    else:
                            print("无此选项")

                else:
                    if county == ‘q‘:
                        stop = True
                        print("退出脚本.")
                    elif county == ‘a‘:
                        print("回到上层,请选择省份 %s" % property_list )
                        break
                    else:
                        print("无此选项")
    else:
        if property == ‘q‘:
            print("退出脚本.")
            stop = True
        else:
            print("无此选项")

操作如下:

1 河北
2 湖北
3 湖南
1、请输入省份对应的序列号:如1,按Q退出: 1
您输入的省份是: 河北 请选择城市、列表如下: 
1 石家庄
2 秦皇岛
3 承德
4 邢台
2、请输入县或区对应的序列号:如1,按Q退出,按A返回上一层: q
退出脚本.
1 河北
2 湖北
3 湖南
1、请输入省份对应的序列号:如1,按Q退出: 1
您输入的省份是: 河北 请选择城市、列表如下: 
1 石家庄
2 秦皇岛
3 承德
4 邢台
2、请输入县或区对应的序列号:如1,按Q退出,按A返回上一层: 2
秦皇岛
2、请输入县或区对应的序列号:如1,按Q退出,按A返回上一层: a
回到上层,请选择省份 [‘河北‘, ‘湖北‘, ‘湖南‘]
1、请输入省份对应的序列号:如1,按Q退出: 2
您输入的省份是: 湖北 请选择城市、列表如下: 
1 武汉
2 十堰
3 襄樊
4 黄冈
2、请输入县或区对应的序列号:如1,按Q退出,按A返回上一层: q
退出脚本.


本文出自 “xiong” 博客,请务必保留此出处http://xiong51.blog.51cto.com/5239058/1963608

以上是关于python基础学习第三天的主要内容,如果未能解决你的问题,请参考以下文章

Python学习第三天----Linux基础命令

python练习第三天

Python 学习第三天--GUI桌面项目

python基础自学 第三天

2018-10-11学习python第三天

Python学习第三天(面向对象编程)01