Python从新手到大师——07:操作字符串

代码一

#! /usr/bin/env python
"""
@Time     : 2018/8/22 14:38
@Author   : Damao
@Site     : Life is short. I use python.
@File     : test1.py
@Software : PyCharm

"""
import time


def play():
    str = '我爱你,亲爱的姑娘! '
    while 1:
        print(str)
        time.sleep(0.2)
        str = str[1:] + str[0:1]


if __name__ == "__main__":
    play()

代码二

#! /usr/bin/env python
"""
@Time     : 2018/8/22 16:00
@Author   : Damao
@Site     : Life is short. I use python.
@File     : test2.py
@Software : PyCharm

"""
"""操作字符串"""

def test():
    words = 'holle python!'
    # 通过len函数计算字符串的长度
    print(len(words))
    # 获得字符串首字母大写
    print(words.title())
    print(words.capitalize())
    # 获得字符串变大写
    print(words.upper())
    # 从字符串中查找子串所在位置
    print(words.find('py'))
    print(words.find('11213')) # 不存在展示为-1
    # 与find类似但找不到子串时会引发异常
    # print(str1.index('or'))
    # print(str1.index('shit'))
    # 检查字符串是否以指定的字符串开头
    print(words.startswith("h"))
    print(words.startswith("dd"))
    # 检查字符串是否以指定的字符串结尾
    print(words.endswith("!"))
    print(words.endswith("ss"))
    # 将字符串以指定的宽度居中并在两侧填充指定的字符
    print(words.center(100,'#'))
    # 将字符串以指定的宽度靠右放置左侧填充指定的字符
    print(words.rjust(100,'*'))
    # 从字符串中取出指定位置的字符(下标运算)
    print(words[6])
    # 字符串切片(从指定的开始索引到指定的结束索引)
    print(words[6:8])
    # 检查字符串是否由数字构成
    print(words.isdigit())
    # 检查字符串是否以字母构成
    print(words.isalpha())
    # 检查字符串是否以数字和字母构成
    print(words.isalnum())
    # 获得字符串修剪左右两侧空格的拷贝
    words1 = '  [email protected] '
    print(words1.strip())

if __name__ == '__main__':
    test()

代码三

#! /usr/bin/env python
"""
@Time     : 2018/8/22 16:20
@Author   : Damao
@Site     : Life is short. I use python.
@File     : test3.py
@Software : PyCharm

"""
import sys

"""操作列表"""
def test():
    list_a =[1,'a','holle',1213,2]
    print(list_a)
    list_b = ["python"] * 10
    print(list_b)
    # 计算列表长度(元素个数)
    print(len(list_b))
    # 下标(索引)运算
    print(list_a[0])
    print(list_a[4])
    # print(list_a[10])
    # 添加元素
    list_a.append(111)
    print(list_a)
    list_a.insert(0,888)
    print(list_a)
    list_a += (100,1000)
    print(list_a)
    print(len(list_a))
    # 删除元素
    list_a.remove(100)
    print(list_a)
    del list_a[1]
    print(list_a)
    # 清空列表元素
    list_b.clear()
    print(list_b)

def test2():
    fruits = ['grape', 'apple', 'strawberry', 'waxberry']
    fruits += ['pitaya', 'pear', 'mango']
    print(fruits)
    # 循环遍历列表元素
    for o in fruits:
        print(o)
    # 列表切片
    print(fruits[2:4])
    fruit3 = fruits  # 没有复制列表只创建了新的引用
    print(fruit3)
    print(fruits)
    # 可以通过完整切片操作来复制列表
    fruit4 = fruits[:]
    print(fruit4)
    fruit5 = fruits[-3:-1]
    print(fruit5)
    # 可以通过反向切片操作来获得倒转后的列表的拷贝
    fruit6 = fruits[::-1]
    print(fruit6)

def test3():
    test_list = ['orange', 'apple', 'zoo', 'internationalization', 'blueberry']
    test_list2 = sorted(test_list)
    print(test_list2)
    print(test_list)
    # sorted函数返回列表排序后的拷贝不会修改传入的列表
    # 函数的设计就应该像sorted函数一样尽可能不产生副作用
    test_list3 = sorted(test_list, reverse=True)  # 颠倒翻转列表
    print(test_list3)
    # 通过key关键字参数指定根据字符串长度进行排序而不是默认的字母表顺序
    test_list4 = sorted(test_list,key=len)
    print(test_list4)
    # 给列表对象发出排序消息直接在列表对象上进行排序
    test_list.sort(reverse=True)
    print(test_list)

