如何使用Enter键退出“ While True” |抛出值错误无法将str转换为float

时间:2019-09-17 16:31:46

标签: python-3.x while-loop exit

我已将基本程序转换为两个功能。我需要能够通过按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:

1 个答案:

答案 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: ")