字符串(预习篇)

114 阅读4分钟

复习for循环 99乘法表

# -*- coding:utf-8 -*-
for i in range(1,10):
    for j in range(1,i+1):
        print(f"{i}x{j}={i*j}",end = " ")
    print()

字符串

var1 = "hello world"
var2 = 'hello world'
var3 = """hello world"""
var4 = """
你好,
我是xxx,
我喜欢xxxx,
我是小橘子
print(var4)

字符串的格式化输出

name = "小橘子"
age = 18
height = 158.5
# %s 输出字符串   %d 输出整数类型   %f 输出浮点型
print("%s" % name)
print("%d" % age)
print("%f" % height)

print("%s" % age)
print("%s" % height)

# print("%d" % name) #不能用整数名字
print("%d" % height)

print("%f" % age)

var5  ="180"  #字符串
var6 = "185.678"
print("%s" % var5)
# print("%d" % int(var6))  长得像整数的字符串不能转int
print("%d" % eval(var5))
print("%f" % float(var5))

长得像整数的字符串可以转换为整数也可以转化为浮点数
长得像浮点数的字符串只能转化为浮点数不能转为int

input

 num = input("输个数:")  #输入
 print(num)
 print(int(num))
 print(float(num))

下标也叫(索引) 索引是从0开始

var7 = "hello world"
#下表为5
print(var7[2])
print(var7[5])
print(var7[8])

切片 (字符串、列表、元组都支持)

var8 = "hello python i love you"
print(var8[0:5]) #从大到小切
print(var8[1:10]) #从1开始,到10结束(不会拿到10本身)
print(var8[6:12])
print(var8[6:12:2]) #从6开始,到12结束 步长为2(不会拿到12本身)
print(var8[:5])  #从0开始,下表为5结束(不会拿到本身)
print(var8[5:])  #从5开始,一直到结束
print(var8[:])   #拿取所有
print(var8[::2]) #从0开始,步长为2,拿取所有

print(var8[-1]) #从右到左从-1开始
print(var8[:-1]) # 从0开始,到最后一个人结束(-1代表最后一个数,不包含-1本身)左闭右开 最右一个拿不到
print(var8[-3:])
print(var8[-1:-4]) #从小到大切
print(var8[::-1]) #从右往左拿取全部
print(var8[:-4:-1])
print(var8[-5:-9:-1])
print(var8[5:0:-1])

查找

#find()
var9  = "hello world and java and php i love you"
print(var9.find("love"))
print(var9.find("python"))
print(var9.find("and",18,30)) #可区间范围指定

#index()  表在整个字符串里查找
print(var9.index("and"))  #查找到and首字母下标
print(var9.index("and",8,20)) #查找到下标为8—20,and首字母下标
# print(var9.index("or"))  #查找or 如果没有则报错

count() 表在整个字符串序列中查找出现的次数

print(var9.count("python"))
print(var9.count("world"))

拓展(了解即可)

#rfind() 右侧开始

#rindex()

修改

#replace()
var10 = var9.replace("java","python")
print(var10)
var10 = var9.replace("a","b",2)  #"2"修改次数
print(var10)

注意:数据按照是否能直接修改分为“可变类型”和“不可变类型

修改后内存地址(id)有没有发生变化

可变类型 --没有变化

不可变类型 --地址变了

var11 = "hello python"
print(id(var11))
var12 = var11.replace("python","world")
print(id(var12))

split() 切割

#注意:字符串序列.spilt(分割字符,num)

#num表分割字符出现的次数

var13 = "唱歌|跳舞|rap|羽毛球"
var14 = var13.split("|",3)

切割后的内容,以列表的形式展示

join() 将多个字符串合并为一个新的字符串

var15 = "--".join(var14) #只能放一个序列
print(var15)
var16 = "--".join(("你好","小橘子"))
print(var16)
var17 = "--".join(["你好","小橘子"])
print(var17)

语法

字符或子串.join(多字符串组成的序列)

capitalize() 将字符串第一个字符转换成大写

num1 = "  hello and python and hello world  "
print(num1.capitalize())

itle() 将字符串每个单词首字母转换成大写

print(num1.title())

upper() 将字符串中小写转大写

print(num1.upper())

lower 将字符串中大写转小写

print(num1.lower())

lstrip() 删除字符串左侧空白字符

print(num1.lstrip())

rstrip() 删除字符串右侧空白字符

print(num1.rstrip())

strip() 删除字符串两侧空白字符

print(num1.strip())

了解即可

ljust() 左对齐

rjust() 右对齐

center() 居中

字符串序列

var  = "hello and pytohn and hello world"
print(var.ljust(10,"_"))  #左对齐
print(var.rjust(10,"_"))  #右对齐
print(var.center(10,"_"))  #居中对齐

starstwith() 检查字符串是否以指定子串开头

print(var.startswith("hello"))  #开头是hello,返回True
print(var.startswith("and"))   #开头不是and 返回False
print(var.startswith("and",6,20))  #在索引6-20,开头是and 返回True

endswith() 检查字符串是否以指定子串结尾

print(var.endswith("and"))  #开头是hello,返回True
print(var.endswith("world"))   #开头不是and 返回False
print(var.endswith("and",0,9))  #在0-9索引范围 是and结尾 返回True

isalpha() 字符串所有字符都是字母则返回True 否则返回False

mystr1 = 'hello'
mystr2 = '12345'
print(mystr1.isalpha())
print(mystr2.isalpha())

isdight() 字符串只包含数字则返回True 否则返回False

print(mystr1.isdigit())
print(mystr2.isdigit())

isalnum() 判断所有字符串都是字母或数字组成则返回True 否则返回False

print(mystr1.isalnum())
mystr3 = " "
#isspace() 字符串中只包含空白 则返回True 否则返回False
print(mystr1.isspace())
print(mystr3.isspace())

字符串运算

+

print("你好"+"你们好") #拼接字符串

in not in

var17 = "hello 你好 小橘子"
if "小橘子" in var17 :
    print("在里面")
var18 = "hello 你们好 橘子"
if "小橘子" not in var18 :
    print("不在里面")

print(r"你好\n\t橘子")  #取消转义

作业

#提取数字出来

varr1 = "1a2b3c4d5e6f"
for data in varr1:
    if data in "0123456789":
        print(data)
        

#1-6相加

varr2 = "1a2b3c4d5e6f"
result = 0
for data in varr2:
    if data in "0123456789":

        result += int(data)

print(result)