在 Python 中使用 while 循环的自然对数

Natural logarithm using while loop in Python

函数:y(x) = ln 1/(1-x)

如何编写 Python 程序来针对任何用户指定的 x 值计算上述函数,其中 ln 是自然对数(以 e 为底的对数)?我将强制使用 while 循环,以便程序对输入程序的每个合法 x 值重复计算。当输入非法值“x”时,我使用break终止程序。

我试过使用下面的代码,但似乎 运行 不合适:

import math

n = int(input("Enter the number to be converted: "))

while n >= 0:
    if n <= 0:    
        break

print("Your number is not positive terminating program.") 
    
x = math.log(n) * 1/(1-n)

print("The Log Value is:", x)

所以实际上你只是在 while 循环中没有正确的行

import math
valid = True

while valid == True:
    n = int(input("Enter the number to be converted: "))
    if n <= 0:
        print("Your number is not positive terminating program.")     
        valid = False
    else:
        x = math.log(n) * 1/(1-n)

        print("The Log Value is:", x)

尝试:

import math

while True: # infinite loop, to be halted by break
    x = float(input('Enter the number to be converted: ')) # get the input
    if x >= 1: # is the input legal?
        print('The function cannot be evaluated at x >= 1.')
        break # break out of the loop if the input is "illegal"
    y = math.log(1 / (1 - x))
    print('The log value is:', y)
  1. 首先,你的程序可能会陷入死循环;例如,如果您输入 n = 1,则 n >= 0 为真,n <= 0 为假,因此您的程序会无限期地运行 while 循环。

  2. 函数的“合法输入”必须是(严格)小于 1 的(实)数。如果 n == 1,那么您正在除以零。如果 n > 1,那么您在对数函数中输入了一个负数。

在建议的代码中,我只检查输入的“数字合法性”;即,输入空字符串会引发错误。但我认为这超出了你在作业中的要求。