# -*- 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
,我不明白为什么。你能解释一下吗?我是初学者。
答案 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 : ')