【问题标题】:Game: Nine Heads and Tails [closed]游戏:九头尾[关闭]
【发布时间】:2021-11-08 08:27:24
【问题描述】:

游戏说明: 九个硬币被放置在一个 3x3 的矩阵中,一些面朝上,一些面朝下。您可以用值 0(正面)和 1(反面)来表示硬币的状态。 ##(这里有一些例子:000 101 110 101 010 001 100 110 000 100 001 100)## 每个状态也可以用二进制数表示。 (例如,前面的矩阵对应的数字是:000010000 101001100 110100001 101110100)。 总共有 512 种可能性。因此,您可以使用十进制数 0、1、2、3、...、511 来表示矩阵的所有状态。

我的目标是编写一个程序,提示用户输入一个 0 到 511 之间的数字,并显示相应的 3x3 矩阵,其中包含字符 H 和 T。 ##(ex. "Enter a # between 0 and 511:" (7) 用户输入了 7,对应 000000111。由于 0 代表 H,1 代表 T,所以输出为: HHH HHH TTT) ##

我发现这有点复杂,所以如果有人能帮助我弄清楚如何开始或完成它,我将不胜感激。任何建议或提示表示赞赏!

【问题讨论】:

  • 你能澄清一个状态和它的数字之间的关系吗? 7如何对应000000111?
  • 第一步是接受用户输入的 0 到 511 之间的数字。你知道怎么做吗?
  • @Unsel binary 111 与十进制 7 相同。
  • Unsel,我不太确定。我给出的描述是我正在使用的一切,所以我不确定如何澄清。这是一个非常令人困惑的任务。
  • @JohnGordon 澄清了这一点。谢谢:)

标签: python list matrix multidimensional-array


【解决方案1】:
val = int(input("Enter your value:"))
if val>=0 and val<=511:
    for indx,i in enumerate(bin(val)[2:].zfill(9)):
        if i=='0':
            print("H",end=" ")
        else:
            print("T",end=" ")
        if indx %3==2:
            print(" ",end="")
    print()
else:
    print("Invalid Input")

【讨论】:

    【解决方案2】:

    分解问题; 您需要(在我看来)将每个步骤分解成最基本的形式。

    即。

    1. 接受输入(可能是 0-511 之间的 int 或二进制字符串)。
    2. 转换为二进制字符串(如果给定数字)。
    3. 在此基础上构建 3x3 数组。

    显然还有更多工作要做,但首先要考虑每个步骤,以及您需要如何解决该步骤。我能给出的最佳建议。

    【讨论】:

      猜你喜欢
      • 2014-11-08
      • 2010-09-10
      • 1970-01-01
      • 2018-03-26
      • 2021-04-14
      • 2011-04-28
      • 2014-12-19
      • 2021-07-22
      • 1970-01-01
      相关资源
      最近更新 更多