【问题标题】:Issue in printing a right angle triangle in Python在 Python 中打印直角三角形的问题
【发布时间】:2020-07-17 18:32:19
【问题描述】:

我正在尝试学习 Python 基础知识。我正在设计一个可以打印三角形的代码,代码贴在下面。程序的预期输出必须是从右侧算起的三角形,而不是从左侧算起修改代码的哪一部分才能得到预期的输出。

程序的输出不应该像下面这样

我希望输出是这样的

对此的任何帮助都非常感谢。谢谢

while True:
  n = int(input("enter a number between 0 and 10:"))
  if 0 <= n <= 10:
    break
  print('try again')

rows = n
for num in range(rows+1):
  for i in range(1, num+1):
      if num % 2 == 0:
        #print(end="" '#')
        print('#',end="")
      else:
        #print(num)  
        print(num,end="")  

print(" ")

【问题讨论】:

  • 你能举一个你想得到什么的真实例子,而不仅仅是一个文字解释吗?
  • 我已经修改了@BradFigueroa 发布的问题,谢谢

标签: python arrays variables multidimensional-array


【解决方案1】:

我们可以使用list 来创建三角形的元素(当它是奇数时,只需将值附加数次,否则字符'#' 数次,如描述所述),然后使用for 循环打印如下:

while True:
  n = int(input("enter a number between 0 and 10:"))
  if 0 <= n <= 10:
    break
  print('try again')

result = [idx*'#' if idx % 2 == 0 else f'{idx}'*idx  for idx in range(1, n+1) ]
for i in range(len(result)):
    print(' '*(n-i-1), result[i])

结果是:

      1
     ##
    333
   ####
  55555

希望这可以帮助你:)

【讨论】:

    【解决方案2】:

    使用输入 (5) 检查您的代码会得到输出 (1##333####55555 )

    但相同输入 (5) 的以下代码给出了输出 (55555####333##1)

    while True:
      n = int(input("enter a number between 0 and 10:"))
      if 0 <= n <= 10:
        break
      print('try again')
    
    rows = n
    for num in range(rows, 0,-1):
      for i in range(num+1, 1,-1):
          if num % 2 == 0:
            #print(end="" '#')
            print('#',end="")
          else:
            #print(num)  
            print(num,end="")  
    
    print(" ")
    

    希望这能回答你的问题

    【讨论】:

    • 纯代码答案对一般社区几乎没有帮助,一个好的答案应该包括解释。
    猜你喜欢
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 2021-12-19
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多