什么是嵌套循环?如何在下面的示例中使用它?

2024-04-25 00:05:56 发布

您现在位置:Python中文网/ 问答频道 /正文

给了我下面的python类代码的开始。我已经和教授联系过了,但他还没给我回电话,这件事要在3.5小时后交。如果有人有关于如何开始的教程/指导,那就太棒了。我不希望任何人写这个代码!我只是需要一点指导!谢谢:)

用Python编写一个程序,提示用户输入一个介于10到3之间的整数(包括10到3),以及一个字符。然后使用这两个值来使用输入的字符显示一个框,该字符由输入的数字确定框的大小。在

以下是输出示例:

Enter size of box:  4

Enter a character: %

%%%%

%%%%

%%%%

%%%%

下面是另一个可能的输出:

^{pr2}$

您的程序将只运行一次,但您必须使用重复构造来使用输入的值绘制框。在

提示:它应该是一个嵌套循环。打印的每一行都是一个循环,所以在循环结构中有循环;嵌套循环。在

如前所述,必须测试无效值,如果是,则显示错误消息并继续获取有效数字。在

在这里使用您自己的测试值。在


Tags: 代码用户程序示例size教程数字整数
3条回答

嵌套循环是循环中的循环。例如:

import sys

def main():
    size_of_box = 4
    character = "%"
    for i in range(0, size_of_box):
        for j in range(0, size_of_box):
            sys.stdout.write(character)
        sys.stdout.write("\n")

if __name__ == "__main__":
    main()

嵌套循环是循环中的循环。在

但它是如何工作的呢?在

执行外部循环语句,这将触发内部语句。然后,内部循环执行,直到完成。。在

因此,内部语句将继续进行,直到满足您设置的语句为止。在

然后,外部循环再次触发内部循环…它将永远触发内部循环,直到外部循环的语句得到满足。在

解决方案

让我们把这个问题分解成几个步骤。在

  1. 首先,我们需要从输入中获取一个整数,并确保该整数是310,或介于两者之间的任何数字。这就是3到10包含的意思。

  2. 然后我们需要向用户请求一个用于打印方框的字符。

  3. 在我们得到整数和字符之后,我们需要显示一个由字符组成的框,其宽度和高度由整数决定。

对于第一步,我们需要从用户那里获得输入。这可以使用内置函数input()。它接受可选的提示作为参数,并以字符串形式返回输入。我们把它写下来:

integer = input()

太好了。现在我们需要将输入转换成一个整数,这样就可以在程序的其余部分中使用它。这可以使用内置函数int()来完成。我们将传入字符串,并将其转换为整数:

^{pr2}$

第二步是从用户那里获取一个字符。这很简单。我们将再次使用input()从用户那里获得一个字符。但由于输入必须是字符,因此不应转换此值:

^{3}$

好吧。到目前为止,我们得到的是:

integer = int(input('Enter a number: '))
character = input('Enter a character: ')

最后一步是打印一个由character值组成的框,其宽度为integer,高度为{}。现在我们需要做的就是打印一个integercharactersinteger次的行。这就是嵌套的for循环出现的地方。在

我们知道每行的宽度必须是integer。所以我们需要多次打印character。我们可以使用range()内置函数来完成此操作。我们传入integer作为参数,它将生成从0到{}的所有数字:

for _ in range(integer):
    print(character, end="")

我们在for循环中使用下划线而不是实际可读的变量名的原因是,我们不需要使用for循环给我们的值。我们只关心重复我们的代码。在

end=""部分告诉print()内建函数每次调用新行时不要打印新行,因为我们希望所有字符都在一行中。for循环之前的print()是在提示和程序输出之间添加一些空格。让我们看看目前为止我们的程序输出了什么:

Enter a number: 5
Enter a character: @

@@@@@
>>> 

太好了。最后一件事是打印每行integer次。因为我们知道执行上面的for循环会打印一个行,所以我们只需要执行它integer次来打印integer行。所以我们将把这个for循环包装在另一个for循环中,并使用range()来执行嵌套的for循环integer次。我们将再次使用print(),在每一行之间添加一个新行:

print()
for _ in range(integer):
    for _ in range(integer):
        print(character, end="")
    print()

就这样!完成了。让我们测试一下我们的程序:

Enter a number: 7
Enter a character: #

#######
#######
#######
#######
#######
#######
#######
>>> 

如你所见,我们正在取得预期的产量。以下是最终方案:

integer = int(input('Enter a number: '))
character = input('Enter a character: ')

print()
for _ in range(integer):
    for _ in range(integer):
        print(character, end="")
    print()

错误处理

您可能还需要实现错误处理。这意味着让程序从用户输入的无效输入中恢复。在这种情况下,只有当我们向用户请求一个整数时,才会真正输入无效的输入。我们需要:

  1. 确保用户输入了一个有效的数字。以及
  2. 确保数字是310或两者之间的任何数字。在

为此,我们需要一个循环。这样我们就可以继续向用户请求有效的输入,直到他们这样做为止。我们可以使用while True循环。这意味着我们将继续循环,直到我们打破循环。在

while True:

现在我们需要确保用户输入了一个有效的数字。我们可以使用try/except块。一个try/except块的工作方式是,我们在try传输中放置一段可能会引发错误的代码块。如果没有出现错误,我们继续正常的程序。但是,如果出现错误,Python将跳转到theexcept块,其中的代码将被执行。在

在我们的例子中,我们将尝试将用户输入转换为整数。如果失败,将引发ValueError。因此,我们需要捕获错误消息并将其打印给用户:

while True:
    try:
        integer = int(input())
    except ValueError:
        print('Please enter a number')

剩下的就是测试输入的整数是否在正确的范围内。如果是这样的话,我们将中断循环,继续执行程序。如果没有,我们将显示一条错误消息并重试。下面是这个样子:

while True:
    try:
        integer = int(input('Enter a number: '))
        if integer >= 3 and integer <= 10:
            break
        print('Please enter a number between 3 and 10 inclusive')
    except ValueError:
        print('Please enter a number')

character = input('Enter a character: ')

print()
for _ in range(integer):
    for _ in range(integer):
        print(character, end="")
    print()

以下是完整程序中的上述内容:

下面是一个演示:

Enter a number: -23
Please enter a number between 3 and 10 inclusive
Enter a number: a
Please enter a number
Enter a number: 11
Please enter a number between 3 and 10 inclusive
Enter a number: 10
Enter a character: #

##########
##########
##########
##########
##########
##########
##########
##########
##########
##########
>>> 

有关程序中错误处理的更多资源,请参阅问题:Asking the user for input until they give a valid response。在

相关问题 更多 >