magnitude = input("Enter the value of magnitude: ")
for mag in magnitude:
if float(mag) <= 1.9:
print(mag1)
elif float(mag) <= 2.9:
print(mag2)
elif float(mag) <= 3.9:
print(mag3)
如果我使用小数进行任何输入,我会收到此错误
Traceback (most recent call last): line 36, in effects
if float(mag) <= 1.9:
ValueError: could not convert string to float: '.'
我尝试在循环之前将原始输入语句转换为浮点数,但它只是给了我一个不同的错误。
答案 0 :(得分:0)
函数input
总是为您提供一个字符串。在这种情况下,您尝试迭代字符串。如果将此值更改为浮点数,您将遇到类似的问题。
答案 1 :(得分:0)
假设Python 3.x,input()
为您提供了一个字符串,因此magnitude
是一个字符串。
当您执行for mag in magnitude:
时,您正在迭代输入字符串中的每个字符,因此如果您输入5.4
之类的内容,mag
将首先为5
,然后{ {1}}然后.
。当您尝试将4
转换为浮动时,会导致此问题。
如果输入一个十进制数字,则不需要循环,只需执行 -
即可'.'
假设先前已定义try:
if float(magnitude) <= 1.9:
print(mag1)
elif float(magnitude) <= 2.9:
print(mag2)
elif float(magnitude) <= 3.9:
print(mag3)
except ValueError:
print("Invalid Input")
#Handle invalid input the way you like.
/ mag1
/ mag2
。
如果您的输入是空格分隔的十进制数字,例如mag3
,那么在字符串上使用5.4 4.5 ...
基于任何空格进行拆分(以便获得所有数字的列表)然后迭代拆分列表,示例 -
.split()
再次假设先前已定义for mag in magnitude.split():
try:
if float(mag) <= 1.9:
print(mag1)
elif float(mag) <= 2.9:
print(mag2)
elif float(mag) <= 3.9:
print(mag3)
except ValueError:
print("Invalid Input")
#Handle invalid input the way you like.
/ mag1
/ mag2
。
答案 2 :(得分:0)
Python字符串作为序列运行,其中每个字符都是一个元素。
因此,如果您输入字符串&#34; 2.5&#34;,则行for mag in magnitude:
将依次遍历每个字符。
例如:
magnitude = "2.5"
for mag in magnitude:
print mag
将产生:
4
.
9
字符4
和9
可以强制转换为数字类型,但.
可能会导致您的错误。