Python编程新手求助:程序仅接收输入即终止,如何实现语句三角输出?
解决你的三角打印程序问题
嘿,刚看了你的代码,问题主要有两个:一是你没在main()里调用自己写的UP和Down函数,所以程序拿到输入就直接结束了;二是UP和Down里的循环逻辑有问题——你把count当成数字用,但实际上for count in enteredSentence会让count变成句子里的每个字符,根本没法做加减运算。
我给你修正了代码,还补上了统计字符数的功能,你看看:
def main(): enteredSentence = input('Enter a short sentence: ') # 调用UP和Down函数,传入输入的句子 total_chars = UP(enteredSentence) + Down(enteredSentence) # 打印总字符数统计 print(f"\nTotal letters printed: {total_chars}") # 从第一个字符到完整句子的三角打印 def UP(enteredSentence): char_count = 0 # 用range遍历索引,从1到句子长度(包含) for i in range(1, len(enteredSentence)+1): line = enteredSentence[:i] print(line) char_count += len(line) return char_count # 从完整句子到第一个字符的三角打印 def Down(enteredSentence): char_count = 0 # 从句子长度-1递减到1,这样不会打印空行 for i in range(len(enteredSentence)-1, 0, -1): line = enteredSentence[:i] print(line) char_count += len(line) return char_count # 启动程序 main()
关键改动说明:
- main函数的调整:现在会调用
UP和Down,还接收它们返回的字符数,最后统计输出。 - UP函数的循环修复:用
range(1, len(enteredSentence)+1)来生成从1到句子长度的数字,这样每次切片[:i]就能得到前1个、前2个...直到完整句子的内容,同时累加每行的字符数。 - Down函数的循环修复:用
range(len(enteredSentence)-1, 0, -1),从句子长度减一开始,每次减1直到1,这样切片出来的内容是完整句子减1个字符、减2个字符...直到第一个字符,避免打印空字符串。 - 字符统计功能:每个打印函数都会统计自己打印的字符总数,返回给main函数汇总后输出。
举个例子,如果你输入Hello,程序会输出:
H He Hel Hell Hello Hell Hel He H Total letters printed: 25
内容的提问来源于stack exchange,提问作者BogusRustyRuntime




