字符串

1.定义:
用 变量 = " “/’ '(单行)或”"" “”"/’’’ ‘’’(多行)

2.下标(索引):
正方向:从0开始,反方向:从-1开始
找字符:变量[ 下标 ]

3.不允许修改

4.切片:
如:s [ 起始:终止:步长 ]
5.内置函数:
len( ):求字符串的长度
type( ):求类型
max ( ):最大值
min ( ) :最小值

6.编码:
GB2312:采用16位 第一个中文编码集
GBK:大约4万多个汉字
UTF-8: 24位,全世界语言的编码集(1-9,a-z,A-Z:占8位,其余占24位)
7.字符串的操作

s = "123as"
s.count("x")            #统计s中x出现的次数
s.count("x",3,12)       #统计从3到12中x的出现次数
s.isalpha()             #判断s是否为纯字母(包含汉字)
s.isdigit()             #判断s是否为纯数字
s.isalnum()             #判断s是否为字母数字组合
s.lower()               #转小写
s.upper()               #转大写
s.split("x")            #将s以x为界产分  ['',''] 形式
s.ljust(10,"*")         #将s变为10个字符,不足用 * 向右补齐
s.rjust(10,"*")         #同上,向左补齐
s.startswith("x")       #是否以x开始
s.endswith("s")         #是否以x结束
s.find("x")             #查找,会找到要找字符的下标,若找不到则返回-1
s.index("x")            #同上,找不到会报错
s.rstrip("x")           #去右x(默认为空格)
s.lstrip("x")           #去左x(默认为空格)
s.strip("x")            #去左右x(默认为空格)
s.replace("x","y",2)    #用y替换x,换两个(若不打2,则全替换)
"_".join(s)             #用“_”把s的各个字符隔开
b=s.encode(encoding="UTF-8") #编码
b.decode(encoding="UTF-8")   #解码(解与编要用一个编码集)
s.rfind()               #查找,从右向左找
s.rindex()              #查找,从右向左找
sorted(s)               #排序
for i in s:     #把字符s中的每个字母赋值给i参与循环


8.练习题

# 1.
# 字符串解析, 现有一字符串, "卡巴斯基#杀毒软件#免费版#俄罗斯#", 解析出每个元素。
s="卡巴斯基#杀毒软件#免费版#俄罗斯#"
print(s.split("#"))


# 2.
# "那车水马龙的人世间,那样地来 那样地去,太匆忙"
# 最后一次出现
# "那"
# 的位置。

s="那车水马龙的人世间,那样地来 那样地去,太匆忙"
print(s.find("那",11))

# 3.
# 判断输入的字符串是否是 .py 结束 

s="ugiujkbnk.py"
print(s.endswith(".py"))

# 有一身份证号, 判断此为男还是女, 基于此方法, 写一个算法, 判断一个身份证号为男还是女。(身份证分15位和18位)

shen_fen_zheng_hao = int(input("请输入你的身份证号"))
shen_fen_zheng_hao = str(shen_fen_zheng_hao)
if len(shen_fen_zheng_hao) == 15:
    if int(shen_fen_zheng_hao[-1])%2==0:
        print("女")
    else:
        print("男")
if len(shen_fen_zheng_hao) == 18:
    if int(shen_fen_zheng_hao[-2])%2==0:
        print("女")
    else:
        print("男")


# 4.
# 有如下格式的字符串name - age - sex - address, 解析出姓名, 年龄等信息。

s="name - age - sex - address"
print(s.split("-"))

# 5.
# 求出字符串中有多少种字符,以及每个字符的个数
# 例如有字符串
# str = "apple is a apple.";
# 结果应该是
# a: 3
# p: 4
# l: 2
# e: 2
# :3
# i: 1
# s: 1
# .:1
#
s="apple is a apple."
s_=""
for i in s:
    if i not in s_:
        s_ += i                 #得出s中有多少种字符
for j in s_:
    print(j,":",s.count(j))     #打印出s_中各个字符再s中出现的个数



# 6.
# 用来去掉字符串右边的空格

s=input("请输入字符:")
print(s.rstrip())

#
# 7.
# 定义一个方法,将str所指字符串的正序和反序进行连接, 例如
# "ok"->"okko"

s=input("请输入字符:")
s1=s[-1::-1]
print(s+s1)


# 8.
# 字符串右移n位, 例如
# "hello world"
# 右移两位ldhellowor

