Python005

学习总结五

字符串

Python 中最常用的数据类型,可以用引号(‘或”)来创建字符串

字符串运算符

 str = 'abc123456'
 print(str[2])           # []表示下标运算符,取出第二位'c'
 print(str[2:])          # 表示从2取到结尾
 print(str[2::2])        # 表示从第2位取元素,步长为2
 print(str[::2])         # 表示从首位取,步长为2
 print(str[::-1])        # 表示从后向前排序(倒序)
 print(str[2:5])         # 字符串切片操作,取一部分(开始从0数,结束从1数)
 print(str[-1])          # 表示从后取首位
 print(str[-1:-3:-1])    # 第一个-1表示开始,-3表示结束(取不到),最后-1表示方向

字符串内置函数

 str = 'hello, world!'
 print(str.isdigit())    # 检查字符串是否全是数字
 print(str.isalpha())    # 检测字符串是否由字母和数字组成
 print(str.isalnum())    # 检查所有字符是否由字母或者数字组成
 print(len(str1))        # 求字符串长度
 print(str.capitalize()) # 将字符串的第一个字母变成大写,其他字母变小写
 print(str.upper())      # 将字符串中的小写字母转为大写字母
 print(str.find('or'))   # 查找or
 print(str.find('shit'))
 print(str.index('or'))
 print(str.index('shit'))
 print(str.startswith('He'))  # 检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False
 print(str.startswith('hel'))
 print(str1.endswith('!'))  # 判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False
 print(str1.center(50, '*'))  # 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串。默认填充字符为空格
 print(str1.rjust(50, ' '))

练习

练习1

循环播放文字

#import os  表示清屏
import time

def main():
    content = '欢迎来千峰!'
    while True:
        #os.system('cls')
        print(content)
        time.sleep(0.5)
        content = content[1:] + content[0]


if __name__ == '__main__':
    main()
练习2

判断字符串是否由字母和数字组成

def main():
    str2 = 'abc123456'
    print(str2.isalnum())


if __name__ == '__main__':
    main()

列表

1.有了列表容器,我们可以使用一个变量保存多个数据
2.更为重要的是我们可以使用循环对列表中的数据进行操作
3.python内置的排序方法默认都是升序(从小到大),如果希望排降序(从大到小)可以通过reverse参数来指定

def main():
    list1 = [1, 3, 5, 7, 100]
    print(list1)
    list2 = ['hello'] * 5
    print(list2)
    # 计算列表长度(元素个数)
    print(len(list1))
    # 下标(索引)运算
    print(list1[0])
    print(list1[4])
    # print(list1[5])  # IndexError: list index out of range
    print(list1[-1])
    print(list1[-3])
    list1[2] = 300
    print(list1)
    # 添加元素
    list1.append(200)
    list1.insert(1, 400)
    list1 += [1000, 2000]
    print(list1)
    print(len(list1))
    # 删除元素
    list1.remove(3)
    if 1234 in list1:
        list1.remove(1234)
    del list1[0]
    print(list1)
    # 清空列表元素
    list1.clear()
    print(list1)

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


if __name__ == '__main__':
    main()
列表生成式
def main():
    # 用的方括号[]
    # 列表生成表达式语法, 创建列表容器
    # 创建列表之后元素以及准备就绪,所以需要耗费较多的内存空间
    f = list(range(1, 10))
    # 上面这个不常用
    print(f)
    # 下面的是常用的
    f = [x for x in range(1, 10)]
    print(f)
    f = [x ** 2 for x in range(1, 10)]
    print(f)
    f = [x ** x for x in range(1, 10)]
    print(f)

    # 用的圆括号()
    # 列表生成器 得到的不是列表,而是一个生成器对象
    # 通过生成器可以获取数据,不占用额外的内存空间
    # 每次需要数据的时候就通过生成器取出数据,节约空间耗费时间
    f = (x ** x for x in range(1, 10))
    print(f)
    for val in f:
        print(val)

    f = (x ** 2 for x in range(1, 10))
    print(f)
    for val in f:
        print(val)

if __name__ == '__main__':
    main()
练习1

摇色子计出现点数次数

from random import randint

def main():
    # 我们可以使用一个变量保存多个数据
    # 我们可以使用循环对列表中的数据进行操作
    f = [0] * 6
    # 变量f[]表示列表(容器)
    for _ in range (6000):
        face = randint(1, 6)
        f[face - 1] += 1
    print(f)

if __name__ == '__main__':
    main()
练习2
f = [100, 200, 500]
for  index, val in enumerate(f):
    # index表示索引排列序号
    # val表示遍历列表
    print(index, ':', val)



def main():
    f = [100, 200, 500]
    # CRUD操作
    f.append(123)
    print(f)
    f.insert(1, 300)
    print(f)
    if 500 in f:
        f.remove(500)
    # f.clear  # 清空列表
    del f[3]

    print(f)
