为什么sys.exit()会减去总数

  • 本文关键字:sys exit python python-3.x
  • 更新时间 :
  • 英文 :


我手头有一项任务,要写一个计算数字总和的程序。这是一个初级python程序。我为这个练习找到了两种解决方案,一种效果很好,另一种则不然。没有为此问题提供示例输出。

问题是:

数字总和

编写一个带有循环的程序,要求用户输入一系列正数。用户应该输入一个负数来表示该系列的结束。输入所有正数后,程序应显示它们的总和。

这是我的工作解决方案:

# Get a positive number
number = float(input('Enter a positive number: '))
# Set the accumulator
total = 0.0
# Test the condition, calculate total, and display result
while number > 0:
total += number
number = float(input('Enter a positive number: '))
else:
print(f'Total is {total}')
quit()

这是输出:

Enter a positive number: 5
Enter a positive number: 6
Enter a positive number: 7
Enter a positive number: -1
Total is 18.0 

这是我第二次尝试学习编码。在此之前,我读了几章关于python自动化无聊的东西。从那时起,我记得我可以在python中使用那些函数,如quit((、sys.exit((.

以下是我首先实现的解决方案,但没有按预期工作:

import sys
# Set the accumulator
total = 0.0
# Process one or more data
while True:
entered_number = float(input('Enter a positive number: '))
total += entered_number
# Display result and Terminate
while entered_number < 0:
print(f'Total is: {total}')
sys.exit()

这是输出:

Enter a positive number: 5
Enter a positive number: 6
Enter a positive number: 4
Enter a positive number: -2
Total is: 13.0

尽管如此,我只输入了sys.exit((,因为我使用的是pycharm,它会自动导入sys模块。这种方法的问题是,它从我退出程序时在提示下输入的负值中减去了总和。

那么,我该如何解决这个问题呢?

这里的问题不在于sys导入。sys.exit()只是简单地退出python程序。这里的问题是你把负值加到你的总数中。让我们分解一下你的两个程序。

第一个程序:

  • 首先向用户询问一个Integer,表示它应该是正数
  • 将浮点值合计声明为0.0
  • 创建一个循环,只要输入大于0,就可以连续地问同一个问题。如果是,则将该值添加到您的总数中
  • 一旦程序检测到一个负值作为输入,您就可以打印总数并退出程序

第二个程序:

  • 声明浮点值合计为0
  • 连续循环询问用户输入,同时将输入添加到总数中
  • 每次添加输入后,它会检查输入是否为负数,如果是,则打印总数并退出程序

通过分解代码,我们开始看到这里的一些问题,这就是为什么我发现在编码之前作为初学者编写伪代码很有帮助。

回答您的问题:问题不在于您使用sys,而在于您在检查值本身之前将数字添加到总数中,无论该数字是输入的。

这里还有一些其他问题需要解决。

  • 首先,循环从未真正退出,程序只是被迫关闭。相反,一个带有if语句的单数while循环检查值是否为正,如果是,则将值添加到总数中,否则中断循环并打印总数
  • 习惯于在你的程序中更具描述性。总是想象一个从未见过你的程序的人正在阅读源代码,并试图理解正在发生的一切。我建议使用类似于以下内容的内容来代替Enter a positive number:
print("Enter A Positive Number To Add To The Total")
print("To Exit The Program, Enter Any Negative Value")
while True:
number = input("Enter Number: ")

我建议在开始编写代码之前先阅读python文档中的一些基础知识。了解你到底在做什么以及你是如何做的很重要。

最新更新