Python-如果输入是字母或数字,则显示不同的输出
如果输入是数字,我想在我的Python-如果输入是字母或数字,则显示不同的输出,python,Python,如果输入是数字,我想在我的if语句中打印等式的结果,如果是字母,则打印“anything” 我试过这个代码,但效果不好。这里怎么了 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 == "q
if
语句中打印等式的结果,如果是字母,则打印“anything”
我试过这个代码,但效果不好。这里怎么了
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 '
首先要做几件事-对于用户输入,始终使用
raw\u 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子句,当使用非数值时会抛出该子句。首先要做几件事-对于用户输入,始终使用原始输入
,而不是输入
<代码>输入将评估可能存在危险的代码
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子句,该子句在使用非数值时抛出。为什么不起作用?你是否有任何错误
不过,我马上就能看出一个问题。在将其验证为数字之前,您正在进行计算。将计算移到
内部,如果温度为数字()
为什么不起作用?你是否有任何错误
不过,我马上就能看出一个问题。在将其验证为数字之前,您正在进行计算。将计算移到
内部,如果温度为数字()
请查看以下示例:
好的,这样行。唯一的问题是当你退出时,你会被解释器甩出
1:导入系统;temp=原始输入('\n在C\n\t'中输入温度);temp.isdigit()和sys.stdout.write(“%lf%”((9./5)*float(temp)+32))或temp=='q'和sys.exit(0)或sys.stdout.write(temp)请查看以下示例: 好的,这样行。唯一的问题是当你退出时,你会被解释器甩出
1:导入系统;temp=原始输入('\n在C\n\t'中输入温度);temp.isdigit()和sys.stdout.write(“%lf”((9./5)*float(temp)+32))或temp=='q'和sys.exit(0)或sys.stdout.write(temp)您需要逐行检查代码,并考虑每个值的类型。Python不会像某些语言那样在字符串和整数之间自动转换,因此记住类型很重要 让我们从这一行开始:
temp = input('\nEnter the temp in C \n\t')
如果查看input()
,input()
实际上调用了在Python2.x中键入的内容(看起来您正在使用它)。这意味着它将您在其中键入的内容视为要计算的代码,就像您在shell中键入一样。因此,如果您键入123
,它将返回一个int
;如果您键入'abc'
,它将返回一个str
;如果您键入abc
(并且您尚未定义变量abc
),它将给您一个错误
如果要获取用户键入的字符串,应使用raw\u input()
在下一行:
f = ((9/5)*temp +32)
看起来您希望temp
是一个数字。但这毫无意义。无论temp
是什么,都会执行这一行,并且您希望输入包含数字的字符串和包含字母的字符串。这条线不应该在这里
继续:
if temp.isdigit():
isdigit()
是一个字符串方法,因此这里您希望temp
是一个字符串。这实际上是它应该是的
if
语句的这一分支是您的等式应该使用的地方,但要使其工作,您首先必须将temp
转换为整数,如下所示:
c = int(temp)
此外,为了正确计算,您应该将要乘以的分数设为浮点数:
f = ((9/5.0)*c +32)
如果进行上述更改,代码的其余部分应该没有问题。您需要逐行检查代码,并考虑每个值的类型。Python不会像某些语言那样在字符串和整数之间自动转换,因此记住类型很重要 让我们从这一行开始:
temp = input('\nEnter the temp in C \n\t')
如果查看input()
,input()
实际上调用了在Python2.x中键入的内容(看起来您正在使用它)。这意味着它将您在其中键入的内容视为要计算的代码,就像您在shell中键入一样。因此,如果您键入123
,它将返回一个int
;如果您键入'abc'
,它将返回一个str
;如果您键入abc
(并且您尚未定义变量abc
),它将给您一个错误
如果要获取用户键入的字符串,应使用raw\u input()
在下一行:
f = ((9/5)*temp +32)
看起来您希望temp
是一个数字。但这毫无意义。无论temp
是什么,都会执行这一行,并且您希望输入包含数字的字符串和包含字母的字符串。这条线不应该在这里
继续:
if temp.isdigit():
isdigit()
是一个字符串方法,因此这里您希望temp
是一个字符串。这实际上是它应该是的
if
语句的这一分支是您的等式应该使用的地方,但要使其工作,您首先必须将temp
转换为整数,如下所示:
c = int(temp)
此外,为了正确计算,您应该将要乘以的分数设为浮点数:
f = ((9/5.0)*c +32)
如果进行上述更改,代码的其余部分应该可以