Python - 输入为字母或数字时显示不同输出

0 投票
4 回答
3193 浏览
提问于 2025-04-16 16:19

我想在我的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 '

4 个回答

0

为什么不行呢?你有没有遇到什么错误?

我立刻就看到一个问题。你在确认这个东西是数字之前就开始计算了。把计算的部分放到 if temp.isdigit() 里面去。

2

首先,有几点需要注意 - 用户输入时一定要使用 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。这个错误会在输入的值不是数字时出现。

4

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

我们先从这一行开始:

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

如果你查看这个文档,你会发现input()在Python 2.x中实际上会对你输入的内容调用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)

如果你做了以上的修改,剩下的代码应该就没问题了。

撰写回答