【问题标题】:How to print hashes using python如何使用 python 打印哈希值
【发布时间】:2022-07-18 01:26:45
【问题描述】:

这是预期的输出,如下所示:

我似乎不明白这段代码有什么问题,它接受了 1 到 8 以外的输入,而且没有按预期打印出来。

我应该打印一个倒置的哈希模式,形成一个三角形,但我真的不知道出了什么问题。

这里是代码

from cs50 import get_int

while True:
    n = get_int("Height: ")
    if n < 1 or n > 8:
        break

for i in range(n):
    for space in range(n-1):
        print(" ", end="")

        for j in range(i):
            print("#", end="")
            print()

我认为使用的逻辑明显有问题

【问题讨论】:

  • 如果输入 4 会发生什么?它是否符合您的预期,还是相反?
  • 仔细检查if n &lt; 1 or n &gt; 8。您可能想break valid 输入上的输入循环,而不是 invalid 输入。
  • 你没有说代码必须做什么。如果它必须接受 1 到 8 之间的值,那么它必须是 if 1 &lt;= n &lt;= 8: break
  • 倒三角形打印错误怎么办
  • 我仍然不知道代码必须做什么 - 我无法阅读您的想法。您必须显示所有有问题的详细信息(而不是在 cmets 中)。如果您期望某种模式,请在问题中显示它。显示您输入的值以及应显示的输出。

标签: python python-3.x


【解决方案1】:

你的错误很少。

两个主要问题是:

  • 你必须检查n &gt;= 1 and n &lt;= 8或更短的1 &lt;= n &lt;= 8
  • 缩进有误(而且缩进在 Python 中非常重要)。

这个版本

while True:
    n = int(input("Height: "))
    if 1 <= n <= 8:
        break

for i in range(n):

    # ---
    
    for space in range(n-1):
        print(" ", end="")

    # ---

    for j in range(i):
        print("#", end="")

    # ---
        
    print()

给予

Height: 5
    
    #
    ##
    ###
    ####

所以它几乎是好的。

现在它需要不同的范围内的值:

  • 第一个范围需要range(1, n+1) 而不是range(n)
  • 第二个范围需要变量i 而不是值1 - range(n-i)
while True:    
    n = int(input("Height: "))
    if 1 <= n <= 8:
        break

for i in range(1, n+1):
    
    # ---

    for space in range(n-i):
        print(" ", end="")

    # ---

    for j in range(i):
        print("#", end="")

    # ---
        
    print()

现在它给出了

Height: 5
    #
   ##
  ###
 ####
#####

【讨论】:

  • 非常感谢,它成功了,我非常感谢你帮助我解决问题的努力
猜你喜欢
  • 2021-11-08
  • 2014-11-30
  • 2021-02-18
  • 1970-01-01
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多