Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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中的while循环和集合_Python_Loops_Set - Fatal编程技术网

python中的while循环和集合

python中的while循环和集合,python,loops,set,Python,Loops,Set,我正在编写一个函数,从预定义列表中获取用户的int输入,并将其添加到集合中。在将所有(11)项添加到集合中之前,代码工作得非常好。它一直在继续。是因为集合错误还是我的代码有逻辑错误 def append_guess(n): list_of_numbers = [1, 11, 7, 8, 12, 6, 15, 30, 5, 3, 2] guessed = set() while (n): try: n = int(input("E

我正在编写一个函数,从预定义列表中获取用户的
int
输入,并将其添加到集合中。在将所有(11)项添加到集合中之前,代码工作得非常好。它一直在继续。是因为集合错误还是我的代码有逻辑错误

def append_guess(n):

    list_of_numbers = [1, 11, 7, 8, 12, 6, 15, 30, 5, 3, 2]
    guessed = set()

    while (n):
        try:
            n = int(input("Enter an integer between 1-30 >> "))
            if n in list_of_numbers:
                print("right guess")
                guessed.add(n)
                print(guessed)
            else:
                print("Wrong Guess - Keep Trying!! ")
        except:
            if guessed == set(1, 2, 3, 5, 6, 7, 8, 11, 12, 15, 30):
                print("Great Job! You have Guessed All numbers")
                break

append_guess(1)

您可以将while循环条件更改为
len(猜测)
,以便在猜测并添加到集合中的
list\u数字时,while循环终止

代码块

def guessing_game():
    list_of_numbers = [1, 11, 7, 8, 12, 6, 15, 30, 5, 3, 2]
    guessed = set()

    while len(guessed) < len(list_of_numbers):
        n = int(input("Enter an integer between 1-30 >> "))
        if n in list_of_numbers:
            print(f"You guessed {n} which is correct")
            guessed.add(n)
        else:
            print("Wrong guess keep trying")
    print("You completed the game")
guessing_game()
def猜测游戏():
数字列表=[1,11,7,8,12,6,15,30,5,3,2]
猜测=集合()
而len(猜测)>”之间的整数)
如果n在\u编号列表中:
打印(f“您猜到了{n}哪一个是正确的”)
猜测。添加(n)
其他:
打印(“猜错,继续尝试”)
打印(“你完成了游戏”)
猜谜游戏

使用此代码块,您不需要try Exception,因为一旦猜到所有数字,代码将正确退出

您使用的
try
Exception
。它们一般不应用于常规程序逻辑。它们仅用于处理异常。此外,您不需要同时包含相同数字的列表和集合来进行正确的猜测

相反,将检查作为while循环的条件。所以可能是这样的:

correct_set = {1, 2, 3, 5, 6, 7, 8, 11, 12, 15, 30}
guessed = set()

while guessed != correct_set:
    n = int(input("Enter an integer between 1-30 >> "))
    if n in correct_set:
        print("right guess")
        guessed.add(n)
        print(guessed)
    else:
        print("Wrong Guess - Keep Trying!! ")

print("Great Job! You have Guessed All numbers")
def append_guess(guess, correct_set, guessed):
    if guess in correct_set:
        print("right guess")
        guessed.add(guess)
        print(guessed)
    else:
        print("Wrong Guess - Keep Trying!! ")
    return guessed

if __name__ == "__main__":
    correct_set = {1, 2, 3, 5, 6, 7, 8, 11, 12, 15, 30}
    guessed = set()

    while guessed != correct_set:
        guess = int(input("Enter an integer between 1-30 >> "))
        guessed = append_guess(guess, correct_set, guessed)

    print("Great Job! You have Guessed All numbers")
我不确定函数的用途是什么,但如果要将其分解为函数,可以将输入和检查逻辑分开,如下所示。我也会考虑用一个更好的名字来称呼“n”,也许叫“猜测”?比如说:

correct_set = {1, 2, 3, 5, 6, 7, 8, 11, 12, 15, 30}
guessed = set()

while guessed != correct_set:
    n = int(input("Enter an integer between 1-30 >> "))
    if n in correct_set:
        print("right guess")
        guessed.add(n)
        print(guessed)
    else:
        print("Wrong Guess - Keep Trying!! ")

print("Great Job! You have Guessed All numbers")
def append_guess(guess, correct_set, guessed):
    if guess in correct_set:
        print("right guess")
        guessed.add(guess)
        print(guessed)
    else:
        print("Wrong Guess - Keep Trying!! ")
    return guessed

if __name__ == "__main__":
    correct_set = {1, 2, 3, 5, 6, 7, 8, 11, 12, 15, 30}
    guessed = set()

    while guessed != correct_set:
        guess = int(input("Enter an integer between 1-30 >> "))
        guessed = append_guess(guess, correct_set, guessed)

    print("Great Job! You have Guessed All numbers")

这一切都很好

def append_guess():


append_guess()

我尝试过,但没有成功。一般来说,我还是python和编程的初学者。是否有可能与您之前的建议共享功能代码块?我已经更新了我的答案,添加了一个功能代码块谢谢您的巨大贡献和灵感!没有什么会导致异常。