【问题标题】:Python3 recursive function returning null [duplicate]Python3递归函数返回null [重复]
【发布时间】:2022-06-29 16:39:20
【问题描述】:

如果玩家在第一次尝试时输入了有效/定义的输入,则此代码完美运行。如果输入不正确(例如“theif”或“Warrior”),将再次调用该函数。然而,尽管第二次(或第三次)输入是正确的,但第二次(或第三次,...)时间将始终返回 null。

(这只是程序的一部分)

def classDecider():
    print("Available Classes: Swordsman, Magician, Thief")
    enteredClass = input("Enter Class: ")
    if enteredClass == "Swordsman":
        return "Swordsman"
    elif enteredClass == "Magician":
        return "Magician"
    elif enteredClass == "Thief":
        return "Thief"
    else:
        classDecider()        

def CharacterCreation():
    nameOfPlayer = input("Enter your name: ")
    chosenClass = classDecider()
    print(chosenClass)
    players.append(player(nameOfPlayer, chosenClass))
    chosenCharacter +=1
CharacterCreation()

【问题讨论】:

    标签: python recursion


    【解决方案1】:

    你忘记了else子句中的return,替换

    def classDecider():
        print("Available Classes: Swordsman, Magician, Thief")
        enteredClass = input("Enter Class: ")
        if enteredClass == "Swordsman":
            return "Swordsman"
        elif enteredClass == "Magician":
            return "Magician"
        elif enteredClass == "Thief":
            return "Thief"
        else:
            classDecider()
    

    使用

    def classDecider():
        print("Available Classes: Swordsman, Magician, Thief")
        enteredClass = input("Enter Class: ")
        if enteredClass == "Swordsman":
            return "Swordsman"
        elif enteredClass == "Magician":
            return "Magician"
        elif enteredClass == "Thief":
            return "Thief"
        else:
            return classDecider()
    

    【讨论】:

      【解决方案2】:

      只需添加返回

      ....
      else:
           return classDecider() 
      ....
      

      【讨论】:

        【解决方案3】:

        将您在 else 中的 classDecider() 更改为 return classDecider()。你必须返回最终结果

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-02-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-30
          • 1970-01-01
          • 2020-08-24
          • 2017-06-19
          • 1970-01-01
          相关资源
          最近更新 更多