如何将字符串转换为浮点数?

时间:2013-11-17 23:22:21

标签: python string floating-point

我目前正在使用Python编写程序,我需要弄清楚如何将字符串值转换为浮点值。

程序将要求用户输入一个数字,然后使用循环继续询问更多数字。用户必须输入0才能停止循环(此时,程序将为用户提供他们输入的所有数字的平均值)。

我想要做的是让用户输入“停止”字样。而不是0来停止循环。我尝试为stop = 0创建变量,但这会导致程序给出以下错误消息:

ValueError: could not convert string to float: 'stop'

那我怎么做才能“停止”#39;用户可以输入什么来停止循环?请让我知道如何将字符串转换为float。非常感谢你的帮助! :)

以下是我的一些代码:

count = 0
total = 0
number = float(input("Enter a number (0, or the word 'stop', to stop): "))

while (number != 0):
    total += number
    count += 1
    print("Your average so far is: " , total / count)
    number = float(input("Enter a number (0, or the word 'stop', to stop): "))

if (number == 0):
    if (count == 0):
        print("")
        print("Total: 0")
        print("Count: 0")
        print("Average: 0")
        print("")
        print("Your average is equal to 0. Cool! ")

    else:
        print("")
        print("Total: " , "%.0f" % total)
        print("Count: " , count)
        print("Average: " , total / count) 

请告诉我应该怎么做。谢谢。

4 个答案:

答案 0 :(得分:4)

我会检查输入是否等于先停止,如果不是,我会尝试将其转换为浮动。

if input == "stop":
    stop()
else:
    value = float(input)

查看代码示例我会做这样的事情:

userinput = input("Enter a number (0, or the word 'stop', to stop): ")

while (userinput != "stop"):
    total += float(userinput) #This is not very faulttolerant.
    ...

答案 1 :(得分:2)

您可以告诉用户输入非法值 - 例如,您的程序可能没有使用负数。

更好的是,在转换为float之前,测试你刚刚从sys.stdin.readline()读取的字符串是否为“stop”。

答案 2 :(得分:1)

您不需要将字符串转换为浮点数。从你所说的看来,输入0已经停止循环,所以你需要做的就是编辑你当前存在的状态检查,用“停止”替换0。

答案 3 :(得分:1)

注意以下几点:如果输入停止,它将停止循环,如果它不是有效数字,它只会通知用户输入无效。

while (number != 0):
    total += number
    count += 1
    print("Your average so far is: " , total / count)
    user_input = input("Enter a number (0, or the word 'stop', to stop): ")
    try:
        if str(user_input) == "stop":
            number = 0
            break
        else:
            number = float(user_input)
    except ValueError:
            print("Oops!  That was no valid number.  Try again...")

PS:请注意,大多数情况下保持代码“原样”,但您应该注意不要在python搜索中使用显式计数器枚举 ...