ValueError:无法将字符串转换为float

时间:2016-08-01 13:32:39

标签: python

所以...我有这个原始的计算器可以在我的手机上正常运行,但是当我尝试在Windows 10上运行时,我得到...

  

ValueError:无法将字符串转换为float

我不知道问题是什么,我尝试使用raw_input,但它不起作用。请记住我是绿色的,我不知道解决这个问题的大多数方法

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

2 个答案:

答案 0 :(得分: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()将输入作为提供给函数的输入

答案 1 :(得分:0)

我认为这是因为在某些情况下输入'包含非数字字符。 Python是聪明的,当字符串只包含数字时,它可以从字符串转换为浮点数。当字符串包含非数字字符时,Python无法将其转换为浮点数。

您可以通过以下几种方式解决此问题:

  1. 找出输入中有非数字字符的原因和时间,然后进行修复。
  2. 检查输入是否仅包含:isdecimal()
  3. 的数字
  4. 使用try/except
  5. isdecimal()示例:

    CREATE OR REPLACE PROCEDURE sp_insert_xml
    (
    p_id IN INT,
    p_xml IN clob
    )
    AS
    
    BEGIN
    declare x  clob;
     y  number(10);
    
    begin
    SELECT FILE into x from PROCESS_D where PROCESS_ID =1;
    
    select dbms_lob.getlength(x) into y from dual;
    
    DBMS_OUTPUT.PUT_LINE(y);
    end;
    
    --INSERT INTO TEST_ID VALUES (p_id, p_xml);
    END;
    

    <强>更新 两位炼金术士在评论中有一些很好的建议,所以我把它放在我的答案中。