我正在創建一個世界游戲,我不希望我的游戲接受用戶的重復輸入,例如:'mirror'。
我嘗試以一種方式查找重復項,但沒有成功,而且我不知道如何讓我的程式意識到 inout 是重復項。
這是我的非作業代碼:
def checkForDuplicates(userWord):
duplicates=[]
return True
我嘗試將此陳述句設定為 true,如果找到任何重復項但它不起作用,我希望該函式檢查用戶單詞是否有重復字母,如果有重復項,則函式回傳 True,否則函式回傳 False。
這也是python編程語言
uj5u.com熱心網友回復:
這里的問題是你的return陳述句嵌套在你的for回圈中,所以它總是在檢查第一個字母后回傳。您可以將 in 移動return到一個else陳述句中,以便它True在找到第一個重復字母后回傳,然后return False在它一直通過 for 回圈之后放置而不會遇到任何重復。(沒有return False它會回傳None,這也是一個錯誤的值)
- 注意:我更改了大小寫以適應 Python 標準
這是一個可運行的示例
#!/usr/bin/env python
def check_for_duplicates(user_word):
duplicates=[]
for dup in user_word:
if dup not in duplicates:
duplicates.append(dup)
else:
return True
return False
print(f'{check_for_duplicates("mirror")=}')
print(f'{check_for_duplicates("marine")=}')
<script src="https://modularizer.github.io/pyprez/pyprez.min.js" theme="darcula"></script>
uj5u.com熱心網友回復:
如您想知道字串中是否有重復字符,我們可以遍歷字串的每個字符,并使用 stringcount(c)函式檢查是否有另一個重復字符。
我已經制作了您需要的代碼:
def checkForDuplicates(userWord):
for char in userWord:
if userWord.count(char) > 1:
return True
return False
uj5u.com熱心網友回復:
其他答案已經確定了回圈中的問題。或者,如果您想嘗試set()函式呼叫。
這可能是一種更簡單更優化的方法,因為set()它比運行 python 回圈更快。
def has_duplicates(string):
return len(set(string)) < len(string)
輸出:
print(has_duplicates("Mirror")) # True
print(has_duplicates("Hello world")) # True
print(has_duplicates("Helo")) # False
uj5u.com熱心網友回復:
你正在犯一些非常簡單的錯誤。
Return True 應該在 else 陳述句而不是 if 陳述句中。此外,如果 for 回圈結束并且未回傳 True,則您需要程式回傳 False。
您可以像這樣實施這些建議:
def checkForDuplicates(userWord):
duplicates = []
for dup in userWord:
if dup not in duplicates:
duplicates.append(dup)
else:
return True
return False
輸出:
print(checkForDuplicates("mirror")) # returns true
print(checkForDuplicates("taco")) # returns false
編輯: Modularizer 也得到了與我完全相同的答案。
如果給定“鏡子”,則回傳真,如果給定“蛋糕”,則回傳假。我檢查了一堆其他值,這作業正常。
更好的實作方法
在我上面的代碼中,我只修改了您的代碼,但您最好采用不同的方式。
就像用戶 Faisal Nazik 建議的那樣,您所要做的就是:
def has_duplicates(string):
return len(set(string)) < len(string)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/527944.html
