陈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。