我的直角模式不完整,为什么我缺少几行或几列?

My right angle pattern is incomplete, why am I missing a few bottom rows or columns?

提问人:DummyWComputer 提问时间:9/28/2023 最后编辑:DummyWComputer 更新时间:9/29/2023 访问量:68

问:

我正在尝试输出如下模式:

🐟
🐟🐟
🐟🐟🐟
🐟🐟
🐟

我有这个代码:

def get_right_arrow_pattern(max_cols)
    emoji = "🐟"
    result = ""
    max_rows = max_cols
    for row in range(1, max_rows+1):
        for column in range(1, max_cols+1):
            result = "" + result
        result += str(emoji)
        print(result)
    return emoji

但我得到这个结果:

🐟
🐟🐟
🐟🐟🐟
🐟🐟🐟🐟
🐟
None

这段代码很棘手,因为我的家庭作业不允许在函数或 for 循环中使用 print(),而我只能用它来显示我的结果。我只在这段代码中使用了它,因为它是唯一有效的东西,并且想到并且是半成功的。

python 函数 for-loop 模式匹配

评论

0赞 Codist 9/28/2023
您传递 (max_cols) 的值是什么以获得所需的输出?3?
0赞 Karl Knechtel 9/28/2023
“诀窍是”——这是什么意思?你是说你的家庭作业不允许你这样做吗?或者你的意思是,根据你对问题的分析,如果你这样做,代码就无法正常工作?还是别的什么?
0赞 Karl Knechtel 9/28/2023
“为什么我缺少了几行或最下面的几列?” - 用你自己的话来说,代码的哪一部分应该构成这些底行?一步一步,你认为它是如何工作的?一步一步,你如何相信你得到了你目前所做的结果?具体来说,似乎有什么问题?
0赞 Karl Knechtel 9/28/2023
欢迎来到 Stack Overflow。请阅读如何提问。我们在这里不写“找到错误”的答案;我们需要一个特定的问题 - 这将是您尽最大努力理解定位特定问题的结果,并在最小的可重复示例中展示它。适合 Stack Overflow 的问题是,您已经弄清楚了代码的特定部分,该部分执行了与您的期望不同的事情(并且您应该具体地期望某些东西),并且不明白为什么。
0赞 DummyWComputer 9/29/2023
@Karl Knechtel- 我想说的是,在 for 循环中不使用 print 是很棘手的,因为我的作业不允许使用 print(),但是当我写这段代码时,它是唯一想到使用和工作的东西,有点。希望这是有道理的?

答:

-1赞 Futurist Forever 9/28/2023 #1

您可以通过向现有代码添加一些行来获得所需的输出:

def get_right_arrow_pattern(max_cols):
    emoji = "🐟"
    result = ""
    max_rows = max_cols

    for row in range(1, max_rows+1):
        result += str(emoji)
        print(result)

    for row in range(1, max_rows):
        result = result[:-1] # This will remove the last character from the string
        print(result)

    return emoji

您也可以在不使用函数内部语句的情况下获得相同的结果。print()

def get_right_arrow_pattern(max_cols):
    emoji = "🐟"
    result = ""
    max_rows = max_cols

    for row in range(1, max_rows+1):
        result += emoji*row
        result += "\n"

    for row in reversed(range(1, max_rows)):
        result += emoji*row
        result += "\n"

    return result

注意:
对于此模式。
逻辑。
No_of_rows != No_of_columnsNo_of_rows == (No_of_columns * 2) - 1

我希望这会有所帮助。

评论

1赞 Codist 9/28/2023
从我引用的问题中,“诀窍是我不能在函数中使用 print()”
0赞 Futurist Forever 9/28/2023
@DarkKnight 感谢您的更正。我对我的答案做了一些调整。检查并在必要时提出改进建议。
1赞 DummyWComputer 9/29/2023
@FuturistForever,谢谢!这对我有很大帮助,并解决了我的问题:D
0赞 Codist 9/28/2023 #2

您可以在函数中构造一个列表,返回该列表并在主程序中打印。

例如:

def get_right_arrow_pattern(max_cols, emoji = '🐟'):
    return [emoji * i for i in range(1, max_cols+1)] + [emoji * i for i in range(max_cols-1, 0, -1)]

print(*get_right_arrow_pattern(3), sep='\n')

输出:

🐟
🐟🐟
🐟🐟🐟
🐟🐟
🐟