【问题标题】:Python: Check is each value is between/equal to 0 to 3 in the tuple?Python:检查元组中的每个值是否介于/等于 0 到 3 之间?
【发布时间】:2018-07-27 19:19:30
【问题描述】:

我需要以某种方式对此进行更改,以便我可以验证每个数字是否等于 0 或小于或等于 3。

def printPile(g):
    pile = g
    for i in range(len(pile)):
        a = (pile[0])
        b = (pile[1])
        c = (pile[2])
    print(a)
    print(b)
    print(c)

我的印象是我应该这样做,可以吗?:

def isStablePile(g):
    pile = g
    for x in range(len(pile)):
        if 0<=x<=3:
            print("True")
        else:
            print("False")

isStablePile([[0, 1, 2], [1, 2, 3], [2, 3, 0]]) 将是 g 的输入

【问题讨论】:

  • 你正在循环播放
  • 什么是g,你希望你的输出是什么样的?
  • g 是元组:([[0, 1, 2], [1, 2, 3], [2, 3, 0]])

标签: python list boolean tuples


【解决方案1】:

如果您只想打印每个元素一次,则您的选项卡关闭。改为这样做:

def printPile(g):
    pile = g
    for i in range(len(pile)):
        a = (pile[0])
        b = (pile[1])
        c = (pile[2])
    print(a)
    print(b)
    print(c)

【讨论】:

    【解决方案2】:

    你把事情复杂化了。您需要做的就是:

    g = ('1','2','3')
    print('\n'.join(g))
    

    或者用一个函数和一个例子:

    def printPile(g):
        print('\n'.join(g))
    
    g = ('1','2','3')
    printPile(g)
    

    返回

    1
    2
    3
    

    我将如何纠正你的例子?

    def printPile(g):
        for i in range(len(g)):
            print(g[i])
    

    或:

    def printPile(g):
        for i in g:
            print(i)
    

    【讨论】:

      【解决方案3】:

      或者,您可以让程序检查值是否在正确的范围内。

      piles = [[0, 1, 2], [1, 2, 3], [2, 3, 0]]
      are_piles_stable = all(0 <= pile <= 3 for pile in sum(piles, []))
      
      print(are_piles_stable) # prints True
      

      说明:

      首先,sum(piles, [])[[0, 1, 2], ...] 扁平化为[0, 1, 2, 1, 2, 3, 2, 3, 0]

      然后,all 检查以上列表中所有元素的0 &lt;= pile &lt;= 3 是否为True

      您不必为这样的短代码而努力。但它打算表明你有点过于复杂了。另外,既然可以让计算机为您完成,为什么还要将所有单独的值打印到屏幕上并自己分析呢?

      【讨论】:

        猜你喜欢
        • 2019-04-18
        • 1970-01-01
        • 2020-02-26
        • 1970-01-01
        • 2022-11-29
        • 2021-06-29
        • 1970-01-01
        • 2022-01-13
        相关资源
        最近更新 更多