2016-08-01 92 views
1

所以...我有一个运行罚款我的手机这种原始的计算器,但是当我尝试在Windows 10,我得到运行...ValueError异常:无法将字符串转换为浮动

ValueError: could not convert string to float

我不知道是什么问题,我试过使用raw_input但它不工作以太。请记住我的绿色,我不知道的大多数方法让周围的一个问题是这样

num1 = float(input()) #take a float and store it 
chars = input() #take a string   and store it 
num2 = float(input()) 
+1

你不应该在你的'input'中输入字符,也不要使用'input'来使用'raw_input'。 –

+0

我不打算输入字符。我的代码不允许我输入一个float,它只是读取一行,跳过它并给我一个ValueError。一旦我接触到我的笔记本电脑,我就会发布整个程序。 – SOMEONEE

+0

请包括哪些输入失败。 (你正在尝试什么样的例子,如果是“一切”) – glibdud

回答

2

你的代码只能转换字符串,就像下面的语句

num1 = float(input()) #take a float and store it ex 13 
print num1 # output 13.0 

的整数,如果你提供13作为输入它会给输出13.0 但如果你提供SOMEONEE作为输入,它会给ValueError

而且它是用相同的情况下, raw_input()但不同的是,默认情况下raw_input()需要输入一个字符串和input()需要输入的东西提供给功能

+0

我知道输入字符串会产生ValueError。我的程序甚至不允许我输入到变量,它只是跳过这个命令。但我有完全相同的代码在我的手机上运行一个计算器,它的工作原理,但它不会在我的桌面上工作 – SOMEONEE

+0

请编辑问题,并简要解释你想要什么? –

+0

http://stackoverflow.com/questions/38702382/touble-running-this-program – SOMEONEE

0

我认为这是在某些情况下,“输入”,因为发生了包含非数字字符。 Python很聪明,当一个字符串只包含数字时,它可以从字符串转换为浮点数。当字符串包含非数字字符时,Python不可能将其转换为浮点数。

你可以解决这个问题的一些方法:

  1. 找出原因当有您的输入非数字字符,然后解决它。
  2. 检查输入包含数字只有:isdecimal()
  3. 使用try/except

isdecimal()例如:

my_input = raw_input() 
if my_input.isdecimal(): 
    print("Ok, go ahead its all numbers") 

UPDATE: 存储双比特的炼金术士有一些在评论中有很好的建议,所以我把它写在我的回答中。

+1

'isdigit'方法在这里不是很好,因为(1.)带小数点的任何东西都会失败这个测试(可选:'isdecimal ')和(2。)OP需要数字来计算,所以可以继续前进并投射,准备抓住'ValueError'(您的选项3)。 –

+0

@ Two-BitAlchemist感谢您的指点!我编辑了我的答案:) –

+0

你的标题仍然说“isdigit”的例子。我试图修复它,但你最近的编辑不小心将它回滚;) –

相关问题