TypeError:/:'NoneType'和'NoneType'不受支持的操作数类型

时间:2019-03-11 03:42:46

标签: python python-3.x

我正在尝试找出此python问题,并且不断收到此错误:

TypeError:/:“ NoneType”和“ NoneType”的不受支持的操作数类型

这是我要解决的问题:#编写一个程序,询问用户班上注册的男性人数和女性人数。该程序应显示班级中男性和女性的百分比。

这是我的代码:

def askuser(prompt):
  userAnswer = None
  while userAnswer is None:
    try:
      userAnswer = float(input("Enter: " + prompt + ":"))
      if userAnswer < 0:
        userAnswer = None
        raise ValueError
    except:  
      print("Number must be greater than 0.")
      return userAnswer

def calcm(male,female):
  return (male / male + female) * 100

def calcf(female,male):
  return (female/ male + female) * 100

def diplay(percent_female,percent_male):
  print("Percent of Females is: ", percent_female)
  print("Percent of Males is: ", percent_male)

def main():
  number_females = askuser("number of females")
  number_males = askuser("number of males")

  percent_female = calcf(number_males,number_females)
  percent_male = calcm(number_males,number_females)

  display(percent_male,percent_female)


main()

谢谢!

2 个答案:

答案 0 :(得分:1)

您对返回userAnswer的对齐方式不正确。它应该在

之外
    except:
        print("Number must be greater than 0.")
    return userAnswer

答案 1 :(得分:1)

  • tryaskuser块中缺少返回语句
  • diplay方法名称中的错字。应该是display
  • 错误的百分比计算
  • calcfdisplay方法的参数列表中顺序错误

更新的代码:

def askuser(prompt):
  userAnswer = None
  while userAnswer is None:
    try:
      userAnswer = float(input("Enter: " + prompt + ":"))
      if userAnswer < 0:
        userAnswer = None
        raise ValueError
      return userAnswer
    except:  
      print("Number must be greater than 0.")


def calcm(male, female):
  return (male / (male + female)) * 100

def calcf(male, female):
  return (female / (male + female)) * 100

def display(percent_male, percent_female):
  print("Percent of Females is: ", percent_female)
  print("Percent of Males is: ", percent_male)

def main():
  number_females = askuser("number of females")
  number_males = askuser("number of males")

  percent_female = calcf(number_males,number_females)
  percent_male = calcm(number_males,number_females)

  display(percent_male,percent_female)


main()

输出:

output