首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迷你项目2:猜测一个数字循环

迷你项目2:猜测一个数字循环
EN

Code Review用户
提问于 2023-03-02 03:01:47
回答 2查看 834关注 0票数 4
代码语言:javascript
复制
import random
random_number = random.randint(1, 15)
guess = int(input("What do you think my number is? "))
tries = 1

while guess != random_number:
    tries = tries + 1
    retry = int(input("You got it wrong you're welcome to try again: "))
    if retry == random_number:
        print(f"You got it right in {tries} tries ")
        break
if guess == random_number:
    print("You got it right on your first try are you a god?")

因此,在这篇文章中,我考虑了前面告诉我的Python的一些命名约定(尽管我在这里没有使用函数,因为我仍然在尝试如何在变量上实现它们)。我也花了时间学习如何导入,尽管我对.randint()的使用几乎没有触及表面,这对我来说是个很大的挑战。我也很难弄清楚如何阻止while循环在while循环的每次运行中重复第8行。我认为它一直在重复,因为从技术上来说,我猜想!= random_number,所以我在其中添加了一个中断,因为我认为,一旦猜对了,添加一个中断将阻止while循环打印出第一个字符串(尽管这可能不是它工作的原因,但如果您有一个答案,我很想了解它为什么工作),我也意识到如果我使用一个函数而不是猜测变量,整个过程可能会更简单,但至少我现在知道了。

编辑:我读过一些人们一直在说的话,我真的很感激他们的帮助和崩溃,尤其是为什么休息有效。

EN

回答 2

Code Review用户

发布于 2023-03-02 07:42:03

您需要break语句的原因是,变量guess从未在用户第一次输入之后被修改。如果将用户的猜测分配给guess变量,则不需要break

代码语言:javascript
复制
import random
random_number = random.randint(1, 15)
guess = int(input("What do you think my number is? "))
tries = 1

while guess != random_number:
    tries = tries + 1
    guess = int(input("You got it wrong you're welcome to try again: "))
    if guess == random_number:
        print(f"You got it right in {tries} tries ")
if guess == random_number:
    print("You got it right on your first try are you a god?")

现在,循环条件将停止循环。但是,if循环之后的while语句将始终打印消息,因为此时guess == random_number始终为真。我们需要改变if条件。由于消息与用户在第一次尝试时的猜测有关,所以让我们使用tries变量。

代码语言:javascript
复制
import random
random_number = random.randint(1, 15)
guess = int(input("What do you think my number is? "))
tries = 1

while guess != random_number:
    tries = tries + 1
    guess = int(input("You got it wrong you're welcome to try again: "))
    if guess == random_number:
        print(f"You got it right in {tries} tries ")
if tries == 1:
    print("You got it right on your first try are you a god?")

关于print(f"You got it right in {tries} tries "):这将只运行一次,因为导致它运行的条件将立即终止循环。让我们把它移出循环。只有当用户在第一次尝试时猜测错误时才运行这一行,因此tries != 1。这与if循环后面的while条件正好相反,因此我们可以在这里使用else分支。

代码语言:javascript
复制
import random
random_number = random.randint(1, 15)
guess = int(input("What do you think my number is? "))
tries = 1

while guess != random_number:
    tries = tries + 1
    guess = int(input("You got it wrong you're welcome to try again: "))

if tries == 1:
    print("You got it right on your first try are you a god?")
else:
    print(f"You got it right in {tries} tries ")

现在,这个程序有了一个很好的逐步结构:

  1. 创建一个随机数
  2. 获得用户的第一猜测
  3. 当用户的猜测是错误的,继续询问更多的猜测
  4. 根据用户需要的猜测数打印消息

对于最后的编辑,tries = tries + 1也可以编写如下:tries += 1

票数 10
EN

Code Review用户

发布于 2023-03-02 08:39:05

很难处理好输入:

猜测=int(输入(“您认为我的号码是什么?”)

尝试这几次,看看如果输入一些不是数字的东西会发生什么:int()转换会抛出一个ValueError,而且由于我们没有捕捉到它,这会杀死整个程序。

我们可以通过创建一个读取整数的函数来改进这一点,并要求用户重试是否提供了其他内容:

代码语言:javascript
复制
def int_input(prompt):
    while True:
        try:
            return int(input(prompt))
        except ValueError:
            print("An integer value is required")

现在我们可以写

代码语言:javascript
复制
guess = int_input("What do you think my number is? ")
票数 5
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/283674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档