【问题标题】:program to find the sum of the first N odd numbers求前 N 个奇数之和的程序
【发布时间】:2021-03-01 17:58:49
【问题描述】:

我正在尝试制作一个计算前 N 个奇数之和的程序。其中N是第一个奇数的个数(例如N=4,那么第一个赔率是1,3,5,7)

它应该输出奇数。

代码正确吗? (考虑到它需要在一个循环中)还是有更好的代码来计算总和? 另外,如何输入验证负数?我只知道如何处理整数。 (输入只需为正整数)

numberN=input("Please enter a positive number N: ")
sumofodd = 0
try:
    digit = int(numberN)
    if digit > 0:
        for n in range (0,digit+1,1):
            sumofodd = n*n
        print("the sum of", digit, " is ", sumofodd)
except ValueError: 
    print("you did not enter a positive integer")
    exit(1)

非常感谢

【问题讨论】:

  • This post 可以提供一些指导和优化。包括short codepure math
  • 非常感谢????
  • "代码正确吗?" - 你是应该告诉我们的人。你测试了吗?它是否为您的测试用例产生正确的输出?
  • 它确实产生了正确的输出,但是代码的 ''' sumofodd = n*n ''' 部分在没有 for 循环的情况下也可以工作。所以我想知道它是否是错误的。我是编码新手
  • 因为这里的循环是不必要的。这是一个计算n个非负奇数之和的程序print(int(input("Enter a number : ")))**2)

标签: python python-3.x loops for-loop sum


【解决方案1】:

您的代码似乎不正确。您注意计算数字的总和。相反,您正在计算它遇到的最后一位数字的 n²。而且您的范围不会遍历奇数。

@S3DEV 为您提供了完全不同(更好)的方法的很好参考,但您的方法已修复:

numberN=input("Please enter a positive number N: ")
sumofodd = 0
try:
    digit = int(numberN)
except:
    print("you did not enter a integer")
    exit(0)
if x < 0:
    pring("give positive number")
    exit(0)
for n in range(1,digit*2,2):
    sumofodd += n
print ("the sum of", digit, " is ", sumofodd)
    

【讨论】:

  • omg 我现在看到了错误,我试图修复代码的错误部分。现在说得通了。非常非常感谢你。 ?。我试图根据@S3DEV 提供的参考修复代码
【解决方案2】:

根据@ex4 的回答,您还可以这样做来简化代码并验证否定输入:

numberN = abs(int(input("Please enter a positive number N: ")))
sumofodd = 0
for n in range(1,numberN*2,2):
      sumofodd += n
print ("the sum of", numberN, " is ", sumofodd)

abs() 返回绝对值,因为:abs(int(input("..."))) 输入变成正整数。

你也可以这样用:

 numberN = abs(int(input("Please enter a positive number N: ")))
 print ("the sum of", numberN, " is ", numberN*numberN)

同样的结果。

【讨论】:

  • 是的,只是为非整数输入添加输入验证。而且效果很好。谢谢!!
【解决方案3】:
try:
    n = int(input("Please enter a positive number N: "))
    if n > 0:
        print("the sum of", n, "is", n * n)
except ValueError:
    print("you did not enter a positive integer")
    exit(1)

【讨论】:

  • 使用算术级数可以很容易地找到从 1 到无穷大的奇数之和。因此,只需打印它的平方值即可得到 n 个奇数的总和
猜你喜欢
  • 2016-03-07
  • 1970-01-01
  • 1970-01-01
  • 2018-05-04
  • 2020-12-28
  • 2020-10-02
  • 2021-12-04
  • 2017-02-25
  • 1970-01-01
相关资源
最近更新 更多