s=input("请输入字符:")
m=int(input("向右移动几位:"))
s1=s[0:len(s)-m:1]
s2=s[len(s)-m:len(s)+1:1]
print(s2+s1)
# 9.
# 求5个字符串中最长的那个,把最长的字符串打印出来
s1 = "asdfdf"
s2 = "sdsfd"
s3 = "asdsf"
s4 = "s"
s5 = "sdsd"
d = max(len(s1),len(s2),len(s3),len(s4),len(s5))
if len(s1) == d:
    print(s1)
elif len(s2) == d:
    print(s2)
elif len(s3) == d:
    print(s3)
elif len(s4) == d:
    print(s4)
elif len(s5) == d:
    print(s5)



# 10.
# 若可以从一个源字符串中, 找到一个相符的字符串(忽略大小写), 则返回第一个字符的索引位置,否则返回 - 1。

s = input("请输入字符串:")
s1 = s.upper()
a = input("请输入你要找的字符串:")
a1 = a.upper()
print(s1.find(a1))


# 11.
# 判断一个字符串是否是回文

falg = False
s = input("请输入字符串:")
for i in range(0,len(s)):
    if s[i] != s[-i-1]:
        falg = True
        break
if  falg:
    print("不是回文数")
else:
    print("是回文数")

s = "asdfggfdsa"
if s == s[-1::-1]:
    print("shi ")




# 12.
# 如下字符串, 01  # 张三#20-02#李四#30-03#王五#40。。。。。。,解析每个人分数多少。样式如下:
# 01
# 张三
# 20
# 02
# 李四
# 30
# 03
# 王五
# 40。并且计算总分。

s="01#张三#20-02#李四#30-03#王五#40"
s1=str(s.split("-"))
s1=s1.strip("[]")
s3=s1.replace("#"and",","\n")
s5=s3.replace("'","")
s6=s5.replace(" ","")
s4=s6.replace("#","\n")
# ???????????????????????????????????????
# ???????????????????????????????????????
#
# print(s4,)
# 编程.
# 1.
# 已知字符串:"this is a test of python".
# 按要求执行以下操作:
# (1)
# 统计该字符串中字母s出现的次数

s="this is a test of python"
print(s.count("s"))


# (2)
# 取出子字符串
# "test"

s="this is a test of python"
print(s[s.find("test"):s.find("test")+len("test")])

# (3)
# 将字符串中每个单词的第一个字母变成大写, 输出到控制台。


# ??????????????????????
s3 = "hello world"
arr = s3.split(" ")
new_str = f'{arr[0].capitalize()} {arr[1].capitalize()}'
print(new_str)
# ??????????????????????


s="this is a test of python"
print(s.title())

# (4)
# 用两种方式实现该字符串的倒叙输出。

s="this is a test of python"
print(s[-1::-1])

# !!!!!!!!!!!!!!!!!!!
print("".join(reversed(s)))

for i in range(-1,-len(s)-1,-1):
    print(s[i],end="")

# 2.
# 获取一个字符串在另一个字符串中出现的次数
# 例如, 获取
# "kk"
# 在
# "abkkcdkkefkkskk"
# 中出现的次数

s="abkkcdkkefkkskk"
print(s.count("kk"))



# 3.
# 去除字符串两端的逗号

s=",abkkcdkkefkkskk,"
print(s.strip(","))

# 4.
# 将一个字符串进行反转
# 将字符串中指定部分进行反转,"abcdefgeee";

s="abcdefgeee"
print(s[-1::-1])
m=int(input("请输入指定部分"))
s2=s[1:len(s)-m:]
print(s2[-1::-1])
# 5.
# 获取两个字符串中最大相同子串
# 例如找到字符串
# "abcwerthelloyuiodef"
# 和
# "cvhellobnm"
# 中的最大相同字串
# 此题,应该从子串的长度考虑。
# 思路:
# 1,将短的那个子串按照长度递减的方式获取到。
# 2,将每获取到的子串去长串中判断是否包含,如果包含,已经找到!。
falg = False
s1 = 'abcwerthelloyuiodef'
s2 = 'cvhellobnm'
for i in range(0,len(s2)):
    m=s2[i-1:i:]
    if m in s1:

        for j in range(i-1,len(s2)):
            n=s2[i-1:j:]
            if n  in s1:
                if len(n) >4:
                    print(n)



# 6.
# 给你一组字符串如:iu7i8hy4jnb2,让你编程输出里面的数字:

for i in "iu7i8hy4jnb2":
    if i.isdigit():
        print(i,end="")


# 7.
# 假设字符串类似这样的aba和aab就相等,现在随便给你二组字符串,请编程比较他们看是否相等

s1 = "acdbegf"
s2 = "acbdegf"
if sorted(s1)==sorted(s2):          #sorted :排序
    print("相等")
else:
    print("不相等")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值