Python学习篇4

生成9*9乘法表

在这里插入图片描述

#生成9*9乘法表
for i in range(1,10):
    for j in range(1,10):
        print("%d*%d=%d"%(i,j,i*j),end="\t")
    print()
row = 1
while row<=9:
    col =1
    while col<=row:
        print("%d*%d=%d\t"%(col,row,col*row),end="")  #\t是制表符,保留有4个空格
        col+=1
    print("")
    row+=1

字符串操作函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

s1 = 'hello ' * 3
print(s1) #输出: hello hello hello 
s2 = 'world'
s1 += s2
print(s1) #输出: hello hello hello world
print('ll' in s1) #输出: True
print('good' in s1) #输出: False

1字符串切片

str2 = 'abc123456'
#从字符串中取出指定位置的字符(下标运算)
print(str2[2]) #输出: c
#字符串切片(从指定的开始索引到指定的结束索引)
print(str2[2:5]) #输出: c12
print(str2[2:]) #输出: c123456
print(str2[2::2]) #输出: c246
print(str2[::2]) #输出: ac246
print(str2[::-1]) #输出: 654321cba
print(str2[-3:-1]) #输出: 45
#检查字符串是否由数字构成
print(str2.isdigit())  #输出: False
#检查字符串是否以字母构成
print(str2.isalpha())  #输出: False
#检查字符串是否以数字和字母构成
print(str2.isalnum())  #输出: True

2字符串函数

str1 = 'hello, world!'
#w在字符串中出现的次数
num = str1.count("w")
print(num) #输出:1
#通过内置函数len计算字符串的长度
print(len(str1)) #输出: 13
#获得字符串首字母大写的拷贝
print(str1.capitalize()) #输出: Hello, world!
#获得字符串每个单词首字母大写的拷贝
print(str1.title()) #输出: Hello, World!
#全部转换为小写
print(str1.lower())  #输出:hello, world!
#获得字符串变大写后的拷贝
print(str1.upper())   #输出: HELLO, WORLD!
#从字符串中查找子串所在位置
print(str1.find('or')) #输出: 8
print(str1.find('shit')) #输出: -1
#与find类似但找不到子串时会引发异常
print(str1.index('or')) #输出: print(str1.index('shit'))
#检查字符串是否以指定的字符串开头
print(str1.startswith('He')) #输出: False
print(str1.startswith('hel')) #输出: True
#检查字符串是否以指定的字符串结尾
print(str1.endswith('!')) #输出: True
#将字符串以指定的宽度居中并在两侧填充指定的字符
print(str1.center(50, '*')) #输出:******************hello, world!*******************
#将字符串以指定的宽度靠右放置左侧填充指定的字符 
print(str1.rjust(50, ' ')) #输出:                                     hello, world!
#","分割abc
print(",".join("abc")) #输出: a,b,c
#":"分割abc
print(":".join(["a","b","c"])) #输出: a:b:c
str3 = '  jackfrued@126.com '
print(str3)
#获得字符串修剪左右两侧空格之后的拷贝
print(str3.strip())
#用"@"进行拆分成一list
print(str3.split("@")) #输出:['  jackfrued', '126.com ']
#替换replace,将com替换为cn
print(str3.replace("com","cn")) #输出:jackfrued@126.cn
#str3是否包含com
print(str3.__contains__("com")) #输出:True

3正则表达式

#导入正则表达式功能块
import re
#找到字符串中匹配的数字,以列表的形式返回
#前面填写的是正则表达
#匹配数字
print(re.findall("\d","nihao123Tianxia")) #输出:['1', '2', '3']

#匹配a-z的字符串
print(re.findall("[a-z]","nihao123Tianxia")) #输出:['n', 'i', 'h', 'a', 'o', 'i', 'a', 'n', 'x', 'i', 'a']

#匹配字符串m
print(re.findall("m","nihao123Tianxia")) #输出:[]

#输出0-9的数字
print(re.findall("[0-9]","nihao123Tianxia")) #输出:['1', '2', '3']

#输出小写的a-z和大写的A-Z
print(re.findall("[a-zA-z]","nihao123Tianxia")) #输出:['n', 'i', 'h', 'a', 'o', 'T', 'i', 'a', 'n', 'x', 'i', 'a']

