Python青少年简明教程:字符串

news2024/9/25 23:17:48

Python青少年简明教程:字符串

字符串(string)是用于表示文本的数据类型。它是不可变的序列类型,即一旦创建,字符串中的字符就无法改变。

下面对Python中字符串的详细介绍,包括字符串的创建、操作和常见方法。

字符串的定义

在Python中,字符串可以用单引号 (')、双引号 (")、三重引号(''' 或 """)来定义。

python字符串的创建方法或方式:

1)单引号和双引号:

str1 = '这是一个字符串'

str2 = "这也是一个字符串"

单引号和双引号没有区别,你可以根据个人喜好选择其中一种。通常,在字符串中包含另一种引号时,可以用这两种方式来避免使用转义符。

2)三重引号: 三重引号允许创建跨多行的字符串,并且可以保留字符串中的换行符和缩进。

str3 = """这是一个多行字符串。
它可以跨越多行。
保留了缩进和换行符。"""
 

另外

str() 函数可以将其他数据类型转换为字符串。例如:

number = 123
str = str(number)  # "123"

join() 方法用于将序列中的元素连接成一个字符串。例如:

words = ["Hello", "world"]
str = " ".join(words)  # "Hello world"

原始字符串

在原始字符串中,反斜杠(\)不会被解释为转义字符——被视为普通字符。原始字符串使用前缀 r 或 R 表示。

raw_str = r"C:\Users\Alice\Documents"  # "C:\\Users\\Alice\\Documents"

转义字符

转义字符的主要作用是允许在字符串中包含控制字符或其他特殊字符,而这些字符本身在普通文本中可能难以直接表示或具有特殊含义。以下是Python中常用的转义字符及其说明:

\n - 换行符

\t - 制表符(Tab)

\ - 反斜杠

' - 单引号

" - 双引号

\r - 回车

\b - 退格(Backspace)

\f - 换页

\ooo - 八进制值

\xhh - 十六进制值

示例:

# 换行和制表符
print("Hello\nWorld")
print("Name:\tAlice")

# 在字符串中使用引号
print("He said, \"Hello!\"")
print('It\'s a beautiful day')

# 使用反斜杠
print("C:\\Users\\Username")

# 八进制和十六进制
print("\101")  # 打印 'A'
print("\x41")  # 也打印 'A'

输出:

Hello
World
Name:   Alice
He said, "Hello!"
It's a beautiful day
C:\Users\Username
A
A

字符串是不可变的

python字符串是不可变的(immutable),意味着一旦字符串被创建,就无法改变其内容。每次对字符串的操作实际上都会创建一个新的字符串对象。

示例说明:

# 创建一个字符串
s = "hello"
# 尝试"修改"字符串
s = s + " world"

这看起来像是修改了s,但实际上创建了一个新的字符串对象——s指向新对象。

参见图示:

字符串的常用操作

连接(拼接)字符串: 使用加号(+)将两个或多个字符串连接在一起。
str1 = "Hello"
str2 = "World"
result = str1 + " " + str2  # "Hello World"

重复字符串: 使用乘号(*)将字符串重复指定次数。
str1 = "Hello"
result = str1 * 3  # "HelloHelloHello"

访问字符串中的字符: 使用索引来访问字符串中的单个字符。索引从0开始。
str1 = "Hello, world!"
char = str1[0]  # 'H'

切片(Slicing): 可以使用切片操作从字符串中提取子字符串。格式为 str[start:end],其中 start 是开始索引,end 是结束索引(不包括该索引处的字符)。
str1 = "Hello, world!"
sub_str = str1[0:2]  # 'He'
print(str1 [7:12])  # 输出:world

字符串长度: 使用内置函数 len() 获取字符串的长度。
str1 = "Hello, world!"
print(len(str1))  #输出:13

字符串包含: 使用 in 和 not in 运算符检查子字符串是否存在于字符串中。
str1 = "Hello, world!"
print("wor" in str1)  #输出:True
print("python" not in str1)  #输出:True

字符串常用的方法

Python提供了丰富的字符串方法来处理和操作字符串。以下是一些常用的字符串方法:

str.upper(): 将字符串中的所有字符转换为大写。
str1 = "python"
result = str1.upper()  # "PYTHON"

str.lower(): 将字符串中的所有字符转换为小写。
str1 = "Python"
result = str1.lower()  # "python"

str.capitalize():将字符串的首字母大写。
Str1 = "hello world"
print(str1.capitalize())  #输出: Hello world

str.title():将字符串中的每个单词的首字母大写。
Str1 = "hello world"
print(str1.title())  #输出:Hello World

str.strip(): 移除字符串两端的空白字符(或指定的字符)。
str1 = "  Python  "
result = str1.strip()  # "Python"

str.replace(old, new): 将字符串中的指定子字符串替换为另一个子字符串。
str1 = "Hello World"
result = str1.replace("World", "Python")  # "Hello Python"

str.split(delimiter): 将字符串拆分为子字符串列表,使用指定的分隔符。
str1 = "Python is awesome"
result = str1.split(" ")  # ["Python", "is", "awesome"]

str.join(iterable): 使用指定的字符串连接一个可迭代对象中的元素,通常是列表。
list1 = ["Python", "is", "awesome"]
result = " ".join(list1)  # "Python is awesome"

str.find(sub): 返回子字符串在字符串中的最低索引值。如果找不到,返回 -1。
str1 = "Python"
index = str1.find("th")  # 2

str.startswith(prefix) 和 str.endswith(suffix): 检查字符串是否以指定前缀开始或以指定后缀结束。
str1 = "Python"
starts = str1.startswith("Py")  # True
ends = str1.endswith("on")  # True

字符串格式化

Python提供了几种字符串格式化的方法,以便更容易地将变量和表达式的值插入到字符串中,或者说,这些方法可以帮助开发者在字符串中嵌入变量或表达式的值。

旧式格式化(% 运算符):

%操作符是Python中一种较早的字符串格式化方法,也被称为“旧式字符串格式化”。基本语法:

"字符串 %s" % 变量

对于单个值,可以直接使用 % 值

对于多个值,需要将值放在元组中:% (值1, 值2, ...)

示例:

name = "Alice"
age = 30
print("Name: %s, Age: %d" % (name, age))  #输出:Name: Alice, Age: 30

str.format() 方法:

format() 方法允许你通过占位符将变量插入到字符串中。基本语法:

"字符串 {}".format(变量)

示例:

name = "Alice"
age = 30
print("Name: {}, Age: {}".format(name, age))  #输出: Name: Alice, Age: 30

f-string(格式化字符串字面值,Python 3.6+):

Python 3.6 及以上版本支持 f-string,通过在字符串前加上 f,可以将表达式直接嵌入到字符串中。基本语法:

f"字符串 {变量}"

示例:

name = "Alice"
age = 30
print(f"Name: {name}, Age: {age}")  #输出:Name: Alice, Age: 30

另外,还可使用string.Template类

string.Template 类是 Python 标准库中的一部分,不需要额外安装。它位于 string 模块中,这个模块是 Python 内置的,要使用 Template 类,你需要从 string 模块导入它:

from string import Template

Template 类使用 $ 符号作为占位符来创建模板字符串。基本用法示例:

t = Template('Hello, $name!')
result = t.substitute(name='Alice')
print(result)  # 输出: Hello, Alice!

下面给出几个使用字符串的例子

例1、输入一个字符串,程序检查该字符串是否为回文(即正着读和反着读都一样,如:上海自来水来自海上,123454321,level)。

源码如下:

# 回文检查函数
def is_palindrome(s):
    return s == s[::-1]

def palindrome_game():
    user_input = input("输入一个字符串以检查它是否是回文: ").replace(" ", "").lower()

    if is_palindrome(user_input):
        print("这是回文!")
    else:
        print("这不是回文。")

palindrome_game()

例2、词语字符重排文字游戏游戏

给出多个与编程相关的中英文词语,每局随机抽取5个词语进行游戏。允许玩家多次进行游戏,并在结束时显示总体统计信息。

源码如下:

import random

def shuffle_word(word):
    # 将词转换为Unicode码点列表
    code_points = list(word)
    # 打乱列表
    random.shuffle(code_points)
    # 将码点列表转回字符串
    return ''.join(code_points)

words = [
    "python", "游戏", "编程", "算法", "字符串",
    "计算机", "网络", "人工智能", "机器学习",
    "网页", "应用", "开发",  "代码","条件" ,
    "调试", "测试", "大数据", "操作系统",
    "函数", "循环" ,"print", "input", "string"  
]

def play_game():
    game_words = random.sample(words, 5)
    score = 0

    print("游戏说明:")
    print("尝试猜出与编程相关的中英文原始词语,每局共5个单词.")

    for word in game_words:
        shuffled = shuffle_word(word)
        # 确保打乱后的词与原词不同
        while shuffled == word:
            shuffled = shuffle_word(word)
        print(f"\n打乱后的词语: {shuffled}")
        guess = input("你的猜测: ")
        if guess.lower() == word.lower():
            print("正确!")
            score += 1
        else:
            print(f"错误. 正确答案是: {word}")

    print(f"\n游戏结束! 你的得分: {score}/5")
    return score

def main():
    total_score = 0
    games_played = 0

    while True:
        total_score += play_game()
        games_played += 1
        
        play_again = input("\n是否再玩一局? (是/否): ")
        if play_again.lower() not in ['是', 'y', 'yes']:
            break

    print(f"\n游戏统计:")
    print(f"总局数: {games_played}")
    print(f"总得分: {total_score}")
    print(f"平均得分: {total_score / games_played:.2f}")

if __name__ == "__main__":
    main()

Python 官方文档

字符串的方法https://docs.python.org/zh-cn/3/library/stdtypes.html#string-methods

字符串格式化https://docs.python.org/zh-cn/3/library/string.html#format-specification-mini-language

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2077587.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL 集群技术全攻略:从搭建到优化(下)

目录 四.mysql高可用之组复制 (MGR) 1.组复制流程 2.组复制单主和多主模式 3.实现mysql组复制 五.mysql-router(mysql路由) 1.Mysql route的部署方式 六.mysql高可用之MHA 1.MHA架构图 2.为什么要用MHA? 3.MHA 的组成 4.什么是 MH…

网络 (tcp)

客户端 /*************************************************************************> File Name: client.c> Author: yas> Mail: rage_yashotmail.com> Created Time: Thu 22 Aug 2024 04:04:26 PM CST******************************************************…

从零开始学习SLAM六(单应矩阵)

本文参考:计算机视觉life 概念 单应性(homography)是指两个平面之间的一种保直线性的对应关系。如果一个平面上的点集经过某种变换后,在另一个平面上形成的新点集仍然保持原来的线性特性(如共线的点仍然共线&#xf…

一起搭WPF界面之View的简单设计一

一起搭WPF界面之View的简单设计一 1 前言2 界面预期设想3 基础的实现步骤3.1 界面划分3.1.1 基础框架代码:3.1.2 实现效果 4 界面花样设计4.1 花样设计4.2 界面源代码4.3 错误提醒4.3.1 错误14.3.2 错误2 总结 1 前言 基于上一篇的window、Gird、Border的简单介绍&…

XSS LABS - Level 13 过关思路

关注这个靶场的其他相关笔记:XSS - LABS —— 靶场笔记合集-CSDN博客 0x01:过关流程 进入靶场,老样子,右击,查看页面源码,找找不同: 可以看到,本关又多了一个新字段 t_cook&#xf…

关于 Vue/React 的 cli 中运用 webpack 打包的原理简单解析

webpack、webpack-cli的打包 关于 webpack 对前端工程中进行资源文件进行打包处理的过程中,运用到的核心插件主要是 webpack 和 webpack-cli,在 react 和 vue 对于打包各自工程中的 cli 则是进行了自定义的构建,专门用于项目打包的 …

【MySQL-25】万字总结<锁>——(全局锁&行级锁&表级锁)【共享锁,排他锁】【间隙锁,临键锁】【表锁,元数据锁,意向锁】

前言 大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《Lin…

Bytebase 2.22.2 - 允许在工作空间为群组分配角色

🚀 新功能 允许在工作空间给群组分配角色。 支持禁用邮箱密码登录,仅允许 SSO 登录的设置项。 新增 Postgres SQL 审核规则:禁止在列上设置会变化的默认值。 🔔 重大变更 下线项目内的变更历史页面;所有变更历史仍可…

Phoenix

Apache Phoenix 是一个开源的关系数据库层,运行在 Apache HBase 之上,旨在为 HBase 提供 SQL 查询能力和优化的存储引擎。它允许用户使用标准的 SQL 查询和事务语义来管理 HBase 中的数据,并且可以与现有的大数据生态系统无缝集成。Phoenix 通…

IOS开发 铃声制作(库乐队)

IOS开发,实现铃声制作功能。 在IOS端,要设置铃声都是通过库乐队来制作的。 先看一下库乐队中铃声的文件结构。下面是弄的一个示例的文件,文件信息如下: 我们右击文件,点击显示包内容如下: 能看到一个aiff格…

解决ssl certificates updated-生成环境中的实例

应原来小伙伴的要求,生产环境出错了,是harbor的ssl cert过期了,也因为使用的是免费的ssl证书,现在无法正常使用harbor,所以贴来了2023年1月曾经搭建的文档,希望能解决问题。^v^. -------------------------…

25 filedialog组件

Tkinter filedialog 组件使用指南 Tkinter 的 filedialog 组件提供了一个图形界面,用于打开和保存文件。它允许用户通过标准的文件选择对话框来选择文件,非常适合需要文件操作的GUI应用程序。以下是对 filedialog 组件的详细说明和一个使用案例。 file…

爆改YOLOv8 |YOLOv8融合SEAM注意力机制

1,本文介绍 SEAM(Spatially Enhanced Attention Module)是一个注意力网络模块,旨在解决面部遮挡导致的响应损失问题。通过使用深度可分离卷积和残差连接的组合,SEAM模块增强未遮挡面部的响应。深度可分离卷积在每个通…

Xshell 连接 Ubuntu 服务器失败问题(Connection failed)

目录 Xshell 连接 Ubuntu 服务器失败问题(Connection failed) 1.查看Ubuntu中是否安装 sshd 2.在Ubuntu中安装sshd 3.需要打开Ubuntu中新安装的sshd 4.在检查Ubuntu中sshd是否安装成功 5.临时关闭Ubuntu中的防火墙 6.Xshell 连接 Ubuntu 服务器成…

认知杂谈24

今天分享 有人说的一段争议性的话 I I 《人生逆袭的关键:开窍带来的转变》 在女人的生活里啊,最宝贝的东西可不是那些金银首饰啥的,也不只是那些起起落落的经历,更不是偶尔碰到的贵人帮忙。真正无价的,是在某个瞬间…

构建buildroot根文件系统

目录 1.确定gcc工具版本2.下载Buildroot源码并编译2.1 下载Buildroot源码2.2 配置Buildroot2.2.1 配置 Target options2.2.2 配置交叉编译工具链2.2.3 配置 System configuration2.2.4 配置 Filesystem images2.2.5 禁止编译 Linux 内核和 uboot2.2.6 编译Buildroot源码2.2.7 查…

Bootloader中的PBL、SBL的区别

从0开始学习CANoe使用 从0开始学习车载车身 相信时间的力量 星光不负赶路者,时光不负有心人。 目录 1.概述2.BootloaderPBLSBL3.SBL存在意义4.PBL存在意义 1.概述 应用软件和应用数据可以同时编程或者相互独立编程,不允许Boot Loader在软件运行时被非法…

透明度测试

1、透明测试是用于处理哪种透明需求 在游戏开发中对象的某些部位完全透明而其他部位完全不透明,这种透明需求往往不需要半透明效果,相对比较极端,只有看得见和看不见之分比如树叶、草、栅栏等等。(即一张图除了主要物体有颜色,其…

<WPF> xaml代码如何使用c#编写

<Window x:Class"grid面板的使用.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expression/blend/2008&…

【Java】—— Java面向对象基础:编程实例(学生信息管理)

目录 场景描述 定义学生类 创建学生对象并处理需求 代码解析 总结 在Java中&#xff0c;面向对象编程&#xff08;OOP&#xff09;是一种常用的编程范式&#xff0c;它允许我们创建基于现实世界的模型&#xff0c;通过类和对象来模拟这些模型。今天&#xff0c;我们将通过…