为什么这总是打印第一个if语句,而不打印其他内容?

时间:2020-02-22 17:41:50

标签: python

grade = raw_input("What was your score?")

if grade >= 93:
  print "For a score of " + grade + ", your grade is an A"
elif grade >= 90 and grade < 93:
  print "For a score of " + grade + ", your grade is an A-"
elif grade >= 87 and grade < 90:
  print "For a score of " + grade + ", your grade is a B+"
elif grade >= 83 and grade < 87:
  print "For a score of " + grade + ", your grade is a B"
elif grade >= 80 and grade < 83:
  print "For a score of " + grade + ", your grade is a B-"
elif grade >= 77 and grade < 80:
  print "For a score of " + grade + ", your grade is a C+"
elif grade >= 73 and grade < 77:
  print "For a score of " + grade + ", your grade is a C"
elif grade >= 70 and grade < 73:
  print "For a score of " + grade + ", your grade is a C-"
elif grade >= 67 and grade < 70:
  print "For a score of " + grade + ", your grade is a D+"
elif grade >= 63 and grade < 67:
  print "For a score of " + grade + ", your grade is a D"
elif grade >= 60 and grade < 63:
  print "For a score of " + grade + ", your grade is a D-"
else:
  print "For a score of " + grade + ", your grade is an F"

无论输入什么作为原始输入,打印的语句始终为“对于___,您的成绩为A”,即使它应为B或D或其他。

3 个答案:

答案 0 :(得分:1)

raw_input返回一个字符串,而不是数字。在进行比较之前,您需要将其转换为int或float。

顺便说一句,如果您是从python开始的,请选择3(而不是2)。2已经停止销售,并且对库的支持开始减少。

答案 1 :(得分:0)

您正在比较整数和字符串。 您需要使用int()将字符串转换为整数。 因此,您可以例如执行类似的操作

grade = int(raw_input("What was your score?"))

当然,这将给您带来一个问题,即您为显示输出消息所做的(丑陋)串联将停止工作(因为您无法串联字符串和整数)。 与其直接使用字符串连接,不如直接使用字符串format,这样的时间要好99%,

print "For a score of {}, your grade is an A".format(grade)

答案 2 :(得分:-1)

grade = int(input(“输入您的分数”))

使用python 3。

相关问题