#输出除了0-9以外的
print(re.findall("[^0-9]","nihao123Tianxia"))#输出:['n', 'i', 'h', 'a', 'o', 'T', 'i', 'a', 'n', 'x', 'i', 'a']

#输出x开头z结尾,中间是c或w
print(re.findall("x[cw]z","xyz,xcz,xwz")) #输出:['xcz', 'xwz']

#输出x开头z结尾,中间不是c或w
print(re.findall("x[^cw]z","xyz,xcz,xwz")) #输出:['xyz']

#显示所有的非数字
print(re.findall("\D","nihao123Tianxia")) #输出:['n', 'i', 'h', 'a', 'o', 'T', 'i', 'a', 'n', 'x', 'i', 'a']

#显示所有的特殊字符(\n \t $ 空格都是特殊字符,但下划线不是特殊字符)
print(re.findall("\W","nihao123\nTian\txia")) #输出:['\n', '\t']

#显示所有的非特殊字符(\n \t $,空格都是特殊字符,但下划线不是特殊字符)
print(re.findall("\w","nihao123\nTian\txia")) #输出:['n', 'i', 'h', 'a', 'o', '1', '2', '3', 'T', 'i', 'a', 'n', 'x', 'i', 'a']

#显示所有的制表符(\n \t $,空格都是特殊字符,但下划线不是特殊字符)
print(re.findall("\s","nihao123\nTian\txia")) #输出:['\n', '\t']

#显示所有的非制表符(\n \t $,空格都是特殊字符,但下划线不是特殊字符)
print(re.findall("\S","nihao123\nTian\txia")) #输出:['n', 'i', 'h', 'a', 'o', '1', '2', '3', 'T', 'i', 'a', 'n', 'x', 'i', 'a']

#输出小写a-z和大写A-Z之间字符串长度最短是3个字符,最长是5个字符的字符串
print(re.findall("[a-zA-Z]{3,5}","EXCEL 12345world789ppt87lr")) #输出:['EXCEL', 'world', 'ppt']

#输出小写a-z和大写A-Z之间字符串长度只找2个字符长度的字符串
print(re.findall("[a-zA-Z]{2}","EXCEL 12345world789ppt87lr")) #输出:['EX', 'CE', 'wo', 'rl', 'pp', 'lr']

#模糊查询输出excel相似的字符串,区分大小写的
print(re.findall("excel*","excel 12345world789exce87excellllm")) #输出:['excel', 'exce', 'excellll']

#模糊查询输出excel相似的字符串,至少要匹配一次完整的才可以
print(re.findall("excel+","excel 12345world789exce87excellllm")) #输出:['excel', 'excellll']

#把字符串里面的所有的excel都提取出来
print(re.findall("(excel)","excel 12345world789exce87excellllm")) #输出:['excel', 'excel']

#2个excel也就是excelexcel这样的出现了1次
print(re.findall("(excel){2}","excelexcel 123excel45world789exce87excellllm")) #输出:['excel']

#从第一个字符开始匹配11位的数字字符串,^表示从开始来匹配,第1位必须是数字才可以匹配
print(re.findall("^\d{11}","138111158888b")) #输出:['13811115888']

#从最后一位开始匹配11位数字,最后一位必须是数字才可以匹配,$表示从最后一位开始匹配
print(re.findall("\d{11}$","138111158888")) #输出:['38111158888']

#从开始第1个字符到最后1个字符之间只有11个数字的才可以匹配上,且开始和结尾必须是数字
print(re.findall("^\d{11}$","13811115888")) #输出:['13811115888']

#将abcxyz这样连接的字符 拆分开形成组
print(re.findall("(abc)(xyz)","mjqabcxyzjjjabcxyzmmm")) #输出:[('abc', 'xyz'), ('abc', 'xyz')]

#匹配字符串JJJ,不区分大小写(re.I忽略大小写的语句,以上内容都可以增加这一句)
print(re.findall("JJJ","mjqabcxyzjjjabcxyzmmm",re.I)) #输出:['jjj']

#匹配字符串JJJ以及提取后面2个字符合并输出,不区分大小写(re.I忽略大小写的语句,以上内容都可以增加这一句)
print(re.findall("JJJ.{2}","mjqabcxyzjjjabcxyzmmm",re.I)) #输出:['jjjab']

