06-Python字符串

06-Python字符串,第1张

  • 👨‍💻作者简介: 大家好,我是小火车~~
  • 🛳️个人主页: 上进小火车的博客
  • 📗系列专栏: 本文收藏在《Python基础从0到1》专栏
  • ✉️如果文章知识点有错误的地方,请指正! 和大家一起学习一起进步🎈
  • 🔥如果觉得博主的文章还不错的话,请👍三连支持👍一下博主哦
  • ➡️各系列思维导图链接

Python字符串
    • 一🥖.字符串的常用 *** 作方法
    • 1.1 字符串切片
    • 1.2 把字符串全部大写或小写upper, lower
    • 1.3 判读以xx开头或结尾startswith,endswith
    • 1.4 查找元素find ,index
    • 1.5 strip 默认去除字符前后两端的空格, 换行符, tab
    • 1.6 split 把字符串分割成列表
    • 1.7 join把列表转化成字符串
    • 1.8 is系列
    • 1.9 count 计算字符串中某个字符出现的次数
    • 1.10 replace 替换字符串中指定的字符
    • 1.11 format格式化输出
    • 1.12 capitalize() 首字母大写
    • 1.13 center() 将字符串居中可以设置总长度,可以设置填充物
    • 1.14 title 非字母隔开的每个单词的首字母大写
    • 1.15 字符串是不可变变量,不支持直接通过下标修改
    • 二🍔.综合练习--龟兔赛跑
    • 三🥪.综合练习--猜单词游戏
    • 四.🥧其他专栏


一🥖.字符串的常用 *** 作方法 1.1 字符串切片

获取Python字符串中的某字符可以使用索引:

lang = '上进小火车'
print(lang[0])
print(lang[3])
---------------------------
上
火

截取字符串中的一段字符串可以使用切片,切片在方括号中使用冒号:来分隔需要截取的首尾字符串的索引,包括开头,不包括结尾

lang[2:4]
# 小火

当尾索引没有给出时,默认截取到字符串的末尾

lang[2:]
# 小火车

当头索引没有给出的时候默认从字符串开头开始截取

lang[:3]
# 上进小

当尾索引和头索引都没有给出的时候,默认返回整个字符串,不过这只是一个浅拷贝

lang[:]
# 上进小火车

当尾索引大于总的字符串长度时,默认只截取到字符串末尾,很明显使用这种方法来截取一段到字符串末尾的子字符串是非常不明智的,应该是不给出尾索引才是最佳实践

lang[3:100]
# 火车

当头索引为负数时,则是指从字符串的尾部开始计数,最末尾的字符记为-1,以此类推,因此此时应该注意尾索引的值,尾索引同样可以为负数,如果尾索引的值指明的字符串位置小于或等于头索引,此时返回的就是空字符串

lang[-2:]
# 火车
lang[-2,2]
# ''

切片的第三个参数是步长

s = 'www.neuedu.com'

#### 切片取出来的字符串与原字符串无关,原字符串不变
print(s[6: 10])
print(s[7:: 2])
-------------------------------------------
uedu
eucm

反向取数字需要加上反向步长

print(s[-1: -4: -1])
print(s[-1: 2]) #### 取不到数据,因为步长默认为1
print(s[-1: 2: -1])#### 可以
--------------------------------------------
moc

moc.udeuen.
1.2 把字符串全部大写或小写upper, lower
s = 'www.NEUEDU.com'
print(s.upper())    #### 全部大写
print(s.lower())    #### 全部小写
1.3 判读以xx开头或结尾startswith,endswith
s = 'www.neuedu.com'
print(s.startswith('www'))    #### 判断是否以www开头
print(s.endswith('com'))    #### 判断是否以com结尾
--------------------------------------------
True
True
1.4 查找元素find ,index
s = 'chhengt'
print(s.find('h'))  #### 通过元素找索引找到第一个就返回(可切片)
print(s.find('b'))  #### 找不到返回 -1
print(s.index('b'))   #### 找不到会报错
-----------------------------------------------------
1
-1
Traceback (most recent call last):
  File "E:\PycharmProjects\pythonProject\venv\lx\demo03.py", line 4, in <module>
    print(s.index('b'))   
