首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:绝对初学者“游戏”模块的Python编程中出现循环错误

Python:绝对初学者“游戏”模块的Python编程中出现循环错误
EN

Stack Overflow用户
提问于 2013-12-30 05:50:50
回答 2查看 150关注 0票数 1

我正在学习Python,在这段代码中遇到了一些问题。我甚至拉下了作者的代码,它也有同样的问题。:(

在导入“随机”模块和“游戏”模块(包括"ask_number()“函数和”玩家“的类定义)之后,我们得到:

代码语言:javascript
复制
again = None
while again != "n":
    players = []
    num = games.ask_number(question = "How many players? (2-5): ", low = 2, high = 5)
    for i in range(num):
        name = input("Player name: ")
        score = random.randrange(100) + 1
        player = games.Player(name, score)
        players.append(player)

"ask_number()“函数如下所示:

代码语言:javascript
复制
def ask_number(question, low, high):
    """Ask for a number within a range."""
    response = None
    while response not in range(low, high):
        response = int(input(question))
    return response

然而,当程序运行时,问题“多少玩家?(2-5):”会无限地出现,而不管输入的是什么数字作为响应。显然,似乎建立了某种错误的循环,但我不知道这对我的生活是什么(这就是为什么我是一个“绝对的初学者”,哈哈!)。

提前感谢你让我恢复理智!:)

编辑:因为我认为问题仅仅是ask_number()函数的语法问题,所以我不想附加太多无关的代码。学到了这一课!:)这是一个完整的循环,所以它看起来确实有一个可变的值。(请注意,"ask_yes_no()“函数也在”游戏“模块中。)

代码语言:javascript
复制
again = None
while again != "n":
    players = []
    num = games.ask_number(question = "How many players? (2-5): ", low = 2, high = 5)
    for i in range(num):
        name = input("Player name: ")
        score = random.randrange(100) + 1
        player = games.Player(name, score)
        players.append(player)
    print("\nHere are the game results:")
    for player in players:
        print(player)
    again = games.ask_yes_no("\nDo you want to play again? (y/n): ")
EN

回答 2

Stack Overflow用户

发布于 2013-12-30 05:54:16

你是说

代码语言:javascript
复制
while again != "n":

但你再也没有做过任何事情!因为它再一次不会等于'n‘,它永远不会退出循环

票数 2
EN

Stack Overflow用户

发布于 2013-12-30 05:56:45

您永远不会更改again的值。为了解决这个问题,您可以添加以下内容

代码语言:javascript
复制
again = raw_input("Play again?: ")

while循环的末尾。

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

https://stackoverflow.com/questions/20830455

复制
相关文章

相似问题

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