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函數(shù)計(jì)算字符串的長度
    print(len(words))
    # 獲得字符串首字母大寫
    print(words.title())
    print(words.capitalize())
    # 獲得字符串變大寫
    print(words.upper())
    # 從字符串中查找子串所在位置
    print(words.find('py'))
    print(words.find('11213')) # 不存在展示為-1
    # 與find類似但找不到子串時(shí)會(huì)引發(fā)異常
    # print(str1.index('or'))
    # print(str1.index('shit'))
    # 檢查字符串是否以指定的字符串開頭
    print(words.startswith("h"))
    print(words.startswith("dd"))
    # 檢查字符串是否以指定的字符串結(jié)尾
    print(words.endswith("!"))
    print(words.endswith("ss"))
    # 將字符串以指定的寬度居中并在兩側(cè)填充指定的字符
    print(words.center(100,'#'))
    # 將字符串以指定的寬度靠右放置左側(cè)填充指定的字符
    print(words.rjust(100,'*'))
    # 從字符串中取出指定位置的字符(下標(biāo)運(yùn)算)
    print(words[6])
    # 字符串切片(從指定的開始索引到指定的結(jié)束索引)
    print(words[6:8])
    # 檢查字符串是否由數(shù)字構(gòu)成
    print(words.isdigit())
    # 檢查字符串是否以字母構(gòu)成
    print(words.isalpha())
    # 檢查字符串是否以數(shù)字和字母構(gòu)成
    print(words.isalnum())
    # 獲得字符串修剪左右兩側(cè)空格的拷貝
    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)
    # 計(jì)算列表長度(元素個(gè)數(shù))
    print(len(list_b))
    # 下標(biāo)(索引)運(yùn)算
    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)
    # 循環(huán)遍歷列表元素
    for o in fruits:
        print(o)
    # 列表切片
    print(fruits[2:4])
    fruit3 = fruits  # 沒有復(fù)制列表只創(chuàng)建了新的引用
    print(fruit3)
    print(fruits)
    # 可以通過完整切片操作來復(fù)制列表
    fruit4 = fruits[:]
    print(fruit4)
    fruit5 = fruits[-3:-1]
    print(fruit5)
    # 可以通過反向切片操作來獲得倒轉(zhuǎn)后的列表的拷貝
    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函數(shù)返回列表排序后的拷貝不會(huì)修改傳入的列表
    # 函數(shù)的設(shè)計(jì)就應(yīng)該像sorted函數(shù)一樣盡可能不產(chǎn)生副作用
    test_list3 = sorted(test_list, reverse=True)  # 顛倒翻轉(zhuǎn)列表
    print(test_list3)
    # 通過key關(guān)鍵字參數(shù)指定根據(jù)字符串長度進(jìn)行排序而不是默認(rèn)的字母表順序
    test_list4 = sorted(test_list,key=len)
    print(test_list4)
    # 給列表對(duì)象發(fā)出排序消息直接在列表對(duì)象上進(jìn)行排序
    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)
    # 用列表的生成表達(dá)式語法創(chuàng)建列表容器
    # 用這種語法創(chuàng)建列表之后元素已經(jīng)準(zhǔn)備就緒所以需要耗費(fèi)較多的內(nèi)存空間
    t = [x+(0.1) for x in range(1000)]
    # 查看占用內(nèi)存的字節(jié)數(shù)
    print(sys.getsizeof(t))
    print(t)
    # 請(qǐng)注意下面的代碼創(chuàng)建的不是一個(gè)列表而是一個(gè)生成器對(duì)象
    # 通過生成器可以獲取到數(shù)據(jù)但它不占用額外的空間存儲(chǔ)數(shù)據(jù)
    # 每次需要數(shù)據(jù)的時(shí)候就通過內(nèi)部的運(yùn)算得到數(shù)據(jù)(需要花費(fèi)額外的時(shí)間)
    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 # 返回一個(gè)表達(dá)式

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

