擅长:python、mysql、java
<p>您需要逐行检查代码,并考虑每个值的类型。Python不会像某些语言那样在字符串和整数之间自动转换,所以记住类型是很重要的。在</p>
<p>让我们从这一行开始:</p>
<pre><code>temp = input('\nEnter the temp in C \n\t')
</code></pre>
<p>如果您查看<a href="http://docs.python.org/library/functions.html#input" rel="nofollow">the documentation</a>for <code>input()</code>,<code>input()</code>实际上调用了<code>eval()</code>在python2.x中输入的内容(它看起来像您在使用)。这意味着它会将您在其中键入的内容视为要评估的代码,就像您在shell中键入的代码一样。因此,如果您键入<code>123</code>,它将返回一个<code>int</code>;如果您键入<code>'abc'</code>,它将返回<code>str</code>;如果您键入<code>abc</code>(而且您还没有定义变量<code>abc</code>),它将给您一个错误。在</p>
<p>如果您想获得用户输入的字符串,应该使用<code>raw_input()</code>。在</p>
<p>下一行:</p>
^{2}$
<p>看起来您希望<code>temp</code>是一个数字。但这没有道理。不管<code>temp</code>是什么,这一行都会被执行,您需要包含数字的字符串和包含字母的字符串作为输入。这条线不应该在这里。在</p>
<p>继续:</p>
<pre><code>if temp.isdigit():
</code></pre>
<p><code>isdigit()</code>是一个字符串方法,所以这里您期望<code>temp</code>是一个字符串。这其实就是它应该有的。在</p>
<p><code>if</code>语句的这一分支是您的方程应该去的地方,但是要使它工作,您首先必须将<code>temp</code>转换为整数,如下所示:</p>
<pre><code>c = int(temp)
</code></pre>
<p>此外,要使计算正确,您应该将您的分数乘以浮点数:</p>
<pre><code>f = ((9/5.0)*c +32)
</code></pre>
<p>如果您进行上述更改,其余的代码应该没问题。在</p>