Py学习  »  Python

在下面的问题中使用了python代码

ChÃrming ßoy • 5 年前 • 1098 次点击  

为下面的代码编写python代码(2.7版本),并解释逻辑,因为我不理解,请解释。

写一个算法输出给定天数后单元格的状态。

==================================================

输入

函数/方法的输入由两个参数组成:

states,表示单元格当前状态的整数列表;

天;代表天数的整数。

返回表示给定天数后单元格状态的整数列表。

注意

列表状态的元素仅包含0和1。

TESTCASES 1:
INPUT:
[1,0,0,0,0,1,0,0],1
EXPECTED RETURN VALUE:
[0,1,0,0,1,0,1,0]

TESTCASE 2:
INPUT:
[1,1,1,0,1,1,1,1,],2
EXPECTED RETURN VALUE:
[0,0,0,0,0,1,1,0]

==================================================================

def cellCompete(states,days):

    #write your code logic with explanation

    pass

==================================================================

我尝试了以下代码,但它给出了错误的输出:

def cellCompete(c,d):
     for _ in range(d):
          for i in range(8):
                n=c[i]
                if i>0 and i<7:
                    c[i]=0 if c[i+1]==a else 1
                elif i==0:
                                    c[i]=0 if c[i+1]==0 else 1
                            else:
                                      c[i]=0 if a==0 else 1
                    a=n
          return c;
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/57244
 
1098 次点击  
文章 [ 1 ]  |  最新文章 5 年前
quamrana
Reply   •   1 楼
quamrana    5 年前

您可以利用列表的索引 lis[-1] 环绕以访问最后一个元素。

此函数在末尾添加一个额外的非活动单元格,以使列表末尾的相邻单元格检查正常。

def cellCompete(c, d):
    c = c[:]
    for _ in range(d):
        q = [0] * len(c)
        c.append(0)
        for index in range(len(q)):
            next_state = 0 if c[index - 1] == c[index + 1] else 1
            q[index] = next_state

        c = q
    return c

作为两个测试用例输出。