Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的;如果;python中的语句不起作用?_Python_Python 3.x - Fatal编程技术网

为什么我的;如果;python中的语句不起作用?

为什么我的;如果;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

我想知道为什么我的“如果”语句不起作用。我被要求输入,但之后什么也没发生。它不会打印出是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”)
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@andole
range
返回范围对象,而不是列表或元组。除此之外,这个对象可以在不生成值的情况下测试值是否在范围内。我知道它不会返回元组或列表。我在回答中所说的是范围在给定上下文中的含义。我对答案进行了编辑,以减少误导。
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