首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python线程和多循环问题

Python线程和多循环问题
EN

Stack Overflow用户
提问于 2018-06-28 16:39:49
回答 1查看 26关注 0票数 0

所以我创造了一个游戏,你买气球,你买的越多,你赚的越多。要做到这一点,我需要帮助添加金钱,问题是我需要两个循环,一个在无限循环上,另一个在计时器循环上。我通过线程完成了这两个循环。我打印了一些文本来测试它们是否有效。如果他们像我希望的那样工作,它应该做一个无限循环,他们两个永远都会去Loop1 Loop2 Loop1 Loop2 Loop1 Loop2

但是它只做了Loop1 Loop2一次,这表明它不是无限循环的。这是我的源代码,有点乱,但那是因为我是新手

代码语言:javascript
复制
###Game###

#Imports#
import time
import threading

##Setting Variables##
#Money Variables
money=1
money_ps=0
#Number of Balloons#
red_balloon_num=0
blue_balloon_num=0
yellow_balloon_num=0
green_balloon_num=0
pink_balloon_num=0
total_num=0

#Defining
def moneyps():
        global money_ps
        money_ps=(red_balloon_num*0.1)+(blue_balloon_num*1)+(yellow_balloon_num*10)+(green_balloon_num*100)+(pink_balloon_num*1000)

def loop1():    
        #Loop#
        while True:
                print("loop1")
                time.sleep(1)
                #Input#
                inp=input().lower()
                word1=inp.split()[:1]              

                #Buying Balloon#
                if inp=="buy" or inp=="purchase":
                        print("What would you like to buy")
                        print("•Red Balloon (£1)")
                        print("•Blue Balloon (£100)")
                        print("•Yellow Balloon (£10000)")   
                        print("•Green Balloon (£1000000)")
                        print("•Pink Balloon (£100000000)")
                        inp=input().lower()

                        #Red Balloon#
                        if inp=="red balloon":
                                if money >= 1:
                                        money-=1
                                        red_balloon_num+=1
                                        print("You successfully bought a Red Balloon")
                                else:
                                        print("You are unable to afford this")

                        #Blue Balloon#
                        elif inp=="blue balloon":
                                if money >= 100:
                                        money-=100
                                        blue_balloon_num==1
                                        print("You successfully bought a Blue Balloon")
                                else:
                                        print("You are unable to afford this")

                        #Yellow Balloon#
                        elif inp=="yellow balloon":
                                if money >= 10000:
                                        money-=10000
                                        yellow_balloon_num==1
                                        print("You successfully bought a Yellow Balloon")
                                else:
                                        print("You are unable to afford this")

                        #Green Balloon#
                        elif inp=="green balloon":
                                if money >= 1000000:
                                        money-=1000000
                                        green_balloon_num==1
                                        print("You successfully bought a Green Balloon")
                                else:
                                        print("You are unable to afford this")

                        #Pink Balloon
                        elif inp=="pink balloon":
                                if money >= 100000000:
                                        money-=100000000
                                        pink_balloon_num==1
                                        print("You successfully bought a Pink Balloon")
                                else:
                                        print("You are unable to afford this")

                #Check Amount of Money In Bank#
                elif inp=="bank":
                        print("You have £",money)

                #Checks How Much They Earn Per Second#
                elif inp=="money per second":
                        print("You are earning £",money_ps,"Per Second")


                ##Checks Amount of Balloons
                #Number of Red Balloons
                elif inp=="red balloon":
                        if red_balloon_num==1:
                                print("You have 1 Red Balloon")
                        else:
                                print("You have",red_balloon_num,"Red Balloons")

                #Number of Blue Balloons
                elif inp=="blue balloon":
                        if blue_balloon_num==1:
                                print("You have 1 Blue Balloon")
                        else:
                                print("You have",blue_balloon_num,"Blue Balloons")

                #Number of Yellow Balloons#
                elif inp=="yellow balloon":
                        if yellow_balloon_num==1:
                                print("You have 1 Yellow Balloon")
                        else:
                                print("You have",yellow_balloon_num,"Yellow Balloons")

                #Number of Green Balloons#
                elif inp=="green balloon":
                        if green_balloon_num==1:
                                print("You have 1 Green Balloon")
                        else:
                                print("You have",green_balloon_num,"Green Balloons")

                 #Number of Pink Balloons#
                elif inp=="pink balloon":
                        if pink_balloon_num==1:
                                print("You have 1 Pink Balloon")
                        else:
                                print("You have",pink_balloon_num,"Pink Balloons")

                #Quit#
                elif inp=="quit":
                        break

                else:
                        print("Sorry this is not an available command")

def loop2():
        print("Loop2")
        time.sleep(1)

thread1 = threading.Thread(target=loop1)
thread1.start()

thread2 = threading.Thread(target=loop2)
thread2.start()

谢谢你的帮助,非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2018-06-28 16:49:38

当你的主线程退出时,线程停止运行。在您的程序中,您启动了两个新线程,但不要让主线程等待它们完成工作。

尝试将.join()调用添加到您的主脚本:

代码语言:javascript
复制
thread1.join()
thread2.join()

另外,如果你想要"Loop1 Loop2 Loop1 Loop2...",你的loop2函数也需要一个无限循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51078345

复制
相关文章

相似问题

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