为什么我的;如果;python中的语句不起作用?
我想知道为什么我的“如果”语句不起作用。我被要求输入,但之后什么也没发生。它不会打印出是A、B、C还是D为什么我的;如果;python中的语句不起作用?,python,python-3.x,Python,Python 3.x,我想知道为什么我的“如果”语句不起作用。我被要求输入,但之后什么也没发生。它不会打印出是A、B、C还是D def main(): printLetterGradeFromNumber(输入(“分数作为数字:”)) def printLetterGradeFromNumber(数字\等级): A=范围(90100) B=范围(80,89) C=范围(70,79) D=范围(60,69) 如果数量\等级==A: 打印(“那个学生得了A”) elif编号\等级==B: 打印(“那个学生得了B”) el
def main():
printLetterGradeFromNumber(输入(“分数作为数字:”))
def printLetterGradeFromNumber(数字\等级):
A=范围(90100)
B=范围(80,89)
C=范围(70,79)
D=范围(60,69)
如果数量\等级==A:
打印(“那个学生得了A”)
elif编号\等级==B:
打印(“那个学生得了B”)
elif编号\等级==C:
打印(“那个学生得了C”)
elif编号\等级==D:
打印(“那个学生得了D”)
返回编号(等级)
main()
范围(90100)等于(90、91、92、93、94、95、96、97、98、99)
您需要使用“in”运算符
if number_grade in A:
print("That student gets an A")
elif number_grade in B:
print("That student gets a B")
elif number_grade in C:
print("That student gets a C")
elif number_grade in D:
print("That student gets a D")
有两个问题:
中的main
,需要转换为输入
int
- 目前,
是一个输入
,当测试str
、a
、B
或C
中的成员身份时,它将永远不会是D
True
- 示例:
比较为'90'==90
,因此False
中为'90'在A
False
- 目前,
- 使用,而不是
def main():
printLetterGradeFromNumber(int(输入(“作为数字的等级:”))
def printLetterGradeFromNumber(数字\等级):
A=范围(90100)
B=范围(80,89)
C=范围(70,79)
D=范围(60,69)
如果A中的数字\等级:
打印(“那个学生得了A”)
elif编号(B级):
打印(“那个学生得了B”)
以C表示的elif编号和等级:
打印(“那个学生得了C”)
以D表示的elif编号和等级:
打印(“那个学生得了D”)
返回编号(等级)
main()
输出:
替代实施:
-
返回digitalize
存储箱中
值的
返回索引<代码>值<60
,而索引=0
返回值>=90
索引=4
- 使用
的等级
可以找到字母等级。因此,索引
的顺序必须对应于等级
箱子
从numpy导入数字化
def打印字母等级()
value=int(输入('grade作为数字:'))
等级=['F','D','C','B','A']
索引=数字化(值,存储箱=[60,70,80,90])
打印(f'学生获得{成绩[索引]}')
我希望这就是您要找的
def printLetterGradeFromNumber(number_grade):
#A = range(90, 100)
#B = range(80, 89)
#C = range(70, 79)
#D = range(60, 69)
if number_grade >= 90 and number_grade <= 100:
print("That student gets an A")
if number_grade >= 80 and number_grade <= 89:
print("That student gets a B")
elif number_grade >= 70 and number_grade <= 79:
print("That student gets a C")
elif number_grade >= 60 and number_grade <= 69:
print("That student gets a D")
return number_grade
def printLetterGradeFromNumber(数字等级):
#A=范围(90100)
#B=范围(80,89)
#C=范围(70,79)
#D=范围(60,69)
如果number_grade>=90,number_grade=80,number_grade=70,number_grade=60,number_grade,则无需定义函数。使用“For”循环
将你的成绩设置为A=范围(90101)。B=量程(80,90),C=量程(70,80),D=量程(60,70)
当您使用范围时,python会排除您希望中的上限整数,而不是=
中的,您应该说如果A
中有数字等级,而不是数字等级==A
。你认为91==(90,91,92,93,94,95,96,97,98,99)
???这个问题的答案使你的if语句不起作用创建范围不是一个非常有效的检查方法,你最好查看重复项的副本你需要将你的number\u等级
转换为int(number\u等级)
用于比较范围
返回generator@andolerange
返回范围对象,而不是列表或元组。除此之外,这个对象可以在不生成值的情况下测试值是否在范围内。我知道它不会返回元组或列表。我在回答中所说的是范围在给定上下文中的含义。我对答案进行了编辑,以减少误导。
def printLetterGradeFromNumber(number_grade):
#A = range(90, 100)
#B = range(80, 89)
#C = range(70, 79)
#D = range(60, 69)
if number_grade >= 90 and number_grade <= 100:
print("That student gets an A")
if number_grade >= 80 and number_grade <= 89:
print("That student gets a B")
elif number_grade >= 70 and number_grade <= 79:
print("That student gets a C")
elif number_grade >= 60 and number_grade <= 69:
print("That student gets a D")
return number_grade