#匹配字符串JJJ以及提取后面2个字符合并输出,不区分大小写(re.I忽略大小写的语句,以上内容都可以增加这一句) 如果把re.I后增加re.S,那么换行符也可以提取出来
print(re.findall("JJJ.{2}","mjqabcxyzjjjabcxyzmmm",re.I|re.S)) #输出:['jjjab']

#b和h之间的所有字符全部输出出来
print(re.findall("b(.*)h","c57892bkj874163hu")) #输出:['kj874163']

#从第5个字符开始匹配,第6个字符开始结束,第一个匹配的数字是1
print(re.search("\d","nihao123Tianxia")) #输出:<re.Match object; span=(5, 6), match='1'> 
print(re.search("m","nihao123Tianxia")) #输出:None

import  re
a = "c57892bkj874163hu"
#第一个匹配上的结果是数字的。内容是5
print(re.search("\d",a).group()) #输出:5

import  re
a = "c57892bkj874163hu"
#第一个匹配上的结果是数字的。从第1个字符开始,第2个字符结束,匹配上了数字
print(re.search("\d",a).span()) #输出:(1, 2)

import  re
a = "123abc456789"
r = re.search("([0-9]*)([a-z]*)([0-9]*)",a)
#分为数字,字符,数字。这样依次输出
print(r.group()) #输出:123abc456789
print(r.group(0)) #输出:123abc456789
print(r.group(1)) #输出:123
print(r.group(2)) #输出:abc
print(r.group(3)) #输出:456789


#用数字进行分割去除数字,以列表的方式返回
print(re.split("\d","nihao13Tian2xia")) #输出:['nihao', '', 'Tian', 'xia']
#用"*"替换所有数字

print(re.sub("\d","*","nihao123Tianxia")) #输出:nihao***Tianxia
#用"*"替换数字2次
print(re.sub("\d","*","nihao123Tianxia",2)) #输出:nihao**3Tianxia

import  re
a = "abcFBIabcFBIKJGI"
def nihao(形参):
    return "胡启行"
#用"胡启行"替换FBI一次
print(re.sub("FBI",nihao,a,1)) #输出:abc胡启行abcFBIKJGI

import  re
a = "abcFBIabcFBIKJGI"
def nihao(形参):
    分段获取 = 形参.group()
    return "$" + 分段获取 + "$"
#在字符串"FBI"的前面和后面都增加上"$"
print(re.sub("FBI",nihao,a)) #输出:abc$FBI$abc$FBI$KJGI

import  re
a = "c57892bkj874163hu"
def nihao(形参):
    分段获取 = 形参.group()
    if int(分段获取) >= 5:
        return "9"
    else:
        return "0"
#在字符串里面大于等于5的部分替换位数字9,小于5的部分替换为0
print(re.sub("[0-9]",nihao,a)) #输出:c99990bkj990090hu

4  遍历字符串

str1 = 'hello, world!'
#遍历字符串
for char in str1:
    print(char) #输出:h e l l o , w o r l d !
a, b = 5, 10
print('%d * %d = %d' % (a, b, a * b)) #输出:5 * 10 = 50
print('{0} * {1} = {2}'.format(a, b, a * b)) #输出:5 * 10 = 50
print(f'{a} * {b} = {a * b}') #输出:5 * 10 = 50

list列表

list1 = [1, 3, 5, 7, 100]
list2 = ['hello'] * 3 #hello字符串输出3遍
#计算数据3在列表中出现的次数
print(list1.count(3)) #输出:1
#计算列表长
print(len(list1)) #输出:5
print(list2) #输出:['hello', 'hello', 'hello']
#下标(索引)运算
print(list1[0]) #输出:1
print(list1[4]) #输出:100
print(list1[5]) #输出:错误超过下标范围
print(list1[-1]) #输出:100
print(list1[-3]) #输出:5
#更改list值
list1[2] = 300
print(list1) #输出:[1, 3, 300, 7, 100]
#通过循环用下标遍历列表元素
for index in range(len(list1)):
    print(list1[index]) #输出:1 3 300 7 100
#通过for循环遍历列表元素
for elem in list1:
    print(elem)  #输出:1 3 300 7 100
