Python如何将给定字符串中的大写英文字母按以下对应规则替换
作者:硕子鸽 发布时间:2021-04-23 13:47:48
问题描述
输入样例:
Only the 11 CAPItal LeTtERS are replaced
输出样例:
Only the 11 XZKItal OeGtVIH are replaced
解题思路
首先想到的是使用字典匹配字符然后遍历替换,其次想到的是使用ASCLL码,后者更为方便简单。
思路一
inp = input()
dist = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
'N' 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
for i in inp:
if i in dist:
index = dist.index(i)
inp = inp.replace(i, dist[-index - 1])
print(inp)
思路二
str = input()
for i in str:
num = ord(i) # 得到ASCII码
if (65 <= num <= 90): # 如果是大写字母
str = str.replace(i, chr(155 - num))
print(str)
遇到的问题:
在思路二中,我之前的代码是这样的:
str = input()
def replace(str):
for i in str:
num = ord(i) # 得到ASCII码
if (num >= 65 & num <= 90): # 如果是大写字母
i = chr(155 - num)
return str
replace(str)
print(str)
后来意识到 i 只是一个变量,转瞬即逝,我并没有把它存住。
然后想到的用 replace()函数:
str = input()
for i in str:
num = ord(i) # 得到ASCII码
if (65 <= num <= 90): # 如果是大写字母
str.replace(i, chr(155 - num))
print(str)
但是还是不对,因为我没有存储 replace()函数的返回值,导致虽然替换了,但是没有存储它,所以结果没有变化。
最终的代码就是上的那个了,看起来完美无缺,但是全部都是做的,为什么?
输入:
Only the 11 CAPItal LeTtERS are replaced
输出:
Only the 11 XZKItal OeGtVIH are replaced
可以看到除了第一个 O 之外其他的都对,那为什么 O 没有换呢?
其实它换了,只是换了两次,负负得正,又回来了。
因为 replace()方法会把字符串中所有符合条件的字母替换掉。
比如输入 OL ,我们想要的结果为 LO,但上述代码实际上输出的是 OO;
第一次循环把 O 替换成了 L ,此时字符串为 LL;
第二次循环,把所有的 L 都替换成了 O,所以输出结果为 OO。
解决方案:
首先想到的是定义一个对象存储当前的值和一个标记,替换之前先看它是否被访问过了,如果被访问过了就跳过。
还有一种方法就是拼接字符串,让 replace 方法只作用于当前字符。
最终答案
str = input()
newStr = ''
for i in str:
num = ord(i) # 得到ASCII码
if (65 <= num <= 90): # 如果是大写字母
i = i.replace(i, chr(155 - num))
newStr += i
print(newStr)
还有更简单的方法:
str = input()
newStr = ''
for i in str:
if i.isupper():
newStr += chr(155 - ord(i))
else:
newStr += i
print(newStr)
python实现26个英文字母按规则输出
import string
n=eval(input())
s=string.ascii_uppercase
for i in s:
print(i,end='')
if (s.find(i)+1)%n==0:
print()
来源:https://wangsuo.blog.csdn.net/article/details/104858307
猜你喜欢
- 这篇文章主要介绍了python isinstance函数用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- python里使用正则表达式的组嵌套实例详解由于组本身是一个完整的正则表达式,所以可以将组嵌套在其他组中,以构建更复杂的表达式。下面的例子,
- 本文介绍了网页运行代码框(runCode), 复制代码框(copyCode), 保存代码框(saveCode),的实现方法。javascri
- string操作在编程中具有极高的频率,那么string中有哪些有用的方法呢?使用strings直接操作Comparefunc Compar
- 本文实例讲述了python使用any判断一个对象是否为空的方法。分享给大家供大家参考。具体实现代码如下:>>> eth =
- 块级元素块级元素生成一个元素框,(默认地)它会填充其父级元素的内容,旁边不能有其他元素。换句话说,他在元素框之前和之后生成了“分隔”符。我们
- django版本:1.4.21。一、准备工作1、新建项目和app[root@yl-web-test srv]# django-admin.p
- 本文实例为大家分享了python实现五子棋游戏的具体代码,供大家参考,具体内容如下# -*- coding:utf-8 -*-# @Time
- 本文研究的主要是python PIL实现图片合成的相关内容,具体介绍如下,分享实例代码。在项目中需要将两张图片合在一起。遇到两种情况,一种就
- 从今天开始,我将全面的共享出我所能理解的所有WEB标准方面的知识放在这个“WEB标准能有多难?”的专栏里。当然由于振之的水平有限,所讲并非是
- 关于段落<p></p>相信大家已经都在自己的工作中开始关注并应用了。因为那真的是非常简单的事,只要你愿意你随时都可以
- 维护是什么,维护就是修改,不断的修改,但是要保证你的html和css有清晰的版本界定,有扩展性,不要因为做的太死而重新去做这个页面。一个赚钱
- 本文实例讲述了php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法。分享给大家供大家参考,具体如下:微信支付a
- 这几天无聊的很看着china.nba.com焦点图效果捣鼓了一下有待完善!兼容性:IE6 , IE7 &nb
- 导语还记得那些年,我们玩过的Windows小游戏吗?说起Windows自带的游戏,相信许多80、90后的朋友都不陌生。在很早的那个游戏贫瘠的
- Django中上传文件方式。如何实现文件上传功能?1创建项目uploadfile:创建app:front项目设置INSTALLED_APPS
- 使用tf.keras.MaxPooling1D出现错误错误如下ValueError: Negative dimension size cau
- 一个等号 =:表示赋值 ;两个等号 ==:先转换类型再比较 ;三个等号 ===:先判断类型,如果不是同一类型直接false。
- 很多人对于CSS都是边干边学习,因为它不像C#之类的语言那么复杂,看起来似乎挺简单,然而正是这种对CSS的不完整的理解,导致了许多的CSS代
- 在这之前我们先回顾以前用php导出excel,我直接写成方法在这里:public static function phpExcelList(