我已将基本程序转换为两个功能。我需要能够通过按Enter / Return键退出程序,但是当我这样做时,它会引发ValueError:无法隐藏字符串以浮动。
我尝试在循环外分配var(x),还尝试使用if语句关闭,但问题似乎出在将浮点数附加到输入上。我想知道是否可以将float语句移到程序的另一部分并仍然获得正确的输出?
导入数学 def牛顿(x): 公差= 0.000001 估计= 1.0 而True: 估计=(估计+ 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()
我的期望是,当用户按下Enter键时,程序将以没有错误的方式结束。该程序需要浮点数。
文件“ C:/Users/travisja/.PyCharmCE2019.2/config/scratches/scratch.py”,主行第13行 x = float(input(“输入一个正数或输入/返回退出:”)) ValueError:无法将字符串转换为float:
答案 0 :(得分:0)
您收到错误消息是因为它试图将仅击中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: ")