python - 猜数游戏中的循环和验证

标签 python

我之前学习过 Visual Basic for Applications,本周我正在慢慢跟上 Python 的速度。由于我是一名新程序员,请耐心等待。到目前为止,我理解了我遇到的大部分概念,但目前仍处于困境。

我已经编写了一些函数来帮助我编写数字猜谜游戏。用户输入一个 4 位数字。如果它与生成的程序相匹配(我已经对此进行了编码),则在输出列表中附加一个 Y。如果不是,则为 N。

例如。我输入 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")
    

做了一些很好的尝试来解决这个问题,但努力将它们修补在一起。有谁能告诉我一些方向,让我把所有这些放在一起形成一个工作程序?我希望我编写的这些核心元素可以帮助您帮助我!

最佳答案

回答你的两个问题:

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

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

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

所以在代码中:

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')

我还在 while 之后添加了一个 else,当 tries 达到零以捕获失败时(参见 Python docs 或可能是 this SO answer)

关于python - 猜数游戏中的循环和验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29080508/

相关文章:

python - 如何从具有嵌套列表的列表中递归删除元素?

python - 绘制 For 迭代的结果

python - 为什么我不能在 numpy 中使用链式表达式?

Python 和 lmfit : How to fit multiple datasets with shared parameters?

Python初学者递归

python - 在 Pandas 数据框中找到最小值并在新列上添加标签

python - 无法初始化 peewee 的内存数据库

javascript - post请求不执行

python - Matplotlib 绘图未在 VS Code 中显示

python - Revit API收集器: Could not cast value:spaces to target_type: