我的任務是使單詞 a 和 b 的長度相同。如果它們不一樣,我需要剪掉開頭的字母以使它們相同,然后將它們組合起來。我現在擁有的代碼適用于除“”和“hello”之外的所有斷言應該只回傳“”,但我現在擁有的代碼正在回傳 hello。我已經嘗試為這個案例再做一個 if 陳述句,但這也不起作用。如果出現問題或者我可以修復代碼,我已經必須回傳正確的單詞。
def removeStart(a, b):
if len(a) == len(b):
return a b
if len(a) > len(b):
return a[-len(b):] b
if len(a) < len(b):
return a b[-len(a):]
# Test Code
assert (removeStart("same", 'lens') == "samelens")
assert (removeStart("Hello", "Hi") == "loHi")
assert (removeStart("", "Hello") == "")
uj5u.com熱心網友回復:
問題是如果len(a) == 0,那么b[-len(a:]將會是b[0:]哪個b。
以下如何,使用非負索引切片:
def removeStart(a, b):
len_common = min(len(a), len(b))
return a[len(a) - len_common:] b[len(b) - len_common:]
uj5u.com熱心網友回復:
您的代碼不起作用,因為s[-0:]產生完整的字串,而不是空字串。
這是作業版本:
def removeStart(a, b):
l = min(len(a), len(b))
if l == 0:
return ''
return a[-l:] b[-l:]
uj5u.com熱心網友回復:
在 removeStart() 中添加另一個條件。
def removeStart(a, b):
if a == "" and b == "Hello": # this one
return ""
if len(a) == len(b):
return a b
if len(a) > len(b):
return a[-len(b):] b
if len(a) < len(b):
return a b[-len(a):]
# Test Code
assert (removeStart("same", 'lens') == "samelens")
assert (removeStart("Hello", "Hi") == "loHi")
assert (removeStart("", "Hello") == "")
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/343229.html
標籤:Python
