Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以创建一个用户列表,以便使用python将新用户添加到一个简单的游戏中?_Python - Fatal编程技术网

有没有一种方法可以创建一个用户列表,以便使用python将新用户添加到一个简单的游戏中?

有没有一种方法可以创建一个用户列表,以便使用python将新用户添加到一个简单的游戏中?,python,Python,我正在尝试创建一个简单的游戏(掷骰子),允许您添加多个用户,我遇到了一些问题。现在我的问题是我无法从嵌套循环中正确地获得列表输出。(我知道值需要打印,但我有点卡住了) 预期结果:要打印的列表“这是返回玩家列表” 实际结果:陷入while循环正如我在评论中提到的,似乎有两个问题。第一,在login()函数中有一个无限循环。而(真的)永远是真的。在下面的代码中,我将用于检索用户数量的用户输入的函数分离到它自己的函数中。此函数利用python没有显式类型的事实(这意味着您可以更改同一变量的类型) 第二

我正在尝试创建一个简单的游戏(掷骰子),允许您添加多个用户,我遇到了一些问题。现在我的问题是我无法从嵌套循环中正确地获得列表输出。(我知道值需要打印,但我有点卡住了)

预期结果:要打印的列表“这是返回玩家列表”
实际结果:陷入while循环

正如我在评论中提到的,似乎有两个问题。第一,在
login()函数中有一个无限循环。而(真的)永远是真的。在下面的代码中,我将用于检索用户数量的用户输入的函数分离到它自己的函数中。此函数利用python没有显式类型的事实(这意味着您可以更改同一变量的类型)

第二个问题是,
login()
函数不返回任何内容。这意味着在
game\u start()
函数中,
users=login()
行将始终为空。这将使您的下一行失败,因为您没有用户列表。我在下面添加了返回语句

尽可能接近原始发布的解决方案

def login():
    while True: 
        try:
            user_count = int(input("Enter the number of users that wish to play..."))
            print("The number of user is: ", user_count)

            username = []

            for i in range(1,user_count + 1):
             username.append(input(f"What is player {i} name?"))
             print(f'Welcome, {username[i-1]} you have been successfully logged in.')
            return username

        except ValueError:
            print("Oops! That was no vaild number. Try again...")

利用非显式键入解决问题的旧方法 =================================================

def getUserCount():
    user="NULL"
    while(type(user)!= int):
        userTemp=input("Enter the number of users that wish to play: ")
        try:
            user=int(userTemp)
        except ValueError:
            print("Oops! That was no vaild number. Try again...")
    return user

def login():
    user_count=getUserCount()
    print("The number of user is: ", user_count)
    username = []
    for i in range(1,user_count + 1):
        username.append(input(f"Enter player {i} name: "))
        print(f'Welcome, {username} you have been successfully logged in.')
    return username
下面是一个仅使用这两个函数的示例输出:

>>> login()
Enter the number of users that wish to play: nope
Oops! That was no vaild number. Try again...
Enter the number of users that wish to play: not
Oops! That was no vaild number. Try again...
Enter the number of users that wish to play: gonna
Oops! That was no vaild number. Try again...
Enter the number of users that wish to play: work
Oops! That was no vaild number. Try again...
Enter the number of users that wish to play: 3
The number of user is:  3
Enter player 1 name: one
Welcome, ['one'] you have been successfully logged in.
Enter player 2 name: two
Welcome, ['one', 'two'] you have been successfully logged in.
Enter player 3 name: three
Welcome, ['one', 'two', 'three'] you have been successfully logged in.
['one', 'two', 'three']
正如您所看到的,在login()函数中打印username会打印整个数组,我敢肯定这是不需要的。我已经用下面的
login()
定义解决了这个问题

def login():
    user_count=getUserCount()
    print("The number of user is: ", user_count)
    username = []
    for i in range(1,user_count + 1):
        username.append(input(f"Enter player {i} name: "))
        #username[i-1] since i starts at 1 and not 0
        print(f'Welcome, {username[i-1]} you have been successfully logged in.')
    return username
提供的示例输出:

>>> login()
Enter the number of users that wish to play: strings?
Oops! That was no vaild number. Try again...
Enter the number of users that wish to play: *@#
Oops! That was no vaild number. Try again...
Enter the number of users that wish to play: 3
The number of user is:  3
Enter player 1 name: one
Welcome, one you have been successfully logged in.
Enter player 2 name: four
Welcome, four you have been successfully logged in.
Enter player 3 name: seven
Welcome, seven you have been successfully logged in.
['one', 'four', 'seven']

你永远不会跳出while循环你似乎在任何时候都不会退出while循环,你只是将它设置为while True,并且永远不会告诉计算机跳出while循环这里有一些奇怪的事情。第一,while循环没有退出条件。While(true)将始终为true,因此它将不断要求您输入用户。我立即注意到的第二件事是,登录函数没有返回语句。这意味着用户的game_start()方法变量将始终为空。这将阻止你的游戏(用户)方法工作,如果我使用返回打破我的while循环,它不会返回我需要的值。我以前也尝试过类似的方法,但不必破例,因为它是有效的。但是,当我使用列表时,它不是t@TokenThinker没问题。关于我分享的任何问题,请让我知道!我从周一到周五在一天中的不同时间进行检查。如果愿意的话,我可能能够在不使用python允许的类型更改的情况下提出一个解决方案,但这需要比我现在花费更多的时间。@Token实际上我刚刚意识到解决您的问题相当简单。您只需要一个return语句,而不需要为键入用户输入做很多额外的工作。现在添加最接近的原始更改
>>> login()
Enter the number of users that wish to play: strings?
Oops! That was no vaild number. Try again...
Enter the number of users that wish to play: *@#
Oops! That was no vaild number. Try again...
Enter the number of users that wish to play: 3
The number of user is:  3
Enter player 1 name: one
Welcome, one you have been successfully logged in.
Enter player 2 name: four
Welcome, four you have been successfully logged in.
Enter player 3 name: seven
Welcome, seven you have been successfully logged in.
['one', 'four', 'seven']