def test4():
    l = [x for x in range(10)]
    print(l)
    l = [x+y for x in 'QEQWEWQE' for y in "121321321321"]
    print(l)
    # 用列表的生成表达式语法创建列表容器
    # 用这种语法创建列表之后元素已经准备就绪所以需要耗费较多的内存空间
    t = [x+(0.1) for x in range(1000)]
    # 查看占用内存的字节数
    print(sys.getsizeof(t))
    print(t)
    # 请注意下面的代码创建的不是一个列表而是一个生成器对象
    # 通过生成器可以获取到数据但它不占用额外的空间存储数据
    # 每次需要数据的时候就通过内部的运算得到数据(需要花费额外的时间)
    t =(x+1 for x in range(1000))
    print(sys.getsizeof(t))
    print(t)
    for a in t:
        print(a)

def create_data(n):
    a ,b = 0 ,1
    for _ in range(n):
        a , b = b , a+b
        yield a # 返回一个表达式

def run():
    for a in create_data(20):
        print(a)


if __name__ == '__main__':
    # test()
    # test2()
    # test3()
    # test4()
    run()

代码四

#! /usr/bin/env python
"""
@Time     : 2018/8/22 17:36
@Author   : Damao
@Site     : Life is short. I use python.
@File     : test4.py
@Software : PyCharm

"""
"""
操作元组
如果不需要对元素进行添加、删除、修改的时候,可以考虑使用元组,当然如果一个方法要返回多个值,使用元组也是不错的选择
"""

def opt_tuple():
    # 定义元组
    t = ("damao",28,178,"male")
    print(t)
    # 获取元组中的元素
    print(t[0])
    print(t[3])
    # 遍历元组中的值
    for i in t:
        print(i)
    # 重新给元组赋值
    # t[0] = '王大锤'  # TypeError
    # 变量t重新引用了新的元组原来的元组将被垃圾回收
    t = ("小明",2,0.5,'male')
    print(t[0])
    # 将元组转换成列表
    list_t = list(t)
    print(list_t)
    # 列表是可以修改它的元素的
    list_t[0]='大毛'
    print(list_t)
    # 将列表转换成元组
    fruits_list = ['apple', 'banana', 'orange']
    fruits_tuple = tuple(fruits_list)
    print(fruits_tuple)
    print(type(fruits_tuple))


if __name__ == '__main__':
    opt_tuple()

代码五

#! /usr/bin/env python
"""
@Time     : 2018/8/22 17:55
@Author   : Damao
@Site     : Life is short. I use python.
@File     : test5.py
@Software : PyCharm

"""
"""使用集合"""

def aggregate():
    set1 = {1, 2, 3, 3, 3, 2}
    print(set1) # 集合是不会出现重复元素的
    print(len(set1)) # 打印过滤后集合的长度
    set2 = set(range(20))
    print(set2)
    # 增加集合元素
    set1.add(4)
    set1.add(5)
    print(set1)
    set2.update([21,22])
    print(set2)
    set2.add(11)
    print(set2)
    # 删除集合元素
    set2.discard(19)
    print(set2)
    # remove的元素如果不存在会引发KeyError
    set2.remove(8)
    print(set2)
    # set2.remove(80)
    # 遍历集合容器
    for i in set2:
        print(i)

    # 将元组转换成集合
    set3 = set((1,2,3,4,5,6,7,6,7,0,5,4,))
    print(set3.pop())
    print(set3)
    # 集合的交集、并集、差集、对称差运算
    print(set1 & set2)
    # print(set1.intersection(set2))
    print(set1 | set2)
    # print(set1.union(set2))
    print(set2 - set1)
    # print(set1.difference(set2))
    print(set1 ^ set2)
    # print(set1.symmetric_difference(set2))
    # 判断子集和超集
    print(set1 <= set2)
    # print(set2.issubset(set1))
    print(set3 <= set1)
    # print(set3.issubset(set1))
    print(set1 >= set2)
    # print(set1.issuperset(set2))
    print(set1 >= set3)
    # print(set1.issuperset(set3))


if __name__ == '__main__':
    aggregate()

代码六

#! /usr/bin/env python
"""
@Time     : 2018/8/22 18:19
@Author   : Damao
@Site     : Life is short. I use python.
@File     : test6.py
@Software : PyCharm

"""
"""操作字典"""