ValueError: substring not found
1.5 strip 默认去除字符前后两端的空格, 换行符, tab
s = 'qqwalex qqwusir barryy'
print(s.strip('qqw'))
print(s.strip(''))
print(s.lstrip('yy'))
print(s.rstrip('yy'))
-----------------------------------------------
alex qqwusir barryy
qqwalex qqwusir barryy
qqwalex qqwusir barryy
qqwalex qqwusir barr
1.6 split 把字符串分割成列表
#### 分割出的元素比分隔符数+1  ***
#### 字符串变成->>>列表
s = 'qqwalex qqwusir barryy'
s1 = 'qqwale;x qqwu;sir bar;ryy'
print(s.split())    #### 默认以空格分割
print(s1.split(';'))    #### 以指定字符分割
print(s1.split(';', 1)) #### 指定分割多少个
---------------------------------------------------
['qqwalex', 'qqwusir', 'barryy']
['qqwale', 'x qqwu', 'sir bar', 'ryy']
['qqwale', 'x qqwu', 'sir bar;ryy']
1.7 join把列表转化成字符串
#### 列表转化成字符串 list --> str
s = 'alex'####看成字符列表
li = ['aa', 'ddj', 'kk']    #### 必须全是字符串
s1 = '_'.join(s)
print(s1)
s2 = ' '.join(li)
print(s2)
---------------------------------------
a_l_e_x
aa ddj kk
1.8 is系列
#### 字符串.isalnum()    所有字符都是数字或者字母,为真返回 Ture,否则返回 False。
#### 字符串.isalpha()     所有字符都是字母,为真返回 Ture,否则返回 False。
#### 字符串.isdigit()     所有字符都是数字,为真返回 Ture,否则返回 False。
#### 字符串.islower()    所有字符都是小写,为真返回 Ture,否则返回 False。
#### 字符串.isupper()    所有字符都是大写,为真返回 Ture,否则返回 False。
#### 字符串.istitle()            所有单词都是首字母大写,为真返回 Ture,否则返回 False。
#### 字符串.isspace()    所有字符都是空白字符,为真返回 Ture,否则返回 False。    

#### is 系列
name = 'taibai123'
print(name.isalnum())   #### 字符串由数字或字母组成时返回真
print(name.isalpha())   #### 字符只由字母组成时返回真
print(name.isdigit())   #### 字符只由数字组成时返回真
1.9 count 计算字符串中某个字符出现的次数
#### count 计算字符串中某个字符出现的次数  
s = 'www.neuedu.com'
print(s.count('u'))
print(s.count('u', 7))
---------------------------------
2
1
1.10 replace 替换字符串中指定的字符
s = 'asdf 之一,asdf也,asdf'
#### replace  
s1 = s.replace('asdf', '日天')
print(s1)
s1 = s.replace('asdf', '日天', 1)
print(s1)
------------------------------
日天 之一,日天也,日天
日天 之一,asdf也,asdf
1.11 format格式化输出
#### format 格式化输出  ***
#### 第一种方式:
s = '我叫{}, 今年{}, 性别{}'.format('小五', 25, '女')
print(s)
#### 第二种方式
s1 = '我叫{0}, 今年{1}, 性别{2},我依然叫{0}'.format('小五', 25, '女')
print(s1)
#### 第三种方式
s2 = '我叫{name}, 今年{age}, 性别{sex},我依然叫{name}'.format(age=25, sex='女',name='小五')
print(s2)
------------------------------------------------------------
我叫小五, 今年25, 性别女
我叫小五, 今年25, 性别女,我依然叫小五
我叫小五, 今年25, 性别女,我依然叫小五
1.12 capitalize() 首字母大写
s = 'chen wuang4fhsa¥fh。f'
s1 = s.capitalize()
print(s1)
---------------------------------------
Chen wuang4fhsa¥fh。f
1.13 center() 将字符串居中可以设置总长度,可以设置填充物
#### center() 将字符串居中可以设置总长度,可以设置填充物 
s = 'chenziwu'
s2 = s.center(50)
s2 = s.center(50, '*')
print(s2)
--------------------------------------------------

*********************chenziwu*********************
1.14 title 非字母隔开的每个单词的首字母大写
s = 'chen wuang4fhsa¥fh。f'
s4 = s.title()
print(s4)
----------------------------------------
Chen Wuang4Fhsa¥Fh。F
1.15 字符串是不可变变量,不支持直接通过下标修改
msg = 'abcdefg'
# msg[2] = 'z' 不支持

msg = msg[:2] + 'z' + msg[3:]

