数字猜谜游戏中的循环和验证

时间:2015-03-16 15:20:28

标签: python

我之前已经研究过Visual Basic for Applications,并且本周我正在慢慢开始使用python。由于我是新的程序员,请耐心等待。我理解到目前为止我遇到的大多数概念,但目前处于一堵砖墙。

我写了一些函数来帮助我编写一个数字猜谜游戏。用户输入一个4位数字。如果它与生成的程序匹配(我已将其编码),则Y将附加到输出列表中。如果没有,那就是N.

EG。我输入4567,数字是4568.从列表中打印的输出是YYYN。

import random 

def A(): 
    digit = random.randint(0, 9)
    return digit 

def B(): 
    numList = list() 
    for counter in range(0,4):
        numList.append(A()) 
    return numList 


def X():
    output = []

    number = input("Please enter the first 4 digit number: ")

    number2= B()



for i in range(0, len(number)):
    if number[i] == number2[i]:
        results.append("Y")
    else:
        results.append("N") 

print(output)

X()

我已将所有这些编码,但缺少一些东西:

  1. 一个循环。我不知道如何循环它所以我可以让它再次询问。我只希望这个人能够猜测5次。我正在设想某种类似for循环的计数器,如“从计数器1-5,当我达到5我结束”但不确定如何编程。

  2. 我编写了一个独立的验证代码段,但不知道如何在循环中集成它,所以例如如果有人输入444a,它应该说这不是一个有效的条目并让他们尝试再次。我在下面尝试了这个。

    while myNumber.isnumeric() == True and len(myNumber) == 4:
        for i in range(0, 4)):  
            if myNumber[i] == progsNumber[i]:
                outputList.append("Y")
            else:
                outputList.append("N")
    
  3. 尝试解决这个问题做了一些很好的尝试,但努力将它们拼凑起来。是否有人能够向我展示一些方向,让我们共同组成一个工作计划?我希望我编写的这些核心元素可以帮助你帮助我!

1 个答案:

答案 0 :(得分:1)

回答你的两个问题:

  1. 幸运的是,循环很容易。要循环一些代码五次,您可以设置tries = 5,然后执行while tries > 0:并在循环内的某处执行tries -= 1

    如果您想提前退出循环(当用户正确回答时),您可以简单地使用break关键字" break"跳出循环。您也可以,如果您愿意,可以设置tries = 0,以便循环不会继续迭代。

  2. 您可能希望将验证放在if的循环中(与您尝试的while循环语句相同)。只检查输入是否有效,否则continue停止循环的当前迭代并继续下一个(重新开始)。

  3. 所以在代码中:

    answer = [random.randint(0, 9) for i in range(4)]
    
    tries = 5
    while tries > 0:
        number = input("Please enter the first 4 digit number: ")
    
        if not number.isnumeric() or not len(number) == len(answer):
            print('Invalid input!')
            continue
    
        out = ''
        for i in range(len(answer)):
            out += 'Y' if int(number[i]) == answer[i] else 'N'
    
        if out == 'Y' * len(answer):
            print('Good job!')
            break
    
        tries -= 1
        print(out)
    else:
        print('Aww, you failed')
    

    我还在else达到零之后添加tries以查看失败(请参阅Python docsthis SO answer