#通过enumerate函数处理列表之后再遍历可以同时获得元素索引和值
for index, elem in enumerate(list1):
    print(index, elem)
#输出:
0 1
1 3
2 300
3 7
4 100

#在末尾添加元素
list1.append(200)
print(list1) #输出:[1, 3, 300, 7, 100, 200]
#在索引1位置插入数值400
list1.insert(1, 400)
print(list1) #输出:[1, 400, 3, 300, 7, 100, 200]
#合并两个列表
list1.extend([1000,2000])
print(list1) #输出:[1, 400, 3, 300, 7, 100, 200, 1000, 2000]
#先通过成员运算判断元素是否在列表中,如果存在就删除该元素
if 3 in list1:
	list1.remove(3)
print(list1) #输出:[1, 400, 300, 7, 100, 200, 1000, 2000]
#从指定的位置删除索引为0元素
list1.pop(0)
print(list1) #输出:[400, 300, 7, 100, 200, 1000, 2000]
#删除列表最后一个元素
list1.pop(len(list1)-1)
print(list1) #输出:[400, 300, 7, 100, 200, 1000]
#清空列表
list1.clear()
print(list1) #输出:[]

1  list列表切片

#列表切片
fruits = ['grape', 'apple', 'strawberry', 'waxberry']
#列表切片包括索引1,2,3
fruits1 = fruits[1:4]
print(fruits1) #输出:['apple', 'strawberry', 'waxberry']
#可以通过完整切片操作来复制列表
fruits2 = fruits[:]
print(fruits2) #输出:['grape', 'apple', 'strawberry', 'waxberry']
#列表切片包括索引-2,-3
fruits3 = fruits[-3:-1]
print(fruits3) #输出:['apple', 'strawberry']
#倒序输出列表
fruits4 = fruits[::-1]
print(fruits4) #输出:['waxberry', 'strawberry', 'apple', 'grape']

2  list列表排序

#列表排序
list1 = [9, 3, 578, 7, 100]
#升序排列
list2 = sorted(list1) 
print(list2) #输出:[3, 7, 9, 100, 578]
#升序排列
list1.sort()
print(list1) #输出:[3, 7, 9, 100, 578]
#降序排列
list3 = sorted(list1, reverse=True)
print(list3) #输出:[578, 100, 9, 7, 3]
#倒序排列
list1.reverse()
print(list1) #输出:[100, 7, 578, 3, 9]


fruits = ['grape', 'apple', 'strawberry', 'waxberry']
#通过key关键字参数指定根据字符串长度进行排序而不是默认的字母表顺序
list4 = sorted(fruits, key=len)
print(list4) #输出:['grape', 'apple', 'waxberry', 'strawberry']

2  list列表遍历,输出1-999的数据的平方值

#输出1-9的列表
f = [x for x in range(1, 10)]
print(f) #输出:[1, 2, 3, 4, 5, 6, 7, 8, 9]
#字母和数字交叉组合,可以直接组成一副牌的写法
f = [x + y for x in 'AB' for y in '123']
print(f) #输出:['A1', 'A2', 'A3', 'B1', 'B2', 'B3']

import sys
#输出1-999的数据的平方值
f = [x ** 2 for x in range(1, 1000)]
# 查看对象占用内存的字节数
print(sys.getsizeof(f))  
print(f) #输出:[1, 4, 9, 16, 25, 36..998001]

元组

#创建空元组
tuple = ()
#定义元组
t = ('骆昊', 38, True, '四川成都')
#获取元素的索引值
print(t.index("四川成都")) #输出:3
#统计计数
print(t.count("四川成都")) #输出:1
#获取索引0的元素
print(t[0]) #输出:骆昊

#遍历元组中的值
for member in t:
    print(member) #输出:骆昊 38 True 四川成都
    
#重新给元组赋值
t = ('王大锤', 20, True, '云南昆明')
print(t)  #输出:('王大锤', 20, True, '云南昆明')

#将元组转换成列表
person = list(t)
print(person) #输出:['王大锤', 20, True, '云南昆明']
#列表是可以修改它的元素的
person[0] = '李小龙'
print(person) #输出:['李小龙', 20, True, '云南昆明']

#将列表转换成元组
t1 = tuple(person)
print(t1) #输出:('李小龙', 20, True, '云南昆明')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值