我需要制作一个python函数,在其中我可以用riemann和找到表面。这就是我所拥有的,并且在老师的反馈下,我非常接近它,但是它并不能像我想要的那样正常工作。老师还说了关于try-catch的信息,这意味着我需要编写一个额外的代码来控制答案(如果我没记错的话),要找到曲面,请询问uppper和下限以及在该线下想要多少个矩形就像在程序中一样。
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!
如@Sadap所说,您可以尝试这样的事情:
while True:
try:
a = int(input("What is the lowerlimit?:"))
b = int(input("What is the upperlimit?:"))
n = int(input("How many division intervals do you want?:"))
break
except ValueError:
print("Oops! That was no valid number. Try again...")
上面的代码有一些问题:
1] 最重要,您实际上没有计算出正确的答案,因为您假设下限等于0。应该写xi=0
而不是写xi=a
! (请注意,如果要使用下端,将使用每个矩形的远端来计算heightm,并且不想更改任何其他代码,则需要编写xi = a - dx
,因此从a
开始(话虽如此,我不会这样做,但这是在不进行任何更改的情况下解决此问题的方法。)
2)验证错误:您应该检查一些事情。 a
,b
和n
的值是有效整数。此外,还应检查n
不等于0,否则在尝试除以时会产生错误。您还应该确保n
不为负,因为这将导致您获得错误的值(按原样使用代码)。