Python中的输出顺序错误

时间:2019-08-04 08:25:38

标签: python pygame

我正在使用pygame实现一个简单的游戏,但是在鼠标单击事件中遇到了一个奇怪的问题。

结果不是我所期望的,当我尝试使用打印功能进行调试时,发生了奇怪的事情。

#check if d1 and d2 have same keys, but d1.values > d2.values, 
#FOR Crafting purpose only
def check(d1, d2):
    a = d1.keys() == d2.keys()
    if a:   
        b = all(d1[k] >= d2[k] for k in d2)
        return b
    return a

def subtraction(d1, d2):
    d3 = {key: d1[key] - d2.get(key, 0) for key in d1.keys()}
    return d3   

def myFunction(basket, ingredients, recipes):

    #find all avaliable crafting recipe's name into a list
    c = craftable(basket)

    #convert basket of itemObj list into dict
    #for example, [apple, apple, banana] into {apple: 2, banna: 1}
    b = listToDict2(basket)

    #input recipes namelist and recipeObj list, return the recipeObjs that apper 
    #in namelist into a list
    recipes = get_recipes(c, recipes)
    result = []

    for i in range(0, len(recipes)):
        #each recipes[i] has few dicts
        for j in range(0, len(recipes[i].recipes_specific)):

            #check if the basket match the condition
            if check(b, recipes[i].recipes_specific[j]):
                new_item = get_ingreds(recipes[i].name, ingredients)
                result = subtraction(b, recipes[i].recipes_specific[j])
                result[new_item.name] = 1
                result = {k:v for k,v in result.items() if v != 0}
                return result

    #Crafting fail, resource in basket reduce to half
    result = dict_value_reduce(b)
    return result

if event.type == pygame.MOUSEBUTTONUP:
    #run my function to caculate the result
    result = myFunction(basket, ingredients, recipes)
    print("Just for testing.")
    print(result)
    print("Testing again.")

根据我的经验,如果我单击鼠标,则应首先打印“仅用于测试”,然后打印所需的结果,然后再打印“再次测试”。最后。

但是实际发生的是,当我单击鼠标时,它仅显示“仅用于测试”。然后停下来。如果再次单击,它将继续打印我的结果并“再次测试”。和“仅供测试”。

-----第一次单击-----

  

“仅供测试。”

-----第二次单击-----

结果

  

“再次测试。”

     

“仅供测试。”

-----第三次并进一步单击-----

结果

  

“再次测试。”

     

“仅供测试。”

我不明白这里发生了什么,为什么打印效果如此奇怪。 我没有将详细代码粘贴到myFuction中,但是如果问题是myFunction中的代码,我将更新myFunction中的代码。

0 个答案:

没有答案