You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python编程新手求助:程序仅接收输入即终止,如何实现语句三角输出?

解决你的三角打印程序问题

嘿,刚看了你的代码,问题主要有两个:一是你没在main()里调用自己写的UPDown函数,所以程序拿到输入就直接结束了;二是UPDown里的循环逻辑有问题——你把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函数的调整:现在会调用UPDown,还接收它们返回的字符数,最后统计输出。
  • 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

火山引擎 最新活动