print(msg)
二🍔.综合练习–龟兔赛跑

(模拟龟兔赛跑)本练习中要模拟龟兔赛跑的寓言故事。用随机数产生器建立模拟龟兔赛跑的程序。 对手从70个方格的第1格开始起跑,每格表示跑道上的一个可能位置,终点线在第70格处。 第一个到达终点的选手奖励一个新鲜萝卜和莴苣。兔子要在山坡上睡一觉,因此可能失去冠军。 有一个每秒钟滴答一次的钟,程序应按下列规则调整动物的位置:

用变量跟踪动物的位置(即位置号1到70)。每个动物从位置1开始,如果动物跌到第1格以外,则移回第1格。 产生随机整数1≤i≤10),以得到上表中的百分比。对于乌龟,1≤i≤5时快走,6≤i≤7时跌跤,8≤i≤10时慢走,兔子也用相似的方法。 起跑时,打印: BANG !!! AND THEY’ RE OFF !!! 时钟每次滴答一下(即每个重复循环),打印第70格位置的一条线,显示乌龟的位置T和兔子的位置H。 如果两者占用一格,则乌龟会咬兔子,程序从该位置开始打印 OUCH!!!。除T、H和OUCH!!!以外的其他打印位置都是空的。 打印每一行之后,测试某个动物是否超过了第70格,如果是,则打印获胜者,停止模拟。 如果乌龟赢,则打印TORTOISE WINS!!!YAY!!!。如果兔子赢,则打印Hare wins.Yush。 如果两个动物同时赢,则可以同情弱者,让乌龟赢,或者打印It’s a tie。如果两者都没有赢,则再次循环,模拟下一个时钟滴答。 准备运行程序时,让一组拉拉队看比赛,你会发现观众有多么投入。

代码

from random import randint
import time

print('begin')
hPos = 0
tPos = 0

while True:
    paodao = '_' * 70
    n = randint(0,10) + 1
    if n <= 5:
        tPos += 3
    elif 5 < n <= 7:
        tPos -= 6
    else:
        tPos += 1

    if n <= 2:
        hPos = hPos
    elif 3 <= n <= 4:
        hPos += 9
    elif n == 5:
        hPos -= 12
    elif 6 <= n <= 8:
        hPos += 1
    else:
        hPos -= 2

    if tPos >= 70 or hPos >= 70:
        break

    if tPos == hPos:
        paodao = paodao[:tPos] + '咬' + paodao[tPos:]
    else:
        paodao = paodao[:tPos] + '龟' + paodao[tPos:]
        paodao = paodao[:hPos] + '兔' + paodao[hPos:]

    print(paodao)
    time.sleep(0.5)

if tPos > 70:
    print('龟赢')
else:
    print('兔赢')
三🥪.综合练习–猜单词游戏

需求

给定单词数组(不少于10个),程序随机选择其中的一个,并显示单词字符长度个横线(-),用户有5次猜测机会,用户每次猜一个字母,如果正确,则将在相应的位置上显示出来;如错误则猜测机会减一,重复该过程,直至单词的全部字母全部猜出或者猜测次数用完,最后宣布用户胜利或失败。

实例

例如随机选出的单词是apple,程序先打印- - - - - 用户输入p,程序打印 -pp– 用户输入e,程序打印 -pp-e 用户输入t,程序打印 -pp-e 您还有4次机会 用户输入a,程序打印 app-e 用户输入l,程序打印 apple 恭喜您,取得胜利。

代码

import random
words = ['program','banana','tiger','policeman','interface']
index = random.randint(0,len(words) - 1)
word = words[index]
print(word)
wordbak = '-' * len(word)
print(wordbak)
guessTimes = 5
wordlst = list(wordbak)

while True:

    if guessTimes <= 0:
        break
    if '-' not in wordlst:
        break
    char = input('请输入一个字符:')
    if char in word:
        for i,c in enumerate(word):
            if c == char:
                wordlst[i] = char
    else:
        guessTimes -= 1
        print('你还剩下{}次机会'.format(guessTimes))

    print(''.join(wordlst))

if guessTimes > 0:
    print('you win')
else:
    print('you lose')

四.🥧其他专栏

❤️《Python基础从0到1》专栏
🧡《Python进阶从0到1》专栏
💛《Python爬虫》专栏
💚《Python数据处理》专栏

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/869482.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存