如何利用python倒置所輸字符串的順序
python菜鳥(niǎo)一只,本文僅供自己記錄,所寫(xiě)代碼難免有貓餅,如有錯(cuò)誤以及可以改進(jìn)的地方,還請(qǐng)各位多多海涵,不吝賜教。
一、 目的
如題,用python將輸入的字符串倒置。
倒置情況如下
1. 輸入字符串(內(nèi)無(wú)空格)“abcd1234”
- 返回:“4321dcba”
2. 輸入一串英文單詞,進(jìn)行單詞內(nèi)部倒置:
- 輸入:“hello world”
- 返回:“olleh dlrow”
3. 輸入一串英文單詞,進(jìn)行單詞順序倒置:
- 輸入:“hello world”
- 返回:“world hello”
二、思路與方法
1. 首先明確
字符串有索引,字符串中第一個(gè)字符的索引為0,其他字符的索引按從左到右順序依次+1
- a b c d
- 0 1 2 3
如果按倒序進(jìn)行索引,則字符串中最后一個(gè)字符的索引為-1,其他字符的索引按從右到左的順序依次-1
- a b c d
- -4 -3 -2 -1
預(yù)期實(shí)現(xiàn)的是將【輸入】的字符串反轉(zhuǎn),需要明確,我們不知道輸入的字符串中一共有幾個(gè)字符。
于是用到for循環(huán),遍歷字符串中字符數(shù):
k = ""
m = 0
for i in a:
m -= 1
k += a[m]
print(k)其中i是遍歷的內(nèi)容,但是我們不需要這些字符,于是沒(méi)有用到i。m為字符串的索引。
k為空字符串,用來(lái)裝倒置結(jié)果。
字符串的拼接用運(yùn)算符即可。
(以上內(nèi)容可以封裝為一個(gè)函數(shù),后面的內(nèi)容就可以用到這個(gè)函數(shù)了)
def re(a):
# 將輸入的字符串倒置
m = 0
k = ""
for i in a:
m -= 1
k += a[m]
return k2. 單詞內(nèi)部倒置是以“空格”為間隔進(jìn)行倒置
這次需要用到兩個(gè)空的字符串k1和k2。
依然用for循環(huán)進(jìn)行遍歷,不過(guò)這時(shí)候因?yàn)槲覀兗恿艘粋€(gè)條件:空格
這里就要用if條件語(yǔ)句
即:在遇到空格之前,我的字符串要完整保留,因?yàn)檫@是一個(gè)完整的單詞,并把字符放到空字符串中,方便字符串倒置;在遇到空格的時(shí)候我要干什么呢?
首先,k1中已經(jīng)有了一個(gè)完整的單詞,我需要將其倒置
于是我將k1作為參數(shù),放在函數(shù)re中,并得到一個(gè)結(jié)果,這個(gè)結(jié)果放到另一個(gè)空字符串k2中
k2是一個(gè)字符串,單詞之間要有空格,于是在k2后面再加上一個(gè)空格字符
此時(shí)k1中還放著未倒置的單詞,我需要用它在后面的循環(huán)中裝新的單詞,舊的單詞就不需要了,于是可以將k1重新賦值為空字符串
輸入到這里,發(fā)現(xiàn),最后一個(gè)單詞的末尾沒(méi)有空格,if條件句就執(zhí)行了一半,最后一個(gè)單詞沒(méi)有倒置,也沒(méi)有輸出
怎么辦?
此時(shí)k1中放著的是最后一個(gè)單詞,再用一次re函數(shù),并用運(yùn)算符加在k2上即可
代碼如下:
k1 = ""
k2 = ""
for x in w:
if x != " ":
k1 += x
else:
k2 += re(k1)
k2 += " "
k1 = " "
k1 = re(k1)
k2 += k1
print(k2)3. 輸入一段英文
(可以是句子,句子后面沒(méi)加標(biāo)點(diǎn))將這段英文中的單詞順序倒置
上面兩個(gè)是遍歷每一個(gè)字符,將每個(gè)字符分批倒置,這次是將數(shù)量不等的字符作為一個(gè)整體變換順序。
即:將字符串按照空格切分,形成多個(gè)字符串,并倒置字符串的順序
問(wèn)題:如何放置數(shù)量不等的字符串?
答:一個(gè)空列表
問(wèn)題:列表?列表怎么輸出字符串呢?
答:列表只是一個(gè)過(guò)渡的工具,按照索引來(lái)把列表中的字符串放到空字符串中,輸出的也是一條字符串。但別忘了空格哦
所以創(chuàng)建一個(gè)函數(shù):
def put(a):
# 將輸入字符串按照空格進(jìn)行分隔,打包成列表
k1 = ""
k2 = []
for i in a:
if i != " ":
k1 += i
else:
k2.append(k1)
k1 = ""
k2.append(k1)
return k2結(jié)尾依然是最后一個(gè)單詞要手動(dòng)添加
這樣我們就可以按照之前的思路進(jìn)行倒置:
sent = str(input("輸入一段英文,進(jìn)行句子反轉(zhuǎn):"))
sent1 = put(sent)
string = ""
m = 0
for i in sent1:
m -= 1
string += sent1[m]
string += " "
print(string)為什么沒(méi)用re函數(shù)呢?
其實(shí)可以用,但是缺少了一點(diǎn)
re里沒(méi)有在單詞后面加空格。
輸出的結(jié)果也就沒(méi)有空格。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)二分查找與bisect模塊詳解
二分查找又叫折半查找,二分查找應(yīng)該屬于減治技術(shù)的成功應(yīng)用。python標(biāo)準(zhǔn)庫(kù)中還有一個(gè)灰常給力的模塊,那就是bisect。這個(gè)庫(kù)接受有序的序列,內(nèi)部實(shí)現(xiàn)就是二分。下面這篇文章就詳細(xì)介紹了Python如何實(shí)現(xiàn)二分查找與bisect模塊,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-01-01
玩轉(zhuǎn)Python發(fā)短信的實(shí)現(xiàn)
用Python實(shí)現(xiàn)發(fā)短信功能,當(dāng)監(jiān)控到問(wèn)題出現(xiàn)時(shí),短信報(bào)警,使問(wèn)題能得到及時(shí)的處理。當(dāng)然,我相信,用Python發(fā)短信應(yīng)用場(chǎng)景不止此一處,下面我們開(kāi)始Python發(fā)短信的實(shí)現(xiàn),感興趣的朋友參考下吧2022-01-01
Python使用PyAutoGUI實(shí)現(xiàn)桌面自動(dòng)化的實(shí)戰(zhàn)指南
在現(xiàn)代辦公和開(kāi)發(fā)環(huán)境中,我們常常被大量重復(fù)性的桌面操作所困擾,本文主要和大家詳細(xì)介紹一下Python如何使用PyAutoGUI實(shí)現(xiàn)桌面自動(dòng)化功能,感興趣的小伙伴可以了解下2026-01-01
使用Python自建輕量級(jí)的HTTP調(diào)試工具
這篇文章主要為大家詳細(xì)介紹了如何使用Python自建一個(gè)輕量級(jí)的HTTP調(diào)試工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下2025-04-04
在PyCharm中高效使用遠(yuǎn)程文件編輯功能的實(shí)現(xiàn)
PyCharm作為業(yè)界領(lǐng)先的集成開(kāi)發(fā)環(huán)境(IDE),提供了強(qiáng)大的本地和遠(yuǎn)程開(kāi)發(fā)功能,本文詳細(xì)介紹了如何在PyCharm中使用遠(yuǎn)程文件編輯功能,希望能夠幫助你提高遠(yuǎn)程開(kāi)發(fā)的效率和體驗(yàn)2024-08-08
Python對(duì)ElasticSearch獲取數(shù)據(jù)及操作
這篇文章主要為大家詳細(xì)介紹了Python對(duì)ElasticSearch獲取數(shù)據(jù)及操作,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
CentOS下Python3的安裝及創(chuàng)建虛擬環(huán)境的方法
這篇文章主要介紹了CentOS下Python3的安裝及創(chuàng)建虛擬環(huán)境的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11
Python實(shí)現(xiàn)貪吃蛇小游戲(單人模式)
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)單人模式的貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09

