Python没有运行被调用的函数

Python没有运行被调用的函数,python,function,python-3.x,Python,Function,Python 3.x,脚本一直运行到调用“takenotes”函数,然后在应该运行该函数时停止。没有任何错误,只是停止了。为什么会这样 # Please note that this only works in integer values, since there is no change in pence notes = (1,5,10,20,50) #Value of notes quantities = [10,8,5,5,1] #Quantities of notes # Defining variable

脚本一直运行到调用“takenotes”函数,然后在应该运行该函数时停止。没有任何错误,只是停止了。为什么会这样

# Please note that this only works in integer values, since there is no change in pence
notes = (1,5,10,20,50) #Value of notes
quantities = [10,8,5,5,1] #Quantities of notes
# Defining variables
notesout = []
total = 0
x = -1
payment = []
# This loop works out the total amount of cash in the cash register
while (x < 4):
        x += 1
        calc = notes[x]*quantities[x]
        total += calc
mon_nd = 70 # Money needed
def takenotes():
        print("Please input each notes value, when finished type \"stop\"")
        # If input is an int then add to payment list, if not then work out the change
        payment = [20,20,20,20]
        main()

def main():
        # Finds the value of the cash given
        paymentV = sum(payment)
        changeT = paymentV - mon_nd
        # Change the quantities of the 'quantities' variable
        for i in payment:
                quantities[notes.index(i)] = quantities[notes.index(i)] + 1
        while(changeT < 0):
                # Works out what amount of change should be given
                for i in reversed(notes):
                        if (changeT - i >= 0):
                                notesout.append(i)
                                quantities[notes.index(i)] = quantities[notes.index(i)]-1
                                changeT -= i
                        else:
                                return True
        print(notesout)
takenotes()
#请注意,这只适用于整数值,因为便士没有变化
票据=(1,5,10,20,50)#票据价值
数量=[10,8,5,5,1]#注释数量
#定义变量
notesout=[]
总数=0
x=-1
付款=[]
#这个循环计算出收银机中的现金总量
而(x<4):
x+=1
计算=注释[x]*数量[x]
总计+=计算值
mon_nd=70#需要钱
def takenotes():
打印(“请输入每个注释值,完成后键入\“停止\”)
#如果输入是整数,则添加到付款列表,如果不是,则计算更改
付款=[20,20,20,20]
main()
def main():
#查找给定现金的价值
paymentV=总额(付款)
changeT=paymentV-mon\u nd
#更改“数量”变量的数量
对于我的付款:
数量[注释索引(i)]=数量[注释索引(i)]+1
而(变化<0):
#计算出应该给多少变化
对于反向中的i(注释):
如果(changeT-i>=0):
注:追加(一)
数量[附注索引(i)]=数量[附注索引(i)]-1
changeT-=i
其他:
返回真值
打印(notesout)
笔记()

它不会“停止”<代码>笔记调用
main
;它到达while循环中的for循环;第一轮,
changeT-i
不大于0,因此返回True。由于您没有对
main
中的返回值执行任何操作,因此不会打印任何内容,程序将结束。

首先,您需要一个
global
语句来更改任何全局变量(如
payment


代码中也没有
input()
函数。请参阅。

此脚本运行正常。它调用takenotes()函数,然后正常执行(显示消息,设置localpayment数组,然后执行main()函数)。 你可以检查一下。您还可以一步一步地执行它,以查看脚本的具体功能


此外,如果要编辑全局变量,则必须使用global语句。阅读答案了解更多信息。

payment=[20,20,20,20]
不修改全局变量,使用
global
或更好地将值传递给函数
main()
。实际上@imaluengo这是错误的。代码审查是一个工作代码的站点,而不是失败代码的站点。这意味着:代码不仅必须运行,还必须产生正确的结果,因为这个问题是不可能解决的。欲了解更多信息,请参阅:@Vogel612哎哟!我不知道,对不起。完全认为
CodeReview
实际上是为了检查代码并发现bug(正如您的链接问题所述,我是没有阅读CodeReview帮助的人之一,但我刚刚学到了一个很好的教训)。谢谢在再次推荐codereview之前,我会三思而后行!:P
payment = []

def takenotes():
    global payment
    payment = [20, 20, 20, 20]