Pycharm(十一):字符串练习题

1.输入一个字符串,打印所有偶数位上的字符(下标是0,2,4,6...位上的字符)

# 练习题1:输入一个字符串,打印所有偶数位上的字符(下标是0,2,4,6...位上的字符)
# 1.键盘录入字符串,并接收.
s1=input('请输入一个字符串:')
# 2. 通过for循环,获取字符串中每个字符的索引。
for i in range(len(s1)):
#3.判断当前的索引值是否是偶数,如果是,就输出该字符。if i%2==0:print(s1[i])
#简化版:
for i in range(0,len(s1),2):print(s1[i])
print(s1[::2])

2:给定一个文件名,判断其尾部是否以".png"结尾

思路1.rfind()  子串在字符串中最后一次出现的位置

思路2.字符串切片

细节:两种极端情况

  1)abc.txt.png.xlsx.png,所以不能直接用find

  2)文件名为'.png',在某些项目开发中为非法的文件名,所以要判断字符串长度是否大于4

 思路1.

#1.定义变量,记录文件名
file_name='abc.png.txt.png'
file_name='.png'
# 思路1.rfind() 子串在字符串中最后一次出现的位置 abc.png.txx.png
#细节:考虑直接写.png这种情况,它不是合法的文件名
if file_name.rfind('.png')==len(file_name)-4 and len(file_name)>4:print(f'文件名{file_name}是以.png结尾的')
else:print(f'文件名{file_name}不是以.png结尾的')

思路2.

file_name='.png'
#思路2.切片实现
if file_name[-4:]=='.png' and len(file_name)>4:print(f'文件名{file_name}是以.png结尾的')
else:print(f'文件名{file_name}不是以.png结尾的')
print('-'*40)

3.模拟用户登录,只给3次机会

#1.定义变量,记录正确的账号和密码,注意:这里只是模拟,实际开发中,这样的数据是存储在数据库中的。
user_name,password='adm01','pwd111'
#2.因为不知道用户多少次能录入正确,用循环,因为次数固定,所以用for循环
for i in range(3):#3.提示用户录入账号、密码,并接收user_input=input("请输入您的账号:")pwd_input=input("请输入您的密码:")#4. 判断是否登录成功if user_input==user_name and password==pwd_input:print(f'登录成功,欢迎您:{user_name}')breakelse:# #走这里,说明登录失败,判断是否还有试错机会# if i==2:#     print('账号或密码录入错误次数已达上限,请与管理员联系!')# else:#     print(f'账号或密码错误,您还有{2-i}次机会,请重新录入!')print('账号或密码录入错误次数已达上限,请与管理员联系!' if i==2 else f'账号或密码错误,您还有{2-i}次机会,请重新录入!')

4.字符串反转3种实现方法

需求:键盘录入一个字符串,对其内容进行反转,并打印结果。

思路1.切片

#1.提示用户录入字符串,并接受
s1=input('请输入一个字符串:')
#思路1.使用切片
s2=s1[::-1]
print(f'反转后的字符串为:{s2}')

思路2.把字符串转成列表,然后交换列表交换 列表 可变数据类型,交换次数为列表总长的一半,首尾交换,索引i和列表长度-i交换。

单变量

如图所示,核心就是将索引为i和len(s)-1-i的两个元素进行交换,长度为len(s)//2

若len(s)为奇数,则中位数的元素不动,其它的元素全部交换一遍;

若len(s)为偶数,则所有的元素全部首尾交换一遍