练习4

菲波拉切数列

def main():
    f = [1, 1]
    print(f)
    for x in range(2, 21):
        x = f[x - 1] + f[x - 2]
        f.append(x)
        print(f)

if __name__ == '__main__':
    main()
练习5

查找列表中的最大值最小值和平均值

def main():
    scores = [95, 78, 62, 99, 45, 32, 80]
    min_score = max_score = scores[0]
    total = 0
    for score in scores:
        if score > max_score:
            max_score = score
        elif score < min_score:
            min_score = score
        total += score
    print('最高分:',max_score)
    print('最低分:',min_score)
    print('平均分:%.2f' % (total / len(scores)))

if __name__ == '__main__':
    main()
练习6

双色球选号

import random

def main():
    n = int(input('投注注数:'))

    red_ball = [x for x in range(1, 34)]
    blue_ball = [x for x in range(1, 17)]

    for _ in range(n):
        f1 = random.sample(red_ball, 6)
        f2 = sorted(f1)
        f3 = random.sample(blue_ball, 1)
        f2.append(f3[0])
        print(f2)       


if __name__ == '__main__':
    main()
练习7

查找列表中第二大的数

def second_max(x):
    # tuple--元组
    (m1, m2) = (x[0], x[1]) if x[0] > x[1] else (x[1], x[0])
    for index in range(2, len(x)):
        if x[index] > m1:
            m2 = m1
            m1 = x[index]
        elif x[index] > m2:
            m2 = x[index]
    return m1, m2


def main():
    my_list = [1, 2, 3, 5, 0, 7]
    print(second_max(my_list))

if __name__ == '__main__':
    main()

元组

元组与列表类似,不同之处在于元组的元素不能修改,在前面的代码中我们已经不止一次使用过元组了。顾名思义,我们把多个元素组合到一起就形成了一个元组,所以它和列表一样可以保存多条数据。下面的代码演示了如何定义和使用元组。

def main():
    # 定义元组
    t = ('骆昊', 38, True, '四川成都')
    print(t)
    # 获取元组中的元素
    print(t[0])
    print(t[3])
    # 遍历元组中的值
    for member in t:
        print(member)
    # 重新给元组赋值
    # t[0] = '王大锤'  # TypeError
    # 变量t重新引用了新的元组原来的元组将被垃圾回收
    t = ('王大锤', 20, True, '云南昆明')
    print(t)
    # 将元组转换成列表
    person = list(t)
    print(person)
    # 列表是可以修改它的元素的
    person[0] = '李小龙'
    person[1] = 25
    print(person)
    # 将列表转换成元组
    fruits_list = ['apple', 'banana', 'orange']
    fruits_tuple = tuple(fruits_list)
    print(fruits_tuple)


if __name__ == '__main__':
    main()

集合

Python中的集合跟数学上的集合是一致的,不允许有重复元素,而且可以进行交集、并集、差集等运算;
集合无下标运算,因为是无序排列的;
集合中不能查找对应序号的元素(find())

def main():
    list1 = [1, 1, 2, 2, 3, 3]
    print(list1)
    tuple1 = (1, 1, 2, 2, 3, 3)
    print(tuple1)
    # 元组
    set1 = {1, 1, 2, 2, 3, 3}
    print(set1)
    # 集合
    set2 = {1, 3, 5, 7, 9}
    print(set2)
    set3 = set1.intersection(set2)  # 交集
    # set3 = set1 & set2  一样表示交集
    print(set3)
    set3 = set1.union(set2)  # 并集
    # set3 = set1 \ set2  同样表示并集
    print(set3) 
    set3 = set1.difference(set2)  #差集
    # set3 = set1 - set2
    print(set3)
    set3 = set2.difference(set1)
    print(set3)
    set3 = set1.symmetric_difference(set2)  #对称差集
    # set3 = set1 
    print(set3)
    print(set2.pop())  #随机选取一个元素
    for val in set2:
        print(val)
    if 3 in set2:
        set2.remove(3)  #查找集合中有无3,移除3


if __name__ == '__main__':
    main()

字典

def main():
    dict1 = {'name': '瞿凯', 'age': '24', 'gender': True}
    print(dict1['name'])
    print(dict1['age'])
    print(dict1['gender'])
    dict1['name'] = '张三'
    dict1.update(heighut=170, fav=['吃', '睡']) # 添加元素
    print(dict1.pop('age')) # 删除,并返回值
    print(dict1.popitem())
    del dict1['gender']  # 删除key
    print(dict1)
    for x in dict1:
        print(x, '--->', dict1[x]) # 遍历的格式
    dict1.setdefault('motto','生活不止眼前的苟且')
    if 'motto' in dict1:
        print(dict1['motto'])
    else:
        print('呵呵')

if __name__ == '__main__':
    main()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值