如何仅用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
思路说明
- 循环字符与分隔符:用
total_chars % len(word)替代索引判断,自动实现单词字符的循环,不用写if-else判断是否超出单词长度;分隔符同理用sep_count % len(separators)循环切换两个分隔符。 - 避免行末分隔符:把每行拆成两部分循环:前
columns-1个字符每个后面输出分隔符,最后一个字符单独输出,彻底避开条件判断。 - 符合限制要求:全程只用for循环、模运算和基础输出,没有使用列表和if-else语句。
测试示例中的输入参数,输出结果完全符合要求。
内容的提问来源于stack exchange,提问作者loveBeatles
相关产品推荐
相关产品推荐

