>我已经将基本程序转换为两个函数。我需要能够通过按回车键退出程序,但是当我这样做时,它会抛出一个 ValueError:无法隐蔽字符串浮动。
我尝试在循环外部分配 var(x(,也尝试使用 if 语句关闭,但问题似乎出在附加到输入的浮点数上。我想知道我是否可以将 float 语句移动到程序的另一部分并仍然获得正确的输出?
导入数学 Def Newton(X(: 容差 = 0.000001 估计值 = 1.0 而真: 估计 = (估计 + x/估计(/2 差值 = ABS(X - 估计值 ** 2( 如果差值 <= 公差: 破 回报估算
def main((:
while True:
x = float(input("Enter a positive number or enter/return to quit: "))
print("The program's estimate is", newton(x))
print("Python's estimate is ", math.sqrt(x))
如果名称== 'main': 主((
我的期望是,当用户按回车键时,程序将无错误地结束。程序需要浮点数。
文件 "C:/Users/travisja/.PyCharmCE2019.2/config/scratches/scratch.py",第 13 行,在主 x = float(input("输入正数或输入/返回退出:"(( 值错误:无法将字符串转换为浮点数:
您收到错误是因为它试图将仅命中Enter
(空字符串(时收到的输入转换为float
。空字符串无法转换为浮点数,因此会出现错误。
不过,您可以轻松地重新构建代码:
import math
# Prompt the user for a number first time
input_val = input("Enter a positive number or enter/return to quit: ")
# Continue until user hits Enter
while input_val:
try:
x = float(input_val)
print("The program's estimate is", newton(x))
print("Python's estimate is ", math.sqrt(x))
# Catch if we try to calculate newton or sqrt on a negative number or string
except ValueError:
print(f"Input {input_val} is not a valid number")
finally:
input_val = input("Enter a positive number or enter/return to quit: ")