我有一項任務是找出一個單詞是否以 o 開頭,以 at 或兩者結尾。為了查找它是開始還是結束,代碼作業正常。對于這兩個部分,它都不起作用,但我找不到問題。如果單詞以 o 開頭并以 t 結尾,它應該回傳 onetwo。
def one_two(word):
if word[0] == "o":
return "one"
if word[-1] == "t":
return "two"
if word[0] == "o" and word[-1] == "t":
return "onetwo"
assert (one_two("only") == "one")
assert (one_two("cart") == "two")
assert (one_two("o t") == "onetwo")
uj5u.com熱心網友回復:
您需要先檢查兩個條件是否都為真,否則兩個情況都不會執行:
def one_two(word):
if word[0] == "o" and word[-1] == "t":
return "onetwo"
elif word[0] == "o":
return "one"
elif word[-1] == "t":
return "two"
print(one_two("only") == "one")
print(one_two("cart") == "two")
print(one_two("o t") == "onetwo")
uj5u.com熱心網友回復:
你說回傳所以代碼不會繼續你可以嘗試以其他方式檢查它或者只是像這樣:
def one_two(word):
msg = ""
if word[0] == "o":
msg = "one"
if word[-1] == "t":
msg = "two"
return msg
assert (one_two("only") == "one")
assert (one_two("cart") == "two")
assert (one_two("o t") == "onetwo")
uj5u.com熱心網友回復:
如前所述,您需要先檢查最后一個條件,因為它同時檢查第一個和最后一個字母。請注意,您可以根據需要保留多個if陳述句,而不是切換到 use elif,因為return在任何情況下這些陳述句都會提前脫離函式。
def one_two(word):
try:
fw, *_, lw = word
except ValueError: # empty string, or string is too short
if not word:
return None
fw, lw = word, None
if (fw, lw) == ('o', 't'):
return 'onetwo'
if fw == 'o':
return 'one'
if lw == 't':
return 'two'
assert (one_two("only") == "one")
assert (one_two("cart") == "two")
print(one_two("o t"))
assert (one_two("o t") == "onetwo")
# edge cases
assert one_two('') is None
assert one_two('o') == 'one'
assert one_two('ot') == 'onetwo'
uj5u.com熱心網友回復:
def one_two(word):
if len(word) < 2:
return ''
else:
return {'o': 'one'}.get(word[0], '') {'t': 'two'}.get(word[-1], '')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/343727.html
標籤:Python
上一篇:如何將所有大寫字母修復為正常情況
