Python 我的程序在循环中无限次地生成打印语句。Don';我不知道如何修理它
因此,我正在尝试学习Python,并且我已经编写了一个程序,该程序基本上是为与用户和计算机一起玩游戏而设计的 这个游戏的机制是: 有两个玩家:用户和计算机,他们轮流轮换,直到其中一个达到100分或更高 •用户始终是第一个玩家 •如果任何玩家在回合结束时达到100分或以上,游戏将立即结束,而另一名玩家不会获得另一回合 •一个回合包括以下内容:玩家掷一个6面骰子。Python 我的程序在循环中无限次地生成打印语句。Don';我不知道如何修理它,python,loops,boolean,Python,Loops,Boolean,因此,我正在尝试学习Python,并且我已经编写了一个程序,该程序基本上是为与用户和计算机一起玩游戏而设计的 这个游戏的机制是: 有两个玩家:用户和计算机,他们轮流轮换,直到其中一个达到100分或更高 •用户始终是第一个玩家 •如果任何玩家在回合结束时达到100分或以上,游戏将立即结束,而另一名玩家不会获得另一回合 •一个回合包括以下内容:玩家掷一个6面骰子。 o如果他们掷1,他们得1分,他们的回合结束。即使一个球员 前几次掷骰的累积分数,如果掷1,则该回合的分数为1分,回合结束 o如果他们掷任
o如果他们掷1,他们得1分,他们的回合结束。即使一个球员 前几次掷骰的累积分数,如果掷1,则该回合的分数为1分,回合结束 o如果他们掷任何其他号码,掷骰分数将添加到总回合数中 o然后,他们可以选择继续滚动或持有。玩家在一个回合中可以掷多少次球没有限制 •等待:如果玩家等待,他们将获得当前回合总数,回合结束。如果,, 例如,一名球员掷3、4和2,然后决定持球,他们得9分 •如果玩家是用户,他们可以选择是否想要
每次滚动模具后,继续滚动或保持,且未获得1 •如果玩家是计算机,他们将始终继续滚动,直到轮到总次数
达到值10或更高 代码的问题在于,当代码运行时,它会生成一个无限打印语句。我在主函数中设置is_user_turn=True,然后将其转换为布尔语句。我已对代码进行了排序,但有一些代码我没有看到,需要帮助修复。 代码如下:
import random
def welcome():
print("Welcome to Jeopordy")
def print_current_player(is_user_turn):
if (is_user_turn == True):
print("It is now human's turn")
if (is_user_turn == False):
print("It is now computer's turn")
def roll_die():
roll = random(1,6)
return roll
def take_turn(is_user_turn,Computer_Hold):
turn_total = 0
if(is_user_turn == True):
while(is_user_turn == True):
roll = roll_die()
if(roll == 1):
return 1
turn_total = turn_total + roll
print("Your turn total is 1")
is_user_turn = False
else:
print("You rolled a ",roll)
turn_total = turn_total + roll
print("Your turn total is ",turn_total)
play = input("Do you want to roll gain (Y/N)?")
if(play == 'N' or play == 'n'):
is_user_turn = False
return turn_total
else:
is_user_turn == True
if(is_user_turn == False):
while(is_user_turn == False):
roll = roll_die()
while(turn_total <= Computer_Hold):
if(roll + turn_total <= Computer_Hold):
print("You rolled a ", roll)
turn_total = turn_total + roll
print("Your turn total is ",turn_total)
return turn_total
def report_points(userscore,computerscore):
print("computer: ",computerscore)
print("user: ",userscore)
def get_next_player(is_user_turn):
if(is_user_turn == True):
is_user_turn = False
return is_user_turn
else:
is_user_turn = True
return is_user_turn
def main():
Game_End_Points = 100
Computer_Hold = 10
is_user_turn = True
userscore = 0
computerscore = 0
welcome()
while(userscore <= Game_End_Points and computerscore <= Game_End_Points):
print_current_player(is_user_turn)
if(get_next_player(is_user_turn) == True):
userscore = userscore + take_turn(is_user_turn,Computer_Hold)
report_points(userscore,computerscore)
get_next_player(is_user_turn)
elif(get_next_player(is_user_turn) == False):
computerscore = computerscore + take_turn(is_user_turn,Computer_Hold)
report_points(userscore,computerscore)
get_next_player(is_user_turn)
main()
随机导入
def welcome():
打印(“欢迎来到Jeopordy”)
def打印当前播放器(是否轮到用户):
如果(is_user_turn==True):
打印(“现在轮到人类了”)
如果(is_user_turn==False):
打印(“现在轮到计算机了”)
def roll_die():
滚动=随机(1,6)
回程辊
def轮到(是用户轮到,计算机保持):
总匝数=0
如果(is_user_turn==True):
while(is_user_turn==True):
滚转=滚转模具()
如果(滚动==1):
返回1
回合总数=回合总数+掷骰
打印(“您的总回合数为1”)
是用户吗
其他:
打印(“您滚动了一个”,滚动)
回合总数=回合总数+掷骰
打印(“您的总轮次为”,总轮次为)
play=输入(“您是否希望滚动增益(Y/N)?”)
如果(播放='N'或播放='N'):
是用户吗
返回回合总数
其他:
_user_turn==真吗
如果(is_user_turn==False):
while(is_user_turn==False):
滚转=滚转模具()
虽然(turn_total我不能确定,但这可能会导致循环,或者至少会给您带来一些问题:
if(play == 'N' or play == 'n'):
is_user_turn = False
return turn_total
else:
is_user_turn == True
在else语句中,您正在检查is_user_turn是否为True,而不是为其分配一个True值。看起来它应该是is_user_turn=True
我不能确定,但看起来这可能会导致循环,或者至少会给您带来一些问题:
if(play == 'N' or play == 'n'):
is_user_turn = False
return turn_total
else:
is_user_turn == True
在else语句中,您正在检查is_user_turn是否为True,而不是为其赋值。看起来它应该是is_user_turn=True
变量userscore
将始终小于游戏结束点
,因此将是计算机分数,因此将无限循环,在循环
while(userscore <= Game_End_Points and computerscore <= Game_End_Points):
print_current_player(is_user_turn)
userscore=userscore+10 #something like this
computerscore+=10
while(userscore变量userscore
将始终小于游戏结束点
以及计算机分数,因此将无限循环,在循环中使用一些计数器
while(userscore <= Game_End_Points and computerscore <= Game_End_Points):
print_current_player(is_user_turn)
userscore=userscore+10 #something like this
computerscore+=10
while(userscore这部分是错误:
while(userscore <= Game_End_Points and computerscore <= Game_End_Points):
print_current_player(is_user_turn)
因为你的函数不会改变userscore或computerscore,所以它会被卡在那里。这是我现在的提示。如果你需要进一步的帮助,请询问评论。
增加提示:“缩进”
另外,刚刚检查了整个代码——似乎还有其他错误:)这部分就是错误:
while(userscore <= Game_End_Points and computerscore <= Game_End_Points):
print_current_player(is_user_turn)
因为你的函数不会改变userscore或computerscore,所以它会被卡在那里。这是我现在的提示。如果你需要进一步的帮助,请询问评论。
增加提示:“缩进”
另外,刚刚检查了整个代码——似乎还有其他错误:)欢迎使用StackOverflow。请阅读并遵循帮助文档中的发布指南。适用于此处。在您发布MCVE代码并准确描述问题之前,我们无法有效帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。我们不需要所有的备份ound和您的整个程序。请精简您的问题。您已经缩小了问题的范围-太好了!只需发布该部分!您只是在while循环后的8行缩进中有一个错误。它们应该是while循环的一部分。您是否期望main()中的is\u user\u turn
值
改变,比如通过调用get_next_player
?因为它不会改变。(顺便说一句,考虑到该函数的功能,该函数的名称非常容易误导,而且该函数是一个不必要的复杂实现,基本上是返回而不是用户
)欢迎使用StackOverflow。请阅读并遵循帮助文档中的发布指南。适用于此处。只有在您发布MCVE代码并准确发布之前,我们才能有效地帮助您