ValueError:无法在简单代码中将字符串转换为float

时间:2013-12-02 21:46:16

标签: python string python-2.7 floating-point

       # -*- coding: cp1250 -*-
print ('euklides alpha 1.0')
a = raw_input('podaj liczbę A  : ')
b = raw_input('podaj liczbę B  : ')

a = float('a')
b = float('b')

if 'a'=='b':
    print 'a'
elif 'a' > 'b':
    while 'a' > 'b':
        print('a'-'b')
        if 'a'=='b': break
        if 'a' > 'b': continue
elif 'b' > 'a':
    while 'b' > 'a':
        print('b'-'a')
        if 'b'=='a': break
        if 'b' > 'a': continue

所以,这是我几个小时前制作的代码。现在我得到ValueError: could not convert string to float: a,我不明白为什么。你能解释一下吗?我是初学者。

2 个答案:

答案 0 :(得分:2)

float函数可以采用字符串,但必须包含可能带符号的十进制或浮点数。您希望变量a不是char 'a'

您的变量名称周围不需要'。当你在'b'周围加上引号时,你就会把它们变成一个字符串。

另一方面,一旦你完成那些while陈述,没有什么可以让你离开那里。

a = float(a)


if a == b: # you need to get rid of all the ' unless you are talking about chars 



   # -*- coding: cp1250 -*-
print ('euklides alpha 1.0')
a = raw_input('podaj liczbę A  : ')
b = raw_input('podaj liczbę B  : ')

a = float('a')
b = float('b')

if a==b:
    print a
elif a > b:
    while a > b: # nothing will get you out of the while loop
        print(a-b)
        if a == b:
            break
        if a > b: # no need for this if, the while loop will do that check for you
            continue
elif b > a:
    while b > a: # nothing will get you out of the while loop
        print(b-a)
        if b==a:
            break
        if b > a: # no need for this if, the while loop will do that check for you
            continue

答案 1 :(得分:1)

您将所有变量括在单引号中,因此您要将字符串"a"与字符串"b"进行比较,而不是将变量a中包含的浮点数与在变量b

中相同

还值得指出:

这是您的原始代码,要求用户提供两个浮点数

a = raw_input('podaj liczbę A  : ')
b = raw_input('podaj liczbę B  : ')
a = float(a)
b = float(b)

如果您使用的是Python 2.x,则可以使用

我在下面的评论中被abarnert更正了。离开它进行启发:

  

我不建议使用输入而不是raw_input和float。后者保证你得到花车;前者可以得到调用__import__('os').system('rm -rf /')的结果,这可能是你不想要的东西

a = input('podaj liczbę A  : ')
b = input('podaj liczbę A  : ')

如果你不是,你可能想要包含一个try / catch块,它会强制变量属于你需要的类型

a_verifying = True
while a_verifying:
  a = input('podaj liczbę A  : ')
  try:
    a = float(a)
    a_verifying = False
  except ValueError as e:
    a = input('podaj liczbę A  : ')

b_verifying = True
while b_verifying:
  b = input('podaj liczbę B  : ')
  try:
    b = float(b)
    b_verifying = False
  except ValueError as e:
    b = input('podaj liczbę B  : ')