【问题标题】:Python 3 input and if statementPython 3 输入和 if 语句
【发布时间】:2013-09-08 02:20:51
【问题描述】:

我在输入问题时遇到了一些问题,该问题应该允许玩家选择 5 场起跑比赛之一。我使用了以下代码。

def racechoice():
    players.race = input('After you get a chance to think, you choose to be...') #Here race is chosen
    if players.race == "dwarf" or "Dwarf": #Race starting stats
        players.race = "Dwarf"
        players.level = 1
        players.strength = 12
        players.agility = 6
        players.inteligence = 8
        players.vitality = 14
    elif players.race == "Orc" or "orc":
        players.race = "Orc"
        players.level = 1
        players.strength = 14
        players.agility = 10
        players.inteligence = 4
        players.vitality = 12
    elif players.race == "elf" or "Elf":
        players.level = 1
        players.race = "Elf"
        players.strength = 8
        players.agility = 13
        players.inteligence = 12
        players.vitality = 7
    elif players.race == "Human" or "human":
        players.level = 1
        players.race = "Human"
        players.strength = 10
        players.agility = 10
        players.inteligence = 10
        players.vitality = 10
    elif players.race == "gnome" or "Gnome":
        players.race = "Gnome"
        players.strength = 5
        players.agility = 11
        players.intelligence = 17
        players.vitality = 7

当调用显示玩家的统计数据时:

def stats():
    print(players.name)
    print(players.race)
    print("Level: "+ str(players.level) +" Strength: "+ str(players.strength) +" Agility: " + str(players.agility) +" Inteligence: "+ str(players.inteligence) +" Vitality: "+ str(players.vitality))

无论玩家选择什么,它都会以 Dwarf 状态返回。我是 Python 新手,想知道我没有正确使用 if/elif 语句吗? ex) 在你有机会思考之后,你选择成为……兽人 欧共体 矮人 等级:1 力量:12 敏捷:6 智力:8 活力:14

【问题讨论】:

  • 这确实与了解如何使用有效选项列表处理用户输入有关。游戏只是你工作的环境,但它是你需要理解的概念。
  • 如果您打算使用标签,请查看可用的标签,并在本网站上阅读它们的含义,这是为专业和“爱好者”程序员而设的。 RPG 是专业程序员中使用最广泛的语言之一,它在比大多数人意识到的更多公司的幕后运行核心业务应用程序。

标签: validation if-statement python-3.x user-input


【解决方案1】:

有问题,你应该这样做:

if players.race == "dwarf" or "players.race == Dwarf":

但更好的是,将条件更改为:

elif players.race.lower() == "orc":

也建议你使用一个类来封装功能,例如:

class Player(object):
    def __init__(self, race, level, strength, agility, inteligence, vitality):
        self.race = race
        self.level = level
        self.strength = strength
        self.agility = agility
        self.inteligence = inteligence
        self.vitality = vitality

player = Player('Dwarf', 1, 12, 6, 8, 14)

那么您的 racechoice 函数将如下所示:

def racechoice():
    race = input('After you get a chance to think, you choose to be...')
    if race.lower() == 'dwarf':
        player = Player('Dwarf', 1, 12, 6, 8, 14)
    elif race.lower() == 'orc':
        player = Player('Orc', 1, 14, 10, 4, 12)
    ...
    return player

【讨论】:

  • 我更改了它,但是获得了相同的输出。仍在获取矮人种族和统计数据。
  • 函数racechoice怎么调用?
  • 我使用 racechoice() 调用它
  • 谢谢!最后一件事,回归玩家到底会做什么?
  • @IanMoon,这允许您在主代码中调用这样的函数:player = racechoice()
【解决方案2】:

您不能以这种方式使用or。您所有的if/elif 声明应采用以下形式:

if players.race == "dwarf" or players.race == "Dwarf":

"Dwarf" 本身被 Python 视为True,空字符串"" 被视为False,所以你的第一个if 总是成功的。

【讨论】:

  • 那行得通,并且得到了正确的输出。在你有机会思考之后,你选择成为……兽人 Ecep 兽人等级:1 力量:14 敏捷:10 智力:4 活力:12
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-25
相关资源
最近更新 更多