<p>假设python3.x,<code>input()</code>给您一个字符串,因此<code>magnitude</code>是一个字符串。你知道吗</p>
<p>执行<code>for mag in magnitude:</code>操作时,将迭代输入字符串中的每个字符,因此,如果输入类似<code>5.4</code>的内容,<code>mag</code>将首先是<code>5</code>,然后是<code>.</code>,然后是<code>4</code>。当您尝试将<code>'.'</code>转换为float时,这会导致问题。你知道吗</p>
<p>如果输入的是一个十进制数,则不需要循环,只需执行-</p>
<pre><code>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.
</code></pre>
<p>假设前面定义了<code>mag1</code>/<code>mag2</code>/<code>mag3</code>。你知道吗</p>
<hr/>
<p>如果您的输入是以空格分隔的十进制数,如<code>5.4 4.5 ...</code>,则在字符串上使用<code>.split()</code>根据任何空格进行拆分(这样您就可以得到所有数字的列表),然后在拆分列表上迭代,例如-</p>
<pre><code>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.
</code></pre>
<p>再次假设前面定义了<code>mag1</code>/<code>mag2</code>/<code>mag3</code>。你知道吗</p>