[英]Python - display different output if the input is a letter or a number
如果输入是数字,我想在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不会像某些语言一样自动在例如字符串和整数之间进行转换,因此记住类型很重要。
让我们从这一行开始:
temp = input('\nEnter the temp in C \n\t')
如果您查看input()
的文档 ,则input()
实际上会对您在Python 2.x中input()
调用eval()
(看起来就像您在使用)。 这意味着它将您在其中键入的内容视为要评估的代码,就像您在外壳中键入内容一样。 因此,如果您输入123
,它将返回一个int
; 如果您输入'abc'
,它将返回一个str
; 如果您键入abc
(并且尚未定义变量abc
),它将给您一个错误。
如果要获取用户以字符串形式输入的内容,则应使用raw_input()
代替。
在下一行:
f = ((9/5)*temp +32)
您似乎希望temp
是一个数字。 但这没有道理。 无论temp
是多少,都将执行此行,并且您期望包含数字的字符串和包含字母的字符串都作为输入。 这条线不应该去这里。
继续:
if temp.isdigit():
isdigit()
是一个字符串方法,因此在这里您希望temp
是一个字符串。 这实际上是应该的。
if
语句的该分支是您的方程式应运行的位置,但是要使其起作用,首先必须将temp
转换为整数,如下所示:
c = int(temp)
另外,为了使计算正确,您应该将要乘以的分数乘以浮点数:
f = ((9/5.0)*c +32)
如果进行了上述更改,那么其余的代码应该没问题。
首先有raw_input
-始终使用raw_input
代替用户input
。 input
将评估代码,这有潜在的危险。
while 1:
print "\tConvert ciliuse to fehrenhit\n"
temp = raw_input("\nEnter the temp in C \n\t")
if temp in ("quit", "q"):
break
try:
f = ((9.0 / 5.0) * float(temp) + 32)
except ValueError:
print "anything"
代替使用isalpha
来检查输入是否无效,请使用ValueError
的catch子句,该子句在使用非数字值时抛出。
为什么不起作用? 您遇到任何错误吗?
马上我就能看到一个问题。 您需要先进行计算,然后再将其验证为数字。 将计算移至if temp.isdigit()
内部。
来看一些示例:
http://wiki.python.org/moin/Powerful%20Python%20One-Liners
好,这有效。 唯一的问题是当您退出时,您会被转出解释器。
而1:导入sys; temp = raw_input('\\ n在C中输入温度\\ n \\ t'); temp.isdigit()和sys.stdout.write('%lf'%((9./5)*float(temp)+32))或temp =='q'和sys.exit(0)或sys。 stdout.write(temp)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.