Java实现单词菱形/钻石形状打印的程序开发求助
嘿,我懂你想做个把输入单词打印成菱形的程序,这玩意儿其实挺有成就感的!虽然你没贴出自己尝试的代码,但我可以给你唠唠常见的两种实现思路,再给你完整的示例代码,你可以对照着看看自己之前的写法哪里卡壳了~
第一种:逐行递增/递减单词前缀的菱形
这是最常见的需求,比如输入HELLO,输出效果是:
H HE HEL HELO HELLO HELO HEL HE H
实现代码如下:
word = input("请输入一个单词:") word_len = len(word) # 打印菱形上半部分(从单个字符到完整单词) for i in range(1, word_len + 1): # 计算每行前面需要的空格数 leading_spaces = word_len - i # 拼接空格和当前行的单词前缀 print(" " * leading_spaces + word[:i]) # 打印菱形下半部分(从完整单词的前n-1个字符递减到单个字符) for i in range(word_len - 1, 0, -1): leading_spaces = word_len - i print(" " * leading_spaces + word[:i])
第二种:对称字符的菱形(类似钻石的对称结构)
如果你想要的是每行左右对称的菱形,比如输入ABC,输出效果是:
A ABA ABCBA ABA A
那可以用下面的代码:
word = input("请输入一个单词:") word_len = len(word) # 上半部分:从单个字符扩展到完整对称行 for i in range(word_len): leading_spaces = word_len - i - 1 # 拼接前缀和前缀的反转(去掉最后一个字符避免重复) current_line = word[:i+1] + word[:i][::-1] print(" " * leading_spaces + current_line) # 下半部分:从倒数第二行对称行递减到单个字符 for i in range(word_len - 2, -1, -1): leading_spaces = word_len - i - 1 current_line = word[:i+1] + word[:i][::-1] print(" " * leading_spaces + current_line)
小提示
如果你之前的代码没成功,大概率是这几个地方出了问题:
- 循环的范围没搞对(比如上半部分是不是从1到单词长度,下半部分是不是从长度-1递减到1)
- 空格的计算错误(没算准每行需要前置多少空格来居中)
- 字符串切片用错了(比如
word[:i]是不是取到了你想要的前缀)
内容的提问来源于stack exchange,提问作者yolobird
相关产品推荐
相关产品推荐

