自定义函数实现基因编码问题

img


我想问问这个例子,根据要求是怎么得出来的呀?代码该怎么写
看不懂QAQ

望采纳!谢谢


def coding(s):
    n = len(s)
    #print(n)
    if s.count("0" ) == n:
        return 'A'
    elif s.count('1') == n:
        return 'B'
    else:
        return 'C'  + coding(s[:n//2]) + coding(s[n//2:])
    
s = input()
print(coding(s))


代码写出来都一样,主要是要理解递归函数的原理:基准条件和递归条件。
拿本例来说,

  1. 全0或全1的字符串就不用再拆分比较了,直接得出"A"或"B",这就是基准条件。
  2. 不是全0或全1的字符串就需要按照题目说的那样,先一分为二,看看两边是不是全0或全1(基准条件),再在左边加上"C",这就是递归条件。
  3. 在递归条件里放上字符串的组合,就是 “C+判断左边是否基准条件+判断右边是否基准条件”,然后如果得不出结果就继续向下一分为二,直到得到基准条件的值"A"或"B",再一层层向上返回。
    代码如下:
    ```python
    def coding(s):
    n = len(s)
    if s.count('0')==n:
     return 'A'
    
    elif s.count('1')==n:
     return 'B'
    
    else:
     return ('C'+coding(s[:n//2])+coding(s[n//2:]))
    

s = input('请输入一个Kitty猫基因的01字符串:').strip()
print('这个Kitty猫基因的ABC编码是:{}'.format(coding(s)))
```