def ops_dict():
    dict_data = {'小明': 95, '小强': 78, '小红': 82}
    # 通过键可以获取字典中对应的值
    print(dict_data['小红'])
    print(dict_data['小强'])
    # 对字典进行遍历(遍历的其实是键再通过键取对应的值)
    for i in dict_data:
        print("{a}:{b}".format(a=i,b=dict_data[i]))
    # 遍历key值
    for key in dict_data:
        print(key)
    # 遍历值
    for v in dict_data.values():
        print(v)
    # 遍历字典项
    for kv in dict_data.items():
        print(kv)
    # 遍历键值
    for key, value in dict_data.items():
        print(key, value)
    # 更新字典中的元素
    dict_data["小明"] = 90
    dict_data.update(小强=90,小明=00)
    print(dict_data)
    # get方法也是通过键获取对应的值但是可以设置默认值
    print(dict_data.get('小强'))
    # print(dict_data.get("小强",100))
    print(dict_data)
    # 删除字典中的元素
    print(dict_data.popitem()) # 得到的是元组
    print(dict_data)
    print(dict_data.pop('小强',90)) # 得到的是value
    print(dict_data)
    # 清空字典
    dict_data.clear()
    print(dict_data)

if __name__ == '__main__':
    ops_dict()

代码七

#! /usr/bin/env python
"""
@Time     : 2018/8/22 21:54
@Author   : Damao
@Site     : Life is short. I use python.
@File     : test7.py
@Software : PyCharm

"""
"""在屏幕上显示跑马灯文字"""
import os
import time


def func():
    words = "人生苦短,我用Python!!"
    while True:
        # 清除屏幕上的显示
        os.system("cls")
        print(words)
        # 等待200毫秒
        time.sleep(0.2)
        words = words[1:] + words[0]


if __name__ == '__main__':
    func()

代码八

#! /usr/bin/env python
"""
@Time     : 2018/8/22 22:21
@Author   : Damao
@Site     : Life is short. I use python.
@File     : test8.py
@Software : PyCharm

"""
"""设计一个函数产生指定长度的验证码,验证码由大小写字母和数字构成"""
import random

def product():
    while True:
        code_len = int(input("请输入想要的验证码长度:"))
        all_code = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
        all_code_len = len(all_code) - 1
        if code_len < all_code_len:
            code = ''
            for _ in range(code_len):
                index = random.randint(0,all_code_len)
                code += all_code[index]
            print("你的验证码为:{a}".format(a=code))
            break
        else:
            print("你输入的验证码长度过长,请重新输入")


if __name__ == '__main__':
    product()

代码九

#! /usr/bin/env python
"""
@Time     : 2018/8/22 22:45
@Author   : Damao
@Site     : Life is short. I use python.
@File     : test9.py
@Software : PyCharm

"""

"""设计一个函数返回传入的列表中最大和第二大的元素的值"""

def max_2_values():
    list_test = [1,321,12,2,21,1,2,1]
    list_test.sort()
    print(list_test)
    print("最大值是:", list_test[len(list_test)-1])
    print("最小值是:",list_test[0])


if __name__ == '__main__':
    max_2_values()

代码十

#! /usr/bin/env python
"""
@Time     : 2018/8/22 23:18
@Author   : Damao
@Site     : Life is short. I use python.
@File     : test10.py
@Software : PyCharm

"""
"""双色球选号"""
from random import randrange, randint, sample


def display(balls):
    """
    输出列表中的双色球号码
    """
    for index, ball in enumerate(balls): # enumerate 枚举、列举
        # print(len(balls))
        if index == len(balls) - 1:
            print('|', end=' ')
        print('%02d' % ball, end=' ')
    print()


def random_select():
    """
    随机选择一组号码
    """
    red_balls = [x for x in range(1, 34)]
    selected_balls = []
    for _ in range(6):
        index = randrange(len(red_balls))
        selected_balls.append(red_balls[index])
        del red_balls[index]
    # print(selected_balls)
    # 上面的for循环也可以写成下面这行代码
    # sample函数是random模块下的函数
    # selected_balls = sample(red_balls, 6) # 快捷写法
    selected_balls.sort()
    # print(selected_balls)
    selected_balls.append(randint(1, 16))
    # print(selected_balls)
    return selected_balls


def main():
    n = int(input('机选几注: '))
    for _ in range(n):
        display(random_select())


if __name__ == '__main__':
    # random_select()
    # display(random_select())
    main()

你可能感兴趣的:(Python从新手到大师——07:操作字符串)