一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python如何將給定字符串中的大寫英文字母按以下對(duì)應(yīng)規(guī)則替換

Python如何將給定字符串中的大寫英文字母按以下對(duì)應(yīng)規(guī)則替換

2022-01-24 00:32碩子鴿 Python

這篇文章主要介紹了Python如何將給定字符串中的大寫英文字母按以下對(duì)應(yīng)規(guī)則替換,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

問題描述

Python如何將給定字符串中的大寫英文字母按以下對(duì)應(yīng)規(guī)則替換

輸入樣例:

Only the 11 CAPItal LeTtERS are replaced

輸出樣例:

Only the 11 XZKItal OeGtVIH are replaced

 

解題思路

首先想到的是使用字典匹配字符然后遍歷替換,其次想到的是使用ASCLL碼,后者更為方便簡(jiǎn)單。

思路一

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)

后來意識(shí)到 i 只是一個(gè)變量,轉(zhuǎn)瞬即逝,我并沒有把它存住。

然后想到的用 replace()函數(shù):

str = input()
for i in str:
  num = ord(i)  # 得到ASCII碼
  if (65 <= num <= 90):  # 如果是大寫字母
      str.replace(i, chr(155 - num))
print(str)

但是還是不對(duì),因?yàn)槲覜]有存儲(chǔ) replace()函數(shù)的返回值,導(dǎo)致雖然替換了,但是沒有存儲(chǔ)它,所以結(jié)果沒有變化。

最終的代碼就是上的那個(gè)了,看起來完美無缺,但是全部都是做的,為什么?

輸入:

Only the 11 CAPItal LeTtERS are replaced

輸出:

Only the 11 XZKItal OeGtVIH are replaced

可以看到除了第一個(gè) O 之外其他的都對(duì),那為什么 O 沒有換呢?

其實(shí)它換了,只是換了兩次,負(fù)負(fù)得正,又回來了。

因?yàn)?replace()方法會(huì)把字符串中所有符合條件的字母替換掉。

比如輸入 OL ,我們想要的結(jié)果為 LO,但上述代碼實(shí)際上輸出的是 OO;

第一次循環(huán)把 O 替換成了 L ,此時(shí)字符串為 LL;

第二次循環(huán),把所有的 L 都替換成了 O,所以輸出結(jié)果為 OO。

解決方案:

首先想到的是定義一個(gè)對(duì)象存儲(chǔ)當(dāng)前的值和一個(gè)標(biāo)記,替換之前先看它是否被訪問過了,如果被訪問過了就跳過。

還有一種方法就是拼接字符串,讓 replace 方法只作用于當(dāng)前字符。

 

最終答案

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)

還有更簡(jiǎn)單的方法:

str = input()
newStr = ''
for i in str:
  if i.isupper():
      newStr += chr(155 - ord(i))
  else:
      newStr += i
      
print(newStr)

 

python實(shí)現(xiàn)26個(gè)英文字母按規(guī)則輸出

import string
n=eval(input())
s=string.ascii_uppercase
for i in s:
print(i,end='')
if (s.find(i)+1)%n==0:
print()

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://wangsuo.blog.csdn.net/article/details/104858307

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 奇米影视7777久久精品 | 国产精品国产精品国产三级普 | 日本在线www | freesex 18 19处xx| 高中生喷水喷浆 | 2021国产麻豆剧传媒剧情动漫 | 国产拍拍视频一二三四区 | 窝窝影院午夜色在线视频 | 久久久久综合 | 狠狠色综合久久婷婷色天使 | 国产福利不卡一区二区三区 | 亚洲精品一区在线观看 | 99视频一区| 大陆性出航| 息与子中文字幕完整在线 | yy3341殇情影院理论片 | 99这里只有精品在线 | 成人欧美一区二区三区黑人 | 99久久精品国产免费 | 单身男女韩剧在线看 | 天天爽视频 | 大肥臀风间由美 中文字幕 大东北chinesexxxx露脸 | 亚洲国产精久久久久久久 | 男女男精品视频免费观看 | 亚洲四虎永久在线播放 | 亚洲网视频 | 2015台湾永久免费平台 | 国产性视频 | 高清国产在线观看 | 504神宫寺奈绪大战黑人 | 日本激情小说 | 美妇在男人胯下哀求 | 亚洲国产经典 | 欧美日韩高清完整版在线观看免费 | 日本福利片国产午夜久久 | 精品日韩欧美一区二区三区在线播放 | 四虎精品成人a在线观看 | 国产香蕉97碰碰久久人人 | 911亚洲精品国内自产 | 99免费精品视频 | 男人综合网 |