如果输入是字母或数字,Python将显示不同的输出

2024-10-01 07:20:23 发布

您现在位置:Python中文网/ 问答频道 /正文

如果输入是数字,我想在我的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 '

Tags: 代码if字母any数字语句temp公式
3条回答

您需要逐行检查代码,并考虑每个值的类型。Python不会像某些语言那样在字符串和整数之间自动转换,所以记住类型是很重要的。在

让我们从这一行开始:

temp = input('\nEnter the temp in C \n\t')

如果您查看the documentationfor input()input()实际上调用了eval()在python2.x中输入的内容(它看起来像您在使用)。这意味着它会将您在其中键入的内容视为要评估的代码,就像您在shell中键入的代码一样。因此,如果您键入123,它将返回一个int;如果您键入'abc',它将返回str;如果您键入abc(而且您还没有定义变量abc),它将给您一个错误。在

如果您想获得用户输入的字符串,应该使用raw_input()。在

下一行:

^{2}$

看起来您希望temp是一个数字。但这没有道理。不管temp是什么,这一行都会被执行,您需要包含数字的字符串和包含字母的字符串作为输入。这条线不应该在这里。在

继续:

if temp.isdigit():

isdigit()是一个字符串方法,所以这里您期望temp是一个字符串。这其实就是它应该有的。在

if语句的这一分支是您的方程应该去的地方,但是要使它工作,您首先必须将temp转换为整数,如下所示:

c = int(temp)

此外,要使计算正确,您应该将您的分数乘以浮点数:

f = ((9/5.0)*c +32)

如果您进行上述更改,其余的代码应该没问题。在

首先要做两件事-始终使用raw_input作为用户输入,而不是inputinput将计算代码,这是潜在的危险。在

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()内。在

相关问题 更多 >