回圈應該如何迭代。我是一個初學者,試圖根據幾年前的舊知識創建一個 Python 程式來向后列印一個單詞。它還做了一些其他的事情,但它們只是列印的陳述句,不會造成問題。這是我的代碼:
count = 0
while count < 100:
word_var = input("Enter ONE word with NO spaces:")
def split(word_var):
return list(word_var)
word_array = split(word_var)
m = 0
i = len(word_array)-1-m
print("The number of letters in your word is:", i)
while m < len(word_array):
if m < i:
word_array[m], word_array[i - m] = word_array[i - m], word_array[m]
m = m 1
else:
break
m = m 1
print(''.join(word_array))
count = count 1
print("You've typed:",count,"word(s).")
這是問題部分:
if m < i:
word_array[m], word_array[i - m] = word_array[i - m], word_array[m]
m = m 1
else:
break
m = m 1
我的主要問題是,當單詞長度超過五個字母時,第二個 while 回圈似乎沒有迭代。例如,如果我在程式中輸入“應該”這個詞,我會回傳dhouls.似乎只執行了一次字母交換。我認為這是嵌套 while 回圈中的 if 陳述句的問題,但我似乎找不到它有什么問題。我仔細勾勒出我認為 if 陳述句在所附照片中的作業原理。
uj5u.com熱心網友回復:
你的if條件不對。您想比較將在串列中使用的兩個索引,但第二個不是i,而是i-m。所以改成:
if m < i - m:
這可以糾正您的問題。應該注意的是,在 Python 中,您可以像這樣反轉字串:
print(word_var[::-1])
uj5u.com熱心網友回復:
有兩個問題:
字母的計數不正確。你應該只輸出
word_array.你迭代
while回圈太多次了。m您應該在等于或超過時終止它len(word_array) // 2。否則,您將反轉字母并取回原始單詞。
i = len(word_array)-1
print("The number of letters in your word is:", len(word_array))
while m < len(word_array) // 2:
word_array[m], word_array[i - m] = word_array[i - m], word_array[m]
m = m 1
這輸出:
Enter ONE word with NO spaces:should
The number of letters in your word is: 6
dluohs
You've typed: 1 word(s).
uj5u.com熱心網友回復:
我喜歡你的專案并感謝你的努力。這是使用串列變數和insert()方法反轉字串的另一種方法。word_array = []
word_var = input('Your word : ')
word_array = []
for c in word_var:
word_array.insert(0, c)
word_reversed = ''.join(word_array)
print(word_var, '->', word_reversed)
輸出 :
should -> dluohs
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/476536.html
