【问题标题】:loops within a function函数内的循环
【发布时间】:2013-11-29 00:43:46
【问题描述】:

为什么计算机没有变成 x ?在它通过循环并找到列表中而不是选择的东西之后,它不应该将 x 的值分配给计算机吗?

def ComputerMove(gameboard):
    for x in list:
        if x not in picked and x in list:
            computer = x 



list =  ("b2", "a1", "c3", "a3", "c1", "a2", "b3", "b1", "c2")

gameboard = {0:' ', 1:' ', 2:' ',
         3:' ', 4:' ', 5:' ',
         6:' ', 7:' ', 8:' ',
         }
picked = ("b2", "a1", "c3", "a3")
ComputerMove(gameboard) 

【问题讨论】:

  • ComputerMove 应该返回/做什么?
  • 这只是回调函数,所以它可以实际运行

标签: function loops python-3.x


【解决方案1】:

首先,list 是一个类型/保留,因此您不能将其用作变量名。其次,你拥有的是一个元组,而不是一个列表。所以,我转换了这些,这段代码似乎可以工作:

def ComputerMove(gameboard):
    for x in l:
        if x not in picked:
            computer = x
            return computer # not sure what do you want to do with this value?



l =  ["b2", "a1", "c3", "a3", "c1", "a2", "b3", "b1", "c2"]

gameboard = {0:' ', 1:' ', 2:' ',
         3:' ', 4:' ', 5:' ',
         6:' ', 7:' ', 8:' ',
         }
picked = ["b2", "a1", "c3", "a3"]
ComputerMove(gameboard) 
>>c1

【讨论】:

  • 可以使用保留关键字作为变量名,但不建议这样做。
  • @SteinarLima IMO 不推荐。覆盖类型和关键字是 Python 中最大的禁忌,这就是为什么我经常告诉新手这是不允许的。仅仅因为口译员会让你,并不意味着它很好。例如,在 Py 2.x 中,您 can 可以做到 True, False = False, True 有理智的人会这样做吗? =)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-09
  • 1970-01-01
  • 2014-02-13
  • 2014-11-27
相关资源
最近更新 更多