首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >raw_input每次都返回相同的东西吗?

raw_input每次都返回相同的东西吗?
EN

Stack Overflow用户
提问于 2013-01-23 09:29:02
回答 1查看 37关注 0票数 0

所以我在一个小文本冒险中为一个商店做了一个函数。代码如下:

代码语言:javascript
复制
def shop():
global p #prompt for raw_input
global gold
global arrows

print"""
You enter the small shop and the man at the counter asks "How can I help?"
"""

print"""
"What would you like to buy?" He asks
You look up at the list of items
Copper Axe - 50G
Copper Sword - 50G
Wooden Bow - 30G
Copper Arrows (20) - 20G
Iron Axe - 100G
Iron Sword - 100G
Iron Arrows (20) - 40G
Steel Axe - 200G
Steel Sword - 200G
Steel Arrows (20) - 80G

or type 'exit' to exit the store
    """
print"You have:"
print inv

op = raw_input(p)

if op == "copper axe" or "Copper axe" or "Copper Axe" or "copper Axe":
    if gold < 50:
        print"You do not have enough gold"
        shop()
    else:
        gold = gold - 50
        inv.append("Copper Axe")
        shop()
if op == "copper sword" or "copper Sword" or "Copper sword" or "Copper Sword":
    if gold < 50:
        print"You do not have enough gold"
        shop()
    else:
        gold = gold - 50
        inv.append("Copper Sword")
        shop()
elif op == "Wooden bow" or "wooden bow" or "Wooden Bow" or "wooden Bow":
    if gold < 30:
        print"You do not have enough gold"
        shop()
    else:
        gold = gold - 30
        inv.append("Wooden Bow")
        if arrows < 10:
            print"You should probably buy some arrows"
            shop()
elif op == "Copper Arrows" or "copper arrows" or "Copper arrows" or "copper Arrows":
    if gold < 20:
        print"You do not have enough gold"
        shop()
    else:
        gold = gold - 20
        arrows = arrows + 20
        inv.append("Copper Arrows: %p" % arrows)
        shop()
elif op == "iron axe" or "Iron axe" or "Iron Axe" or "iron Axe":
    if gold < 100:
        print"You do not have enough gold"
        shop()
    else:
        gold = gold - 100
        inv.append("Iron Axe")
        shop()
elif op == "iron sword" or "Iron Sword" or "Iron sword" or "iron Sword":
    if gold < 100:
        print"You do not have enough gold"
        shop()
    else:
        gold = gold - 100
        inv.append("Iron Sword")
        shop()
elif op == "iron arrows" or "Iron arrows" or "Iron Arrows" or "iron Arrows":
    if gold < 40:
        print"You do not have enough gold"
        shop()
    else:
        gold = gold - 40
        iarrows = iarrows + 20
        inv.append("Iron arrows %a" % iarrows)
        shop()
elif op == "Steel Axe" or "steel axe" or "Steel axe" or "steel Axe":
    if gold < 200:
        print"You do not have enough gold"
        shop()
    else:
        gold = gold - 200
        inv.append("Steel Axe")
        shop()
elif op == "Steel Sword" or "steel sword" or "Steel sword" or "steel Sword":
    if gold < 200:
        print"You do not have enough gold"
        shop()
    else:
        gold = gold - 200
        inv.append("Steel Sword")
        shop()
elif op == "Steel Arrows" or "steel arrows" or "Steel arrows" or "steel Arrows":
    if gold < 80:
        print"You do not have enough gold"
        shop()
    else:
        gold = gold - 80
        sarrows = sarrows + 20
        inv.append("Steel Arrows - %a" % sarrows)
elif op == "exit" or "Exit":
    menu()
else:
    synerr() #syntax error function

基本上,每次我运行它时,无论原始输入是什么,它都会以铜斧头的形式返回。如下所示:

代码语言:javascript
复制
You enter the small shop and the man at the counter asks "How can I help?"


"What would you like to buy?" He asks
You look up at the list of items
Copper Axe - 50G
Copper Sword - 50G
Wooden Bow - 30G
Copper Arrows (20) - 20G
Iron Axe - 100G
Iron Sword - 100G
Iron Arrows (20) - 40G
Steel Axe - 200G
Steel Sword - 200G
Steel Arrows (20) - 80G

or type 'exit' to exit the store

You have:
[]
>>>fkjas;ldkf

You enter the small shop and the man at the counter asks "How can I help?"


"What would you like to buy?" He asks
You look up at the list of items
Copper Axe - 50G
Copper Sword - 50G
Wooden Bow - 30G
Copper Arrows (20) - 20G
Iron Axe - 100G
Iron Sword - 100G
Iron Arrows (20) - 40G
Steel Axe - 200G
Steel Sword - 200G
Steel Arrows (20) - 80G

or type 'exit' to exit the store

You have:
['Copper Axe']
>>>

那么,有谁知道这可能是什么原因?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-23 09:32:31

此表达式:

代码语言:javascript
复制
op == "copper axe" or "Copper axe" or "Copper Axe" or "copper Axe"

是这样评估的:

代码语言:javascript
复制
(op == "copper axe") or "Copper axe" or "Copper Axe" or "copper Axe"

这是你想要的:

代码语言:javascript
复制
op == "copper axe" or op == "Copper axe" or op == "Copper Axe" or op == "copper Axe"

顺便说一句,这里有一个快捷键,转换为小写:

代码语言:javascript
复制
op.lower() == "copper axe"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14471042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档