如果输入是数字,我想在我的if
语句中打印公式的结果;如果输入是字母,则打印"any thing"
。在
我试过这个代码,但效果不好。这里怎么了?在
while 1:
print '\tConvert ciliuse to fehrenhit\n'
temp = input('\nEnter the temp in C \n\t')
f = ((9/5)*temp +32)
if temp.isdigit():
print f
elif temp == "quit" or temp == "q" :
break
elif temp.isalpha() :
print ' hhhhhhh '
您需要逐行检查代码,并考虑每个值的类型。Python不会像某些语言那样在字符串和整数之间自动转换,所以记住类型是很重要的。在
让我们从这一行开始:
如果您查看the documentationfor
input()
,input()
实际上调用了eval()
在python2.x中输入的内容(它看起来像您在使用)。这意味着它会将您在其中键入的内容视为要评估的代码,就像您在shell中键入的代码一样。因此,如果您键入123
,它将返回一个int
;如果您键入'abc'
,它将返回str
;如果您键入abc
(而且您还没有定义变量abc
),它将给您一个错误。在如果您想获得用户输入的字符串,应该使用
raw_input()
。在下一行:
^{2}$看起来您希望
temp
是一个数字。但这没有道理。不管temp
是什么,这一行都会被执行,您需要包含数字的字符串和包含字母的字符串作为输入。这条线不应该在这里。在继续:
isdigit()
是一个字符串方法,所以这里您期望temp
是一个字符串。这其实就是它应该有的。在if
语句的这一分支是您的方程应该去的地方,但是要使它工作,您首先必须将temp
转换为整数,如下所示:此外,要使计算正确,您应该将您的分数乘以浮点数:
如果您进行上述更改,其余的代码应该没问题。在
首先要做两件事-始终使用
raw_input
作为用户输入,而不是input
。input
将计算代码,这是潜在的危险。在不要使用
isalpha
来检查输入是否无效,而是对ValueError
使用catch子句,当使用非数值时会抛出该子句。在为什么没用?你有没有犯什么错误?在
但我马上就发现了一个问题。在将其验证为数字之前,您正在进行计算。将计算移到
if temp.isdigit()
内。在相关问题 更多 >
编程相关推荐