def print_guessed(secret_word): new_word = secret_word for i in new_word: i = "-" return new_wordprint print_guessed("claptrap")這只是打印拍手而不是--------如何解決?
3 回答

慕雪6442864
TA貢獻1812條經驗 獲得超5個贊
這應該解決它:
def print_guessed(secret_word): return '-'*len(secret_word)
您的代碼的問題是您試圖通過其索引來修改字符串。但是str
,Python中的對象不是可變的。您必須構造一個新的字符串。
請注意,此函數返回的結果與其他人提出的結果相同。但是,它更簡單(并且可能更快),因為它不需要循環。

四季花海
TA貢獻1811條經驗 獲得超5個贊
如果您正在尋找答案for loop而不是更高效的緊湊列表理解方法,則可以這樣做。對于初學者來說,最優雅的答案通常不容易理解(根據我的經驗),因此希望對您有所幫助。
def print_guessed(secret_word):
new_word = ''
for i in secret_word:
new_word += '-'
return new_word
print(print_guessed("claptrap"))
在上面,我們為變量中的new_word每個字符添加“-” (最初為空)secret_word。
正如許多人指出的那樣,字符串在Python中是不可變的。請注意,new_word在內的每次迭代中,都會為其分配一個新值(而不是通過索引進行修改)for loop。
添加回答
舉報
0/150
提交
取消