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)
如果进行上述更改,代码的其余部分应该可以