You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅用for循环编写符合要求的Python字符表格生成脚本?

问题

我想写一个Python脚本,要求如下:

  • 用input('?')读取两个整数,分别作为表格的宽度和高度;
  • 再用input('?')读取两个字符串:一个6字符的单词,一个2字符的分隔符串;
  • 用print()输出表格,表格内容用指定单词的字符循环填充,字符间交替使用两个分隔符,行末无分隔符,表格尺寸符合指定的宽高。

示例输入输出:

?5
?3
?Python
?+- 
P+y-t+h-o
n+P-y+t-h
o+n-P+y-t

限制条件:不能使用列表和if-else语句,仅允许使用for循环。我不知道怎么在不使用索引判断的情况下完成,下面是我的解法,但不符合限制要求:

columns = int(input("?"))
rows = int(input("?"))
word = input("?")
separators = input("?")

separator_index = 0
word_index = 0
for i in range(rows):
    for j in range(columns):
        if word_index < len(word):
            print(word[word_index], end=separators[separator_index])
            word_index += 1
            separator_index = (separator_index + 1) % len(separators)
        else:
            word_index = 0
            print(word[word_index], end=separators[separator_index])
            word_index += 1
            separator_index = (separator_index + 1) % len(separators)
    print()
解决方案

可以通过拆分每行的输出逻辑,用两个for循环分别处理带分隔符的部分和最后一个字符,同时利用模运算实现字符与分隔符的循环,完全避免if-else和列表的使用:

columns = int(input('?'))
rows = int(input('?'))
word = input('?')
separators = input('?').strip()  # 去除输入可能带的空格

total_chars = 0
sep_count = 0

for _ in range(rows):
    # 处理每行前columns-1个字符,每个字符后跟上分隔符
    for _ in range(columns - 1):
        print(word[total_chars % len(word)], end=separators[sep_count % len(separators)])
        total_chars += 1
        sep_count += 1
    # 处理每行最后一个字符,不加分隔符
    print(word[total_chars % len(word)])
    total_chars += 1
    sep_count += 1

思路说明

  1. 循环字符与分隔符:用total_chars % len(word)替代索引判断,自动实现单词字符的循环,不用写if-else判断是否超出单词长度;分隔符同理用sep_count % len(separators)循环切换两个分隔符。
  2. 避免行末分隔符:把每行拆成两部分循环:前columns-1个字符每个后面输出分隔符,最后一个字符单独输出,彻底避开条件判断。
  3. 符合限制要求:全程只用for循环、模运算和基础输出,没有使用列表和if-else语句。

测试示例中的输入参数,输出结果完全符合要求。

内容的提问来源于stack exchange,提问作者loveBeatles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 09:59:52