【问题标题】:For loops program to print out a rectangleFor循环程序打印出一个矩形
【发布时间】:2021-02-08 01:34:03
【问题描述】:

我在编写带有 for 循环的程序时遇到问题。我不知道该怎么做,但我首先遍历了一个包含数字的字符串。现在我需要用该数字中的各个数字复制一个字符串“#”,例如我想通过从 '274878' 复制字符串 '#' 来复制它。到目前为止,这是我的代码:

bars_string = input('Enter bars string:\n ')
print('+---------+')
for element in bars_string:
  pass

这是给定数字字符串的预期输出:

Enter bars string:
2378945
+---------+
|##       |
|###      |
|#######  |
|######## |
|#########|
|####     |
|#####    |
+---------+

【问题讨论】:

  • 把它分解成小块。给定数字2,你知道如何打印2#s吗?如果是这样,并且您总共需要跟随 9 个字符,那么您知道您还需要在其后打印 9 - 2 == 7 空格;但是如果你知道如何打印两个#s,你也应该能够使用该知识来打印7个空格。
  • 无论如何 - 尝试将问题分解为多个部分,并实施每个部分,然后询问您遇到的具体部分,而不是要求某人只是为你做你的工作。

标签: python for-loop rectangles


【解决方案1】:

你可以这样做:

bars_string = input('Enter bars string:\n ')
digits = list(map(int, bars_string))
max_digit = max(digits)

print("+" + "-"*max_digit + "+")
for digit in digits:
  print("|" + "#"*digit + " "*(max_digit - digit) + "|")

print("+" + "-"*max_digit + "+")

【讨论】:

    【解决方案2】:

    您可以使用格式字符串:

    barString = "2378945"
    
    print("+---------+")
    print(*(f"|{'#'*int(n):9}|" for n in barString),sep="\n")
    print("+---------+")
    
    
    +---------+
    |##       |
    |###      |
    |#######  |
    |######## |
    |#########|
    |####     |
    |#####    |
    +---------+
    

    【讨论】:

      【解决方案3】:

      为此,您需要将#element 以整数形式相乘。在 python 中,你可以从字面上用数字对字符串进行计时!代码如下:

      bars_string = input('Enter bars string:\n ')
      #2378945
      for element in bars_string:
        print('#'*int(element))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-13
        相关资源
        最近更新 更多