#思路2.把字符串转成列表,然后交换列表交换  列表 可变数据类型,交换次数为列表总长的一半,首尾交换,索引i和列表长度-i交换
list1=list(s1)
n=len(list1)
for i in range(n//2):list1[i],list1[n-1-i]=list1[n-1-i],list1[i]
# s2=str(list1)
s3=''.join(list1)
print(f'反转后的字符串为:{s3}')

思路3.把字符串转成列表,然后交换列表交换 完成列表首尾交换,即start和end交换

引入双变量,对应的start和end,start向后移动,end向前移动,直到start>=end时,跳出循环

#思路3.把字符串转成列表,然后交换列表交换  完成列表首尾交换,即start和end交换
list2=list(s1)
i=0
j=len(list2)-1
while i<j:list2[i],list2[j]=list2[j],list2[i]i=i+1j=j-1
s4=''.join(list2)
#打印反转后的结果
print(f'反转后的字符串为:{s4}')

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

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

相关文章

虚幻5入门

常用操作 运行时&#xff0c;调试相机&#xff0c;按~键&#xff0c;输入ToggleDebugCamera 。进入自由视角 常用节点 gate节点&#xff1a;用于控制该流程通不通&#xff0c;执不执行。Flip Flop节点&#xff1a;反转执行&#xff0c;一次A&#xff0c;一次B。Set Timer by…

Prompt Flow 与 DSPy:大型语言模型开发的未来

作为一名大模型算法工程师&#xff0c;我一直在探索如何更高效地开发和优化基于大型语言模型&#xff08;LLM&#xff09;的应用程序。随着模型规模的不断扩大和应用场景的日益复杂&#xff0c;传统的开发方式已经难以满足高效、灵活和可扩展的需求。幸运的是&#xff0c;Promp…

Prompt攻击是什么

什么是Prompt攻击 Prompt攻击(Prompt Injection/Attack) 是指通过精心构造的输入提示(Prompt),诱导大语言模型(LLM)突破预设安全限制、泄露敏感信息或执行恶意操作的攻击行为。其本质是利用模型对自然语言的理解漏洞,通过语义欺骗绕过防护机制。 Prompt攻击的精髓:学…

Python 数据类型 - 集合(set)

Python 数据类型 - 集合(set) 1. 集合简介 集合(set)是Python中的一种无序、可变、不重复元素的容器数据类型。集合的主要用途&#xff1a; 快速成员检测&#xff08;判断元素是否存在&#xff09;去除重复项执行数学集合运算&#xff08;并集、交集、差集等&#xff09; 2.…

Profibus DP主站转Modbus TCP网关配置文件制作

Profibus DP主站转Modbus TCP网关配置文件制作 1、首先打开配置文件制作软件SST Profibus Configuration&#xff1a; 2、点击“Library”选择GSD文件所在文件夹找到后点击打开导入GSD文件: 3、点开Masters、molex选择主站设备&#xff1a; 4、双击添加后地址保存默认0就可以&…

如何批量拆分Excel工作表或按行拆分Excel表格 - Excel拆分器使用方法

在数据分析和处理的日常工作中&#xff0c;Excel文件因其强大的数据管理和计算能力而广受欢迎。然而&#xff0c;当面对庞大的Excel工作簿&#xff0c;特别是需要将其拆分为多个独立文件时&#xff0c;传统的操作方法往往会显得繁琐且效率低下。为了解决这一难题&#xff0c;Ex…

JavaScript基础-移动端常见特效

随着移动互联网的发展&#xff0c;为移动设备优化的网页变得越来越重要。JavaScript在实现移动端特有的交互体验中扮演着关键角色。本文将介绍几种常见的移动端特效&#xff0c;并通过具体的代码示例展示如何使用JavaScript和相关技术来创建这些特效。 一、手势识别 &#xf…

ui-tars和omni-parser使用

ui-tars部署和训练 说明快速开始环境准备ui-tars web推理和训练ui-tars api部署omni-parser使用 说明 镜像中包含ui-tars、llama-factory和omni-parser。该镜像还在审批中&#xff0c;估计明天可以上线&#xff0c;到时候可以在auto-dl中的社区镜像搜索。 快速开始 使用auto…

TF-IDF——自然语言处理——红楼梦案例

目录 一、红楼梦数据分析 &#xff08;1&#xff09;红楼梦源文件 &#xff08;2&#xff09;数据预处理——分卷实现思路 &#xff08;3&#xff09;分卷代码 二、分卷处理&#xff0c;删除停用词&#xff0c;将文章转换为标准格式 1.实现的思路及细节 2.代码实现&#…

【NLP 面经 5】

难以承受的东西只会让我在下一次更平静的面对 —— 25.4.2 一、NER任务&#xff0c;CRF模型改进 命名实体识别&#xff08;NER&#xff09;任务中&#xff0c;你使用基于条件随机场&#xff08;CRF&#xff09;的模型&#xff0c;然而模型在识别嵌套实体和重叠实体时效果不佳&a…

机器学习之回归算法

《数据挖掘技术与应用》 【实验名称】 实验&#xff1a;回归算法 【实验目的】 1.了解回归算法理论基础 2.平台实现算法 3. 编程实现分类算法 【实验原理】 线性回归是利用数理统计中回归分析&#xff0c;来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法&…

Cline源码分析

Cline源码分析 --- vscode插件开发与cline的界面系统 vscode插件开发基础知识开发基础‌核心概念核心API调试与发布调试 学习路线React开发界面前端代码分析package.jsonview/title&#xff08;视图标题栏菜单&#xff09;‌editor/title&#xff08;编辑器标题栏菜单&#xff…

k8s EmptyDir(空目录)详解

1. 定义与特性 emptyDir 是 Kubernetes 中一种临时存储卷类型&#xff0c;其生命周期与 Pod 完全绑定。当 Pod 被创建时&#xff0c;emptyDir 会在节点上生成一个空目录&#xff1b;当 Pod 被删除时&#xff0c;该目录及其数据会被永久清除。它主要用于同一 Pod 内多个容器间的…

【idea】实用插件

SonarLint SonarLint&#xff1a;代码质量扫描工具 使用 SonarLint 可以帮助我们发现代码的问题,并且还提供了相应的解决方案. 对于每一个问题&#xff0c;SonarLint 都给出了示例&#xff0c;还有相应的解决方案&#xff0c;教我们怎么修改&#xff0c;极大的方便了我们的开发…

【mysql 的安装及使用】

MySQL 9.0 一、下载MySQL[MySQL 9.0 下载] [(https://dev.mysql.com/downloads/mysql/)选择自定义,选择合适安装路径二、检查安装情况配置环境变量打开命令行查看版本创建数据库在MySQL中,可以使用create database语句来创建数据库。以下是创建一个名为my_db的数据库的示例:…

leetcode118.杨辉三角

思路源自 【LeetCode 每日一题】118. 杨辉三角 | 手写图解版思路 代码讲解 class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> result new ArrayList<>();for (int i 0; i < numRows; i) {List<…

【git】git pull 和 git rebase

git pull 和 git rebase 都是 Git 中用于同步代码的命令&#xff0c;但它们的工作方式和适用场景有显著区别。以下是两者的详细对比&#xff1a; 1. 核心区别 特性git pullgit rebase本质git fetch git merge&#xff08;默认&#xff09;将当前分支的提交“重新播放”到目标…

DIY搭建网站(学术个人介绍主页)

本教程介绍了如何创建并管理一个基于GitHub Pages的个人网站。首先&#xff0c;需要在GitHub上创建一个遵循特定命名规则的新仓库&#xff0c;例如用户名.github.io&#xff0c;以便建立个人站点。接着&#xff0c;通过Fork一个开源模板代码仓库并添加index.html文件来构建主页…

数据结构初阶:二叉树的前中后序三种遍历(递归的暴力美学)

想要实现二叉树的遍历可以创建一个链式结构的二叉树 回顾一下二叉树的概念&#xff0c;二叉树分为空树和非空二叉树&#xff0c;非空二叉树由根节点、根节点的左子树和根节点的右子树组成。 typedef char BTDataType; // 数据类型 typedef struct BinaryTreeNode {B…

WebUI问题总结

修改WebUI代码时遇到的一些问题以及解决办法 1. thttpd服务器环境的搭建 可参考《thttpd安装与启动流程》这一篇文章 其中遇到的问题有 thttpd版本问题&#xff1a;版本过旧会导致安装失败&#xff0c;尽量安装新版本thttpd的启动命令失败的话要加上sudo修改文件权限&#…