Python while循环不适用于def()函数

Python while循环不适用于def()函数,python,python-3.x,Python,Python 3.x,我正在尝试一个程序,将两个元素添加到一起,形成一个新的元素,在这个过程中,您必须尽可能多地生成元素,例如。 但我似乎无法在while循环中重新运行我的定义。 当我运行它时,它似乎并没有从列表中删除[]。此外,它只运行一次,然后将终端留空 关于缩写,我很抱歉,我更喜欢这样,但如果需要,我可以更改 任何帮助都将不胜感激。 谢谢 这是我的密码: element1 = "" element2 = "" de = [] #discovered elements ne = "" #new element o

我正在尝试一个程序,将两个元素添加到一起,形成一个新的元素,在这个过程中,您必须尽可能多地生成元素,例如。 但我似乎无法在while循环中重新运行我的定义。 当我运行它时,它似乎并没有从列表中删除
[]
。此外,它只运行一次,然后将终端留空

关于缩写,我很抱歉,我更喜欢这样,但如果需要,我可以更改

任何帮助都将不胜感激。 谢谢

这是我的密码:

element1 = ""
element2 = ""
de = [] #discovered elements
ne = "" #new element
o1 = ""
o2 = ""
pne = ""

print("You have unlocked Fire, Water, Earth, and Air")
print("To see your unlocked elements, enter in 'menu' into the 'give the first element' option")

e1 = input("Give the first element ") #element 1
e2 = input("Give the second element ") #element 2

def pnestuff():
    pne = str(de); pne.strip("["); pne.strip("]")

def operate(x, y, z):
    global e1
    global e2
    o1 = (x)
    o2 = (y)
    ne = (z)
    if (e1 == o1 and e2 == o2) or (e1 == o2 and e2 == o1):
        de.append(ne)
        print("You have unlocked "+ne+"!")
        print("Your complete element list:")
        pnestuff()
        print(pne)
        e1 = ""
        e2 = ""

def menu():
    global e1
    global e2
    if e1 == "menu":
        print("You have unlocked:")
        pnestuff()
        print(pne)
        e1 = ""
        e2 = ""

#===============================================================================#

while 1:

    menu()

    operate("fire", "water", "steam")

总的来说,您的代码是一个灾难。但让我们关注一下你眼前的问题。我猜是这样的:

def pnestuff():
    pne = str(de); pne.strip("["); pne.strip("]")
它想要设置全局
pne
,但无法将其声明为全局,并且无法理解字符串是不可变的:

虽然更好的定义可能是:

def pnestuff():
    global pne
    pne = ', '.join(de)

我忘了在while循环中放置两个insert元素行。脸掌。感谢大家对x.join的帮助一般来说,您的整个代码片段没有什么意义。但是这个特殊的语句:
pne.strip(“[”
(和下面的一个)并没有做你认为他们正在做的事情。在使用这个函数之前阅读
help(str.strip)
。或者更好的是
def pnestuff(pne,de):
传入你想要使用的变量,而不是让函数在全局变量上运行。
def pnestuff():
    global pne
    pne = ', '.join(de)