0

我需要制作一个 python 函数,我可以在其中找到带有黎曼和的曲面。这就是我所拥有的,根据我老师的反馈,我非常接近它,但它并没有像我想要的那样正常工作。老师还说了一些关于 try-catch 什么意思我需要做一个额外的代码来控制答案(如果我没有错的话)要找到表面,要求上限和下限以及在线下你想要多少个矩形就像在节目中一样。

(编辑)我做了一个新程序,你们能检查一下这是否正确。

import math

def f(x): return math.sqrt(x) #Function in the left!

a = int(input("What is the lowerlimit?:"))
b = int(input("What is the upperlimit?:"))
n = int(input("How many division intervals do you want?:"))

dx = (b-a)/n;

xi = 0;
sum = 0;
for i in range(n):
xi = xi+dx;
sum = sum + f(xi)
print("The surface under the line is ", (sum*dx))

#einde programma!






import math

定义 f(x):

return math.sqrt(x) #函数在左边!

def positiveinput(message): while True: try: c = int(input(message))

  if c <= 0:
      raise ValueError

    break

except ValueError:

print("哎呀!那不是有效的数字。再试一次...")

a = positiveinput("下限是多少?:")

b = positiveinput("上限是多少?:")

c = positiveinput("你想要多少个除法间隔?:")

a = int(input("下限是多少?:"))

b = int(input("上限是多少?:"))

c = int(input("你想要多少个除法间隔?:"))

dx = 浮点数((ba)/c)

xi = 一个

总和 = dx

对于范围内的 i(0,c):

xi = a - dx

总和 = 总和 + f(xi)

print("线下的曲面是", (sum*dx))

4

2 回答 2

1

上面的代码有几个问题:

1)最重要的是,您实际上并没有计算出正确的答案,因为您假设下限等于 0。而不是写xi=0你应该写xi=a!(请注意,这将使用每个矩形的远端来计算高度 - 如果您想使用下端,并且不想更改您需要编写的任何其他代码,xi = a - dx那么您就可以开始了a。(话虽如此,我不会这样做,但这是在不更改任何其他内容的情况下解决此问题的方法)。

2)验证错误:您应该检查几件事:

  • a,的值b是有效数字(请注意,它们实际上不必是整数,而只是数字)。您可以使用float()将某些内容转换为数字,就像您将使用int()转换为整数一样。
  • n是一个整数,不等于 0,因为这会引发错误,当您尝试除以 时n
  • n不是负数,因为这将导致您得到错误的值(使用代码原样)。

话虽如此,我不会按原样编写代码。使用 for 循环然后增加你的值并不是一件非常 Pythonic 的事情。range您可能有兴趣了解您实际上可以使用该函数指定下限和上限。实验:

for i in range(3,11,0.5):
   print(i)

走着瞧吧。我不会给你一个完整的解决方案,因为这是一个家庭作业,你自己解决它对你最有好处,但希望这能指出你这些事情会为你指明正确的方向。

于 2020-06-06T08:49:19.560 回答
0

正如@Sadap 所说,您可以尝试这样的事情:

def positiveinput(message):
    while True:
      try:
        n = int(input(message))
        if n <= 0:
          raise ValueError
        break
      except ValueError:
        print("Oops!  That was no valid number.  Try again...")

a = positiveinput("What is the lowerlimit?:")
b = positiveinput("What is the upperlimit?:")
n = positiveinput("How many division intervals do you want?:")

以此代码为指导,您可以完成@tim-mccurrach 在此帖子的答案中编写的错误验证列表。您也可以查看此链接,他们以不同的方式计算黎曼和。有关try-catch您的文档,可以输入此链接

于 2020-06-06T08:21:21.897 回答