"""
"""
操作元組
如果不需要對(duì)元素進(jìn)行添加绽昼、刪除迷雪、修改的時(shí)候漫雷,可以考慮使用元組界酒,當(dāng)然如果一個(gè)方法要返回多個(gè)值蜒程,使用元組也是不錯(cuò)的選擇
"""

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])
    # 將元組轉(zhuǎn)換成列表
    list_t = list(t)
    print(list_t)
    # 列表是可以修改它的元素的
    list_t[0]='大毛'
    print(list_t)
    # 將列表轉(zhuǎn)換成元組
    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) # 集合是不會(huì)出現(xiàn)重復(fù)元素的
    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的元素如果不存在會(huì)引發(fā)KeyError
    set2.remove(8)
    print(set2)
    # set2.remove(80)
    # 遍歷集合容器
    for i in set2:
        print(i)

    # 將元組轉(zhuǎn)換成集合
    set3 = set((1,2,3,4,5,6,7,6,7,0,5,4,))
    print(set3.pop())
    print(set3)
    # 集合的交集、并集纪岁、差集凑队、對(duì)稱差運(yùn)算
    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, '小強(qiáng)': 78, '小紅': 82}
    # 通過鍵可以獲取字典中對(duì)應(yīng)的值
    print(dict_data['小紅'])
    print(dict_data['小強(qiáng)'])
    # 對(duì)字典進(jìn)行遍歷(遍歷的其實(shí)是鍵再通過鍵取對(duì)應(yīng)的值)
    for i in dict_data:
        print("{a}:".format(a=i,b=dict_data[i]))
    # 遍歷key值
    for key in dict_data:
        print(key)
    # 遍歷值
    for v in dict_data.values():
        print(v)
    # 遍歷字典項(xiàng)
    for kv in dict_data.items():
        print(kv)
    # 遍歷鍵值
    for key, value in dict_data.items():
        print(key, value)
    # 更新字典中的元素
    dict_data["小明"] = 90
    dict_data.update(小強(qiáng)=90,小明=00)
    print(dict_data)
    # get方法也是通過鍵獲取對(duì)應(yīng)的值但是可以設(shè)置默認(rèn)值
    print(dict_data.get('小強(qiáng)'))
    # print(dict_data.get("小強(qiáng)",100))
    print(dict_data)
    # 刪除字典中的元素
    print(dict_data.popitem()) # 得到的是元組
    print(dict_data)
    print(dict_data.pop('小強(qiáng)',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 = "人生苦短幔翰,我用Pythond霭薄!"
    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

"""
"""設(shè)計(jì)一個(gè)函數(shù)產(chǎn)生指定長度的驗(yàn)證碼导匣,驗(yàn)證碼由大小寫字母和數(shù)字構(gòu)成"""
import random

def product():
    while True:
        code_len = int(input("請(qǐng)輸入想要的驗(yàn)證碼長度:"))
        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("你的驗(yàn)證碼為:{a}".format(a=code))
            break
        else:
            print("你輸入的驗(yàn)證碼長度過長才菠,請(qǐng)重新輸入")


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

"""

"""設(shè)計(jì)一個(gè)函數(shù)返回傳入的列表中最大和第二大的元素的值"""

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

"""
"""雙色球選號(hào)"""
from random import randrange, randint, sample


def display(balls):
    """
    輸出列表中的雙色球號(hào)碼
    """
    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():
    """
    隨機(jī)選擇一組號(hào)碼
    """
    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循環(huán)也可以寫成下面這行代碼
    # sample函數(shù)是random模塊下的函數(shù)
    # 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('機(jī)選幾注: '))
    for _ in range(n):
        display(random_select())


if __name__ == '__main__':
    # random_select()
    # display(random_select())
    main()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贡定,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子可都,更是在濱河造成了極大的恐慌缓待,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渠牲,死亡現(xiàn)場離奇詭異旋炒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)签杈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門瘫镇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鼎兽,“玉大人,你說我怎么就攤上這事铣除⊙枰В” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵尚粘,是天一觀的道長择卦。 經(jīng)常有香客問我,道長郎嫁,這世上最難降的妖魔是什么秉继? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮泽铛,結(jié)果婚禮上尚辑,老公的妹妹穿的比我還像新娘。我一直安慰自己盔腔,他們只是感情好腌巾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著铲觉,像睡著了一般澈蝙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撵幽,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天灯荧,我揣著相機(jī)與錄音,去河邊找鬼盐杂。 笑死逗载,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的链烈。 我是一名探鬼主播厉斟,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼强衡!你這毒婦竟也來了擦秽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤漩勤,失蹤者是張志新(化名)和其女友劉穎感挥,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體越败,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡触幼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了究飞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片置谦。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡堂鲤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出媒峡,到底是詐尸還是另有隱情瘟栖,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布丝蹭,位于F島的核電站慢宗,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏奔穿。R本人自食惡果不足惜镜沽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望贱田。 院中可真熱鬧缅茉,春花似錦、人聲如沸男摧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耗拓。三九已至拇颅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間乔询,已是汗流浹背樟插。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留竿刁,地道東北人黄锤。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像食拜,于是被迫代替她去往敵國和親鸵熟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 一家人在一起時(shí)负甸,是最美好的時(shí)光流强,知足常樂
    小快樂happy閱讀 164評(píng)論 0 0
  • 燭光何日照九陰 難忘青樓偶遇,輕黛煙眸堪妒惑惶。我試把心敲煮盼,魂顫畏責(zé)驚懼。微蹙带污,微蹙,乍破一簾春欲香到∮慵剑——《如夢(mèng)令?青樓...
    慶州山人閱讀 520評(píng)論 0 0
  • 從機(jī)艙出來报破,被一股熱浪包圍,五官頓時(shí)收縮在一起千绪,不是剛在網(wǎng)絡(luò)上各種來武漢看海的帖子充易,怎么還是這么熱? ...
    白字的路易十六小姐閱讀 179評(píng)論 2 1
  • http://blog.csdn.net/harvic880925/article/details/4271277...
    楷桐閱讀 543評(píng)論 0 1