我目前正在使用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)
请告诉我应该怎么做。谢谢。
答案 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搜索中使用显式计数器枚举 ...