学python的第六天---字符串

已经完成了一部分字符串的题目,在前面的一篇文章里面,本来以为这一部分应该算是基础部分,但其实感觉字符串中会有很多用法我都不太会,所以专门在做一节。

一、只出现一次的字符

在这里插入图片描述
res.get(i, False) 是在字典 res 中查找键为 i 的值,如果找到了返回对应的值,否则返回 False

s=input()
res={
    
    }
for i in s:
    if res.get(i,False):
        res[i]=res[i]+1
    else:
        res[i]=1
for i in res:
    if res[i]==1:
        print(i)
        exit()
print("no")

其他:round(XXX,1)

这行代码的作用是将XXX四舍五入保留一位小数。

忽略大小写比较字符串大小

在这里插入图片描述

字符串几个可以使用的函数

str = "www.runoob.com"
print(str.upper())          # 把所有字符中的小写字母转换成大写字母
print(str.lower())          # 把所有字符中的大写字母转换成小写字母
print(str.capitalize())     # 把第一个字母转化为大写字母,其余小写
print(str.title())          # 把每个单词的第一个字母转化为大写,其余小写 
s1,s2=input().lower(),input().lower()
if s1==s2:
    print("=")
elif s1>s2:
    print(">")
elif s1<s2:
    print("<")

二、去掉多余的空格

在这里插入图片描述

写法一:

print(" ".join(input().split()))

写法二:

for s in input().split():
    print(s, end = ' ')

三、信息加密

在这里插入图片描述

写法一:

chr()是一个Python内置函数,它将一个整数作为参数,并返回对应于该整数的ASCII / Unicode字符。

for c in input():
    if c >= 'a' and c <= 'z' or c >= 'A' and c <= 'Z':
        if ord(c) + 1 == ord('z') + 1 or ord(c) + 1 == ord('Z') + 1:
            c = chr(ord(c) - 25)
        else:
            c = chr(ord(c) + 1)
    print(c, end = '')
for c in input():
    if c.isalpha():#判断是不是字母
        if ord(c) + 1 == ord('z') + 1 or ord(c) + 1 == ord('Z') + 1:
            c = chr(ord(c) - 25)
        else:
            c = chr(ord(c) + 1)
    print(c, end = '')

写法二:

data = {
    
    }
t = [chr(97+i) for i in range(26)]
for i in range(len(t)-1):
    data[t[i]] = t[i+1]

data['z'] = 'a'
# print(data)
res = ''
for i in input():
    if data.get(i,False):
        res += data[i]
    elif data.get(i.lower(),False):
        res += data[i.lower()].upper()
    else:
        res+= i

print(res)

写法三:自己的写法

我是不是掌握了?哈哈哈

s=input()
for i in s:
    if i=="z":i="a"
    elif i=='Z':i="A"
    elif i.isalpha():
        i=chr(ord(i)+1)
    print(i,end='')

四、单词替换

在这里插入图片描述

s,a,b=input(),input(),input()
for t in s.split():
    if t==a:
        print(b,end=" ")
    else: print(t,end=" ")

五、倒排单词

在这里插入图片描述

写法一:

l=list(input().split())
l.reverse()
for i in l:
    print(i,end=' ')

写法二:

*

’*‘ 号是 Python 的一个语法,用于解包列表或元组,将其拆分为一个个单独的变量。这里将列表中的所有元素解包成独立的字符串,传入 print() 函数中。

print(*reversed(input().split()))

写法三:

[::-1]

[::-1] 是列表的一个特殊的语法,用于将列表倒序输出,即从最后一个元素开始到第一个元素,步长为 -1。

print(*input().split()[::-1])

六、字符串移位包含问题

在这里插入图片描述

写法一:我自己的写法哈哈哈

a,b=input().split()
if len(a)<len(b):
    a,b=b,a
s=a+a
if b in s:
    print("true")
else:
    print("false")

写法二:

s, t = input().split()
if len(s) < len(t):
    s, t = t, s
for i in range(len(s)):
    str = s[i:] + s[:i]
    if str.find(t) != -1:
        print('true')
        break
else:
    print('false')

写法三:

s, t = input().split()
if len(s) < len(t):
    s, t = t, s
s *= 2
if s.find(t) == -1:
    print('false')
else:
    print('true')

七、字符串乘方

在这里插入图片描述
这个就是寻找最小的重复子串,且这个子串可以重复多次构成母串

写法一:

def check(l, s):
    p = s[:l]
    for i in range(l, len(s), l):
        cur = s[i: i + l]
        if p != cur:
            return False
    return True
while 1:
    s = input()
    if s == '.':
        break
    l = len(s)
    maxl = 1
    for curl in range(1, l):
        if check(curl, s):
            maxl = max(maxl, int(l / curl))
    print(maxl)

写法二:

字符串最小的,肯定是重复次数最多的,所以我们只要一找到符合要求的,就可以跳出循环

while True:
    s = input()
    if s == '.':
        break
    n = len(s)
    for i in range(1, n + 1):
        if n % i == 0:
            cs = s[:i]
            res = int(n / i)
            cs *= res#将求出的字符串和原来的字符串对比,如果是那就说明这个方案可行
            if cs == s:
                print(res)
                break

写法三:

from collections import Counter

记录每个数字出现了多少次

from collections import Counter
while True:
    s = input()
    if s == '.':
        break
    c = Counter(s)
    print(min(c.values()))

八、字符串最大跨度

在这里插入图片描述

写法一:

s, a, b = map(str, input().split(','))
if s.find(a) != -1 and s.find(b) != -1:
    ai = s.find(a) + len(a)
    s = s[::-1]
    b = b[::-1]
    bi = len(s) - s.find(b) - len(b)
    if ai <= bi:
        print(bi - ai)
    else:
        print(-1)
else:
    print(-1)

写法二:

rfind

向前查询

s,s1,s2 = input().split(",")
a = s.find(s1)
b = s.rfind(s2)
if(a == -1 or b == -1 or a+len(s1) >= b):
    print("-1")
else:
    print(b-a-len(s1))

九、最长公共字符串后缀

在这里插入图片描述

while True:
    n = int(input())
    if n == 0:
        break
    ls = []
    for i in range(n):
        ls.append(input().strip()[::-1])
    s1 = min(ls)#获取ls中最小的元素
    s2 = max(ls)
    res = ''
    for i in range(len(s1)):
        if s1[i] == s2[i]:
            res += s1[i]
        else:
            break
    print(res[::-1])


猜你喜欢

转载自blog.csdn.net/qq_51408826/article/details/129378162