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

推荐阅读更多精彩内容

  • 一家人在一起时,是最美好的时光,知足常乐
    小快乐happy阅读 162评论 0 0
  • 烛光何日照九阴 难忘青楼偶遇,轻黛烟眸堪妒。我试把心敲,魂颤畏责惊惧。微蹙,微蹙,乍破一帘春欲。——《如梦令•青楼...
    庆州山人阅读 520评论 0 0
  • 从机舱出来,被一股热浪包围,五官顿时收缩在一起,不是刚在网络上各种来武汉看海的帖子,怎么还是这么热? ...
    白字的路易十六小姐阅读 179评论 2 1
  • http://blog.csdn.net/harvic880925/article/details/4271277...
    楷桐阅读 543评论 0 1