亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

問題以了解為什么代碼不起作用

問題以了解為什么代碼不起作用

慕哥6287543 2022-01-18 20:58:55
給定 2 個字符串 a 和 b,返回它們包含相同長度的 2 子字符串的位置數。所以 "xxcaazz" 和 "xxbaaz" 得到 3,因為 "xx"、"aa" 和 "az" 子字符串出現在兩個字符串中的相同位置。對于這個問題,我編寫了以下代碼:  def string_match(a, b):     result  = 0     tiniest = b     biggest = a     if len(a) < 2 or len(b) < 2:      return 0     if len(a) < len(b):       tiniest = a       print('tiniest is {} and size minus 1 equals   {}'.format(str(tiniest), len(tiniest)-1))       biggest = b     else:       tiniest = b       print('ELSE tiniest is {} and size minus 1 equals {}'.format(str(tiniest), len(tiniest) - 1))       biggest = a       for i in range(len(tiniest) - 1):         print(i)         if tiniest[i:i+2] == biggest[i:i+2]:             print('tiniest is {} and biggest is {} and i is   {}'.format(tiniest[i:i+2], biggest[i:i+2], i))             result = result + 1         else:            continue         print("result is ",result)     return result因此對于測試: string_match('helloooo', 'hello') 或 string_match('hello', 'hello') => 沒問題,函數按預期返回 4但是一旦第一個參數小于第二個參數,就不再起作用了,原因我不明白: string_match('hell', 'hello') => 什么都不做,為什么???我看不出我的解決方案與這個問題的官方解決方案之間的區別是:def string_match(a, b):    # Figure which string is shorter.    shorter = min(len(a), len(b))    count = 0    # Loop i over every substring starting spot.    # Use length-1 here, so can use char str[i+1] in the loop    for i in range(shorter - 1):        a_sub = a[i:i + 2]        b_sub = b[i:i + 2]        if a_sub == b_sub:            count = count + 1    return count 也可以 在函數的開頭初始化變量結果最小和最大嗎?
查看完整描述

1 回答

?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

這實際上是一個縮進問題。for 循環在 else 縮進中。將 for 循環放在 else 語句的同一級別,解決了它:


def string_match(a, b):

   result  = 0

   tiniest = b

   biggest = a

   if len(a) < 2 or len(b) < 2:

    return 0


   if len(a) < len(b):

     tiniest = a

     print('tiniest is {} and size minus 1 equals {}'.format(str(tiniest), len(tiniest)-1))

     biggest = b

   else:

     tiniest = b

     print('ELSE tiniest is {} and size minus 1 equals {}'.format(str(tiniest), len(tiniest) - 1))

     biggest = a



   for i in range(len(tiniest) - 1):

     print(i)

     if tiniest[i:i+2] == biggest[i:i+2]:

       print('tiniest is {} and biggest is {} and i is {}'.format(tiniest[i:i+2], biggest[i:i+2], i))

       result = result + 1

     else:

       continue

   print("result is ",result)

   return result


查看完整回答
反對 回復 2022-01-18
  • 1 回答
  • 0 關注
  • 193 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號