陈ZAMYLA:这是一个,我,Zamyla。 今天,我们要实现 马里奥,我们得出马里奥 他一个完整的金字塔跳过。 让我们打破 子任务针对此问题。 首先,我们要提示用户 对于金字塔的高度。 然后,我们要确保 即该输入是有效的。 然后,我们将 要绘制金字塔。 所以,让我们来谈谈提示 和验证用户输入。 它可能看起来像 这一点,do-whil​​e循环的 提示用户输入一个 整数,然后只重复 如果该整数是无效的。 所以,应该这个条件是什么? 对于这一点,让我们回到 到本说明书中。 那么,规范告诉我们,任何有效 高度将是0和23之间, 包括的。 于是这意味着任何无效 高度将是小于0 或超过23。 所以,现在,我们有这个信息, 让我们来设计我们的条件。 但是,我们必须小心, 因为现在我们有 我们要评估2布尔值。 在这里,我向您提供 用真值表。 这使我们可以采取两种 布尔值,布尔一和二。 而且我们可以评估要么BOOL1 和BOOL2或BOOL1或BOOL2。 所以,有什么区别 之间以及和或? 那么,BOOL1和BOOL2会 计算结果为真当且仅 如果两个布尔是真实的, 而或操作 为真,如果任意一方 在布尔或无一不是如此。 因此,考虑到这一点, 看看你能不能找出 什么适当的条件 你对一个无效ñdo-whil​​e循环 将是。 就这样,我们已经提示和确认 用户对于金字塔的高度 他们想要的。 所以,现在,它是由我们 绘制金字塔。 完整的金字塔本 问题看起来有点 这样,我们有一个左金字塔, 一些间隙,然后右金字塔。 因此,让我们打破这一点。 如果我去我的文本编辑器,在这里,我 绘制我们左对齐金字塔。 但是,这是不行的。 我们想要做的是我们要 首先创建一个右对齐的金字塔。 因此,要做到这一点,只是推 我沿着一边哈希, 我只是把一些字符 在两者之间,只是这些点。 然后,我打算把两个在 下一行,和一个在该行。 所以,在这里我有一个 右对齐金字塔。 在那之后,我要去 回到最上面一行 并把在间隙,这 是,每规范,两个空格。 然后我会填写 金字塔的另一侧。 我会去第二排,写 两个空格的差距,那么双 哈希值。 回到第三行,两个空间 对于缺口和三个哈希值。 并在年底,两个空间 对于缺口和四个哈希值。 所以,这就是一个完整的 金字塔的样子。 当然,我们不希望 这些点中的方式。 所以我们要替换这些 通过把一些空格点。 一个,两个,三个在第一行。 一,二上的第二个。 和一个在第三线路。 因此,这是我们会怎样做,如果我们 希望只是做一个完整的金字塔, 也就是说,在我们的文本编辑器。 因此,让我们借此, 理解模式, 并在将其转换为一些伪。 对于金字塔的每一行,我们希望 打印的左金字塔然后 的差距,再右边的金字塔。 左金字塔,我们打印 的空间所需量, 其次是哈希值。 然后,我们打印差距,这 是每一次只有两个空格。 而在右边的金字塔,我们打印 必要数量的散列。 对于第二行,我们进行了 完全相同的过程。 我们打​​印的空间左 金字塔,所需量 散列,间隙,两个空间,和 那么散列为正确的金字塔。 让我们来解决模式 用于左金字塔。 如果我有,为目的 本实施例的,高度 八所要求的 用户,那么我的第一排 将有一个哈希和7个空格。 我的第二排将有 两个哈希,六个空格。 第三排,三哈希,五个空格。 你也许可以做到这一点 对于自己的八个高度 并确定为每一行多少 哈希多少空间需要。 但是,我们想要做的是什么 我们希望它抽象。 所以我问你任何的第n行,多少 哈希和我们有多少空间需要? 现在,当你确定 模式来多少哈希 多少空间你需要 任何第n行对于一个给定的高度, 切记要小心 如何你索引。 我的意思是,在日常生活 生活中我们最开始由一个计数。 所以,第一行是一个数字。 和第二行是行 第二,等等,等等。 但是,在计算机科学和 CS50,我们是零索引。 所以我们实际上从零开始计数。 因此第一行会 是行数为零。 和第二行 会排第一。 所以,如果我有八的高度 我的金字塔,那么n的最后一个值 实际上是七不八强。 所以,要注意此点。 而要知道,当你确定 你的模式是否你的零索引 或一索引 好。 所以,现在,我们有 对于左金字塔图案, 我们需要确定 图案的间隙。 幸运的是,这是很容易的。 这只是总是两个空格。 所以,现在我们进行正确的模式。 第一排将有一个哈希值。 第二行,二。 第三排,三。 等等等等。 如此反复,确定任何抽象 n和任何高度多少哈希 又有多少空间 每一行应该有。 好。 因此,我们知道,对于每一行,我们 需要进行一些处理。 我们怎么办呢? 好了,我们用的循环结构, 由一个初始化, 一个条件,并进行更新。 For循环可使用 重复的过程。 所以说,我希望它打招呼, 世界上50倍,那么我的for循环 会是这个样子,哪里 我初始化我变到零。 条件是i小于50。 然后将更新的是,它 通过每次递增1。 那么,这会做将是 在连续打印你好,世界的50倍。 现在,说我想要迭代 在金字塔的高度。 然后,而不是硬编码 在条件一定的价值, 我只是用可变高度。 那么,这将做的是迭代 以上的高度的每一行。 我可以在里面做一些事情 该循环的机构。 什么是我们想要做的 在循环体内? 嗯,正如我们之前所说,我们希望 打印空间和散列 左金字塔,然后打印 两个空格,然后打印哈希值。 因此,我们已经想通了这一点。 因此,我们可以开始填写 在我们的节目多很多。 在这里,我有一个外部的循环 迭代在金字塔的每一行。 而且身体里面我要去 重复打印的空间, 反复散列,然后该间隙, 然后散列合适的金字塔, 然后,最后,一个新的 行开始的下一行。 就这样,我们已经提示 用户的输入。 我们确信,它是有效的。 然后,我们得出的金字塔。 所以马里奥可以成功 爬上金字塔。 我的名字是Zamyla。 这是CS50。