擅长:python、mysql、java
<p>尝试:</p>
<pre class="lang-py prettyprint-override"><code>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)
</code></pre>
<ol>
<li><p>首先,您的程序可能陷入无限循环;例如,如果输入<code>n = 1</code>,则<code>n >= 0</code>为真<code>n <= 0</code>为假,因此程序无限期地运行<code>while</code>循环</p>
</li>
<li><p>函数的“合法输入”必须是(实)数(严格地)小于1。如果<code>n == 1</code>,那么您正在进行零除运算。如果<code>n > 1</code>,则在log函数中输入一个负数</p>
</li>
</ol>
<p>在建议的代码中,我只检查输入的“数字合法性”;i、 例如,输入一个空字符串将抛出一个错误。但我认为这超出了你在作业中的要求</p>