嘗試為輸入字串創建三角形列印模式會導致以下問題。這是代碼:
string=input("Please enter your word: ")
printable=""
l=0
while l<len(string):
for i in string:
printable =i
print(printable)
l =1
q=0
while q!=len(string):
for z in string:
string=string.replace(string[-1],"")
if string=="":
break
print(string)
對于僅包含一個單詞(“Python”)的輸入,它可以正常作業并列印出:
P
Py
Pyt
Pyth
Pytho
Python
Pytho
Pyth
Pyt
Py
P
當輸入一個在單詞之間有空格的字串(“Elvis Presley”)時,問題就開始了:
E
El
Elv
Elvi
Elvis
Elvis
Elvis P
Elvis Pr
Elvis Pre
Elvis Pres
Elvis Presl
Elvis Presle
Elvis Presley
Elvis Presle
Elvis Prsl
Evis Prs
Evi Pr
Evi P
Evi
Evi
Ev
E
很可能是因為當它回傳 Pres"l" 時,它也洗掉了 Elvis 中的 "l"。我該如何解決?如果你能幫助我會很高興。謝謝!
uj5u.com熱心網友回復:
這與多個單詞無關,問題是字串中有重復字符時。string.replace(string[-1],"")將洗掉最后一個字符的所有出現。因此,當最后一個字符是 時l,它也會洗掉lin Elvis。
使用切片洗掉最后一個字符,而不是replace().
string = string[:-1]
uj5u.com熱心網友回復:
實際上,它也不適用于單個單詞字串。如果我輸入“香蕉”,輸出是:
B
Ba
Ban
Bana
Banan
Banana
Bnn
B
當程式到達重復字符時,它將被從任何地方洗掉。
uj5u.com熱心網友回復:
問題出在您的第二個回圈string=string.replace(string[-1],"")中。如果替換字串的最后一個字符,則替換所有實體。所以'Elvis Presle'.replace('e', '')導致"Elvis Prsl".
而不是replace使用索引 - string = string[:-1]。
PS您可以像這樣簡化遍歷字串:
while string:
string = string[:-1]
print(string)
uj5u.com熱心網友回復:
問題出在
string=string.replace(string[-1],"")
它將字母替換為空,因此當找到字母“e”時,所有字母都會像字母“l”一樣被洗掉。您可以使用索引而不是字母。
l=0
while l<len(string) 1:
print(string[:l])
l =1
這意味著從左到右逐個字母。然后你可以使用切片方法的反向。string[:-1] 表示直到最后一個字母。
l=1
while l<len(string) 1:
print(string[:l*-1])
l =1
因此,整個代碼將是:
string=input("Please enter your word: ")
l=0
while l<len(string) 1:
print(string[:l])
l =1
l=1
while l<len(string) 1:
print(string[:l*-1])
l =1
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/510263.html
