gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 05:53:16 24 4
gpt4 key购买 nike

我之前学习过 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com