Python打印比我想要的多

时间:2016-02-24 11:54:19

标签: python

我是编程新手。在下面的代码中,当我输入任何字符串作为答案时,您的分数是多少?',它会同时打印“不良分数”,“再试一次”和“#39;和' F'。

为什么呢?请帮忙。谢谢!

pg_stat_activity

4 个答案:

答案 0 :(得分:2)

当您编写的字符串无法转换为浮点值时,会引发异常并将其捕获,除此之外,“得分差”'显示消息,并为分数指定值-1。

由于异常被捕获,执行继续。由于当前得分值-1小于0.6,因此F' F'也打印出来。

尝试将异常捕获移动到代码的末尾:

score = raw_input('what is your score?')
try:
    score = float(score)
    if score >= 0.9:
        print "A"
    elif score >= 0.8:
        print "B"
    elif score >= 0.7:
        print "C"
    elif score >= 0.6:
        print "D"
    elif score < 0.6:
        print "F"
except:
    score = -1
    print 'Bad Score, Try Again'

答案 1 :(得分:1)

当您输入字符串时,以下代码正在打印“不良分数,再试一次”并将分数设置为-1

if score >= 0.9:
    print "A"
elif score >= 0.8:
    print "B"
elif score >= 0.7:
    print "C"
elif score >= 0.6:
    print "D"
if score < 0.6:
    print "F"

然后执行此代码,得分(-1)小于0.6,打印'F'

score = raw_input('what is your score?')
try:
    score = float(score)
except:
    score = -1

if score >= 0.9:
    print "A"
elif score >= 0.8:
    print "B"
elif score >= 0.7:
    print "C"
elif score >= 0.6:
    print "D"
elif score >= 0:
    print "F"
else:
    print 'Bad Score, Try Again'

也许你想要的是:

placement new

答案 2 :(得分:1)

如果您将所有代码放入try语句中,它将正常工作。

score = raw_input('what is your score?')
try:
    score = float(score)
    if score >= 0.9:
        print "A"
    elif score >= 0.8:
        print "B"
    elif score >= 0.7:
        print "C"
    elif score >= 0.6:
        print "D"
    elif score < 0.6:
        print "F"
except:
    score = -1
    print 'Bad Score, Try Again'

答案 3 :(得分:0)

那是因为你的if语句在except子句之外,并在控制离开时执行。

您将score设置为-1,小于0.6,因此会打印F

您必须将整个if移动到except子句才能使其正常工作。或者,您可以将上一个if更改为elifelse