在python2中使用输入后出现名称错误

2024-04-25 04:36:49 发布

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

这学期我在学习Python,这是我的家庭作业。在

有人能告诉我为什么我的代码错了吗?在

问题:
你想知道你在计算机科学方面的成绩,所以写一个程序,在你输入“stop”之前,它会将你的平均成绩打印到标准输出中,直到你输入“stop”为止。在

我的代码:

total=0
count=0

while True:

    grade=input("Enter Your Grades between 0 and 100 [put 'stop' when done]:")

    if grade<0 or grade>100:
        print("Invalid Input")
        continue

    elif grade=="stop":
        break

    else:
        count+=1
        total+=grade

print "Your Average Grade is:"+format(total/count,'.2f')

当我运行代码时,Python一直给我以下消息:

Screenshot


Tags: 代码程序trueyour标准counttotalgrade
3条回答

input更改为raw_input

grade = raw_input("Enter Your Grades between 0 and 100 [put 'stop' when done]:")

可以先计算字符串stop,尝试用raw_input捕获输入:

total = 0

count = 0

while True:

    grade = raw_input("Enter Your Grades between 0 and 100 [put 'stop' when done]:")

    if grade == "stop":
        break
    if grade.isdigit():
        grade = int(grade)
        if grade < 0 or grade > 100:
            print("Invalid Input")
            continue
        else:
            count += 1
            total += grade

if  count == 0:
    print "Empty values"
else:
    print "Your Average Grade is: %.2f" % (float(total)/count)

我为正确执行添加了不同的条件,检查行,例如if grade.isdigit():以验证输入值是否为数值,当此计算时我们可以正常工作与任何数学计算。在

如果用户在第一次迭代中写入stop,则返回count == 0:。在

在最后一行中,可以使用两种不同的方法打印值:

^{pr2}$

或者

print "Your Average Grade is: {:.2f}".format(float(total)/count)

您使用的是Python2.7,因此使用raw_input,而不是{}。后者计算输入,因此5 + 2将返回7,而不是字符串'5 + 2'。输入stop试图将stop作为一个不存在的变量求值。在

{{cd2>在Python中,{cd2>和^都是一个整数{cd2>除法。如果需要浮点平均值,请使用float(total)/count。其中一个变量必须是float才能得到float答案。在

您还将发现grade是一个字符串,因此首先测试'stop',然后将其转换为int来测试等级grade = int(grade)。您可能需要考虑处理错误。如果用户键入10a怎么办?在

相关问题 更多 >