<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Carver</title>
    <description>The latest articles on DEV Community by Carver (@suming).</description>
    <link>https://dev.to/suming</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1115758%2Fa30bc636-f5f8-4e22-b9df-b2b81b8c2909.jpeg</url>
      <title>DEV Community: Carver</title>
      <link>https://dev.to/suming</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/suming"/>
    <language>en</language>
    <item>
      <title>Record my CS61A2022 summer course Note homework1</title>
      <dc:creator>Carver</dc:creator>
      <pubDate>Sat, 08 Jul 2023 12:11:08 +0000</pubDate>
      <link>https://dev.to/suming/record-my-cs61a2022-summer-course-note-homework1-1d27</link>
      <guid>https://dev.to/suming/record-my-cs61a2022-summer-course-note-homework1-1d27</guid>
      <description>&lt;p&gt;Download &lt;a href="https://inst.eecs.berkeley.edu/~cs61a/fa22/hw/hw01/hw01.zip"&gt;hw01.zip&lt;/a&gt;. 下载 hw01.zip .&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Submission:&lt;/strong&gt; When you are done, submit with &lt;code&gt;python3 ok --submit&lt;/code&gt;. You may submit more than once before the deadline; only the final submission will be scored. Check that you have successfully submitted your code on &lt;a href="https://okpy.org/"&gt;okpy.org&lt;/a&gt;. See &lt;a href="https://inst.eecs.berkeley.edu/~cs61a/fa22/lab/lab00#submitting-the-assignment"&gt;Lab 0&lt;/a&gt; for more instructions on submitting assignments.&lt;br&gt;&lt;br&gt;
提交：完成后，使用 &lt;code&gt;python3 ok --submit&lt;/code&gt; 提交。您可以在截止日期前多次提交;只有最终提交的内容才会被评分。检查您是否已成功在 okpy.org 上提交代码。有关提交作业的更多说明，请参阅实验 0。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using Ok:&lt;/strong&gt; If you have any questions about using Ok, please refer to &lt;a href="https://inst.eecs.berkeley.edu/~cs61a/fa22/articles/using-ok"&gt;this guide.&lt;/a&gt;&lt;br&gt;&lt;br&gt;
使用 Ok：如果您对使用 Ok 有任何疑问，请参阅本指南。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Readings:&lt;/strong&gt; You might find the following references useful:&lt;br&gt;
阅读材料：您可能会发现以下参考资料很有用：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://composingprograms.com/pages/11-getting-started.html"&gt;Section 1.1 第 1.1 节&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://composingprograms.com/pages/12-elements-of-programming.html"&gt;Section 1.2 第 1.2 节&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://composingprograms.com/pages/13-defining-new-functions.html"&gt;Section 1.3 第 1.3 节&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://composingprograms.com/pages/14-designing-functions.html"&gt;Section 1.4 第 1.4 节&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://composingprograms.com/pages/15-control.html"&gt;Section 1.5 第 1.5 节&lt;/a&gt;
# Required Questions
### Q1: A Plus Abs B Q1： &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Python's &lt;code&gt;operator&lt;/code&gt; module defines &lt;em&gt;binary functions&lt;/em&gt; for Python's intrinsic arithmetic operators. For example, calling &lt;code&gt;operator.add(2,3)&lt;/code&gt; is equivalent to calling the expression &lt;code&gt;2 + 3&lt;/code&gt;; both will return &lt;code&gt;5&lt;/code&gt;.&lt;br&gt;&lt;br&gt;
Python 的 &lt;code&gt;operator&lt;/code&gt; 模块为 Python 的内在算术运算符定义了二进制函数。例如，调用 &lt;code&gt;operator.add(2,3)&lt;/code&gt; 等效于调用表达式 &lt;code&gt;2 + 3&lt;/code&gt; ;两者都将返回 &lt;code&gt;5&lt;/code&gt; 。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note that when the &lt;code&gt;operator&lt;/code&gt; module is imported into the namespace, like at the top of &lt;code&gt;hw01.py&lt;/code&gt;, you can just call &lt;code&gt;add(2,3)&lt;/code&gt; instead of &lt;code&gt;operator.add(2,3)&lt;/code&gt;.&lt;br&gt;&lt;br&gt;
请注意，当 &lt;code&gt;operator&lt;/code&gt; 模块导入命名空间时，例如在 &lt;code&gt;hw01.py&lt;/code&gt; 的顶部，您可以只调用 &lt;code&gt;add(2,3)&lt;/code&gt; 而不是 &lt;code&gt;operator.add(2,3)&lt;/code&gt; 。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Fill in the blanks in the following function for adding &lt;code&gt;a&lt;/code&gt; to the absolute value of &lt;code&gt;b&lt;/code&gt;, without calling &lt;code&gt;abs&lt;/code&gt;. You may &lt;strong&gt;not&lt;/strong&gt; modify any of the provided code other than the two blanks.&lt;br&gt;&lt;br&gt;
在以下函数中填写空白，用于将 &lt;code&gt;a&lt;/code&gt; 添加到 &lt;code&gt;b&lt;/code&gt; 的绝对值，而无需调用 &lt;code&gt;abs&lt;/code&gt; 。除两个空格外，您不得修改提供的任何代码。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def a_plus_abs_b(a, b):
    """Return a+abs(b), but without calling abs.

    &amp;gt;&amp;gt;&amp;gt; a_plus_abs_b(2, 3)
    5
    &amp;gt;&amp;gt;&amp;gt; a_plus_abs_b(2, -3)
    5
    &amp;gt;&amp;gt;&amp;gt; a_plus_abs_b(-1, 4)
    3
    &amp;gt;&amp;gt;&amp;gt; a_plus_abs_b(-1, -4)
    3
    """
    if b &amp;lt; 0:
        f = _____
    else:
        f = _____
    return f(a, b)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use Ok to test your code:&lt;br&gt;&lt;br&gt;
使用 Ok 测试代码：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python3 ok -q a_plus_abs_b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Q2: Two of Three Q2：
&lt;/h3&gt;

&lt;p&gt;Write a function that takes three &lt;em&gt;positive&lt;/em&gt; numbers as arguments and returns the sum of the squares of the two smallest numbers. &lt;strong&gt;Use only a single line for the body of the function.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
编写一个函数，该函数将三个正数作为参数，并返回两个最小数字的平方和。仅对函数主体使用一行。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def two_of_three(i, j, k):
    """Return m*m + n*n, where m and n are the two smallest members of the
    positive numbers i, j, and k.

    &amp;gt;&amp;gt;&amp;gt; two_of_three(1, 2, 3)
    5
    &amp;gt;&amp;gt;&amp;gt; two_of_three(5, 3, 1)
    10
    &amp;gt;&amp;gt;&amp;gt; two_of_three(10, 2, 8)
    68
    &amp;gt;&amp;gt;&amp;gt; two_of_three(5, 5, 5)
    50
    """
    return _____
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Hint:&lt;/strong&gt; Consider using the &lt;code&gt;max&lt;/code&gt; or &lt;code&gt;min&lt;/code&gt; function:&lt;br&gt;&lt;br&gt;
提示：考虑使用 &lt;code&gt;max&lt;/code&gt; 或 &lt;code&gt;min&lt;/code&gt; 函数：&lt;/p&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; max(1, 2, 3)
3
&amp;gt;&amp;gt;&amp;gt; min(-1, -2, -3)
-3
&lt;/code&gt;&lt;/pre&gt;

&lt;/blockquote&gt;

&lt;p&gt;Use Ok to test your code:&lt;br&gt;&lt;br&gt;
使用 Ok 测试代码：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python3 ok -q two_of_three
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Q3: Largest Factor Q3：
&lt;/h3&gt;

&lt;p&gt;Write a function that takes an integer &lt;code&gt;n&lt;/code&gt; that is &lt;strong&gt;greater than 1&lt;/strong&gt; and returns the largest integer that is smaller than &lt;code&gt;n&lt;/code&gt; and evenly divides &lt;code&gt;n&lt;/code&gt;.&lt;br&gt;&lt;br&gt;
编写一个函数，该函数采用大于 1 的整数 &lt;code&gt;n&lt;/code&gt; 并返回小于 &lt;code&gt;n&lt;/code&gt; 的最大整数并平均除以 &lt;code&gt;n&lt;/code&gt; 。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def largest_factor(n):
    """Return the largest factor of n that is smaller than n.

    &amp;gt;&amp;gt;&amp;gt; largest_factor(15) # factors are 1, 3, 5
    5
    &amp;gt;&amp;gt;&amp;gt; largest_factor(80) # factors are 1, 2, 4, 5, 8, 10, 16, 20, 40
    40
    &amp;gt;&amp;gt;&amp;gt; largest_factor(13) # factor is 1 since 13 is prime
    1
    """
    "*** YOUR CODE HERE ***"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Hint:&lt;/strong&gt; To check if &lt;code&gt;b&lt;/code&gt; evenly divides &lt;code&gt;a&lt;/code&gt;, you can use the expression &lt;code&gt;a % b == 0&lt;/code&gt;, which can be read as, "the remainder of dividing &lt;code&gt;a&lt;/code&gt; by &lt;code&gt;b&lt;/code&gt; is 0."&lt;br&gt;&lt;br&gt;
提示：要检查 &lt;code&gt;b&lt;/code&gt; 是否均匀地除以 &lt;code&gt;a&lt;/code&gt; ，您可以使用表达式 &lt;code&gt;a % b == 0&lt;/code&gt; ，它可以理解为“将 &lt;code&gt;a&lt;/code&gt; 除以 &lt;code&gt;b&lt;/code&gt; 的余数为 0”。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Use Ok to test your code:&lt;br&gt;&lt;br&gt;
使用 Ok 测试代码：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python3 ok -q largest_factor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Q4: Hailstone Q4：
&lt;/h3&gt;

&lt;p&gt;Douglas Hofstadter's Pulitzer-prize-winning book, &lt;em&gt;Gödel, Escher, Bach&lt;/em&gt;, poses the following mathematical puzzle.&lt;br&gt;&lt;br&gt;
道格拉斯·霍夫施塔特（Douglas Hofstadter）的普利策奖获奖著作《哥德尔、埃舍尔、巴赫》（Gödel， Escher， Bach）提出了以下数学难题。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pick a positive integer &lt;code&gt;n&lt;/code&gt; as the start.
选择一个正整数 &lt;code&gt;n&lt;/code&gt; 作为开头。&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;n&lt;/code&gt; is even, divide it by 2.
如果 &lt;code&gt;n&lt;/code&gt; 是偶数，则将其除以 2。&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;n&lt;/code&gt; is odd, multiply it by 3 and add 1.
如果 &lt;code&gt;n&lt;/code&gt; 是奇数，则将其乘以 3 并加 1。&lt;/li&gt;
&lt;li&gt;Continue this process until &lt;code&gt;n&lt;/code&gt; is 1.
继续此过程，直到 &lt;code&gt;n&lt;/code&gt; 为 1。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The number &lt;code&gt;n&lt;/code&gt; will travel up and down but eventually end at 1 (at least for all numbers that have ever been tried -- nobody has ever proved that the sequence will terminate). Analogously, a hailstone travels up and down in the atmosphere before eventually landing on earth.&lt;br&gt;&lt;br&gt;
数字 &lt;code&gt;n&lt;/code&gt; 将上下移动，但最终以 1 结束（至少对于所有尝试过的数字 - 没有人证明序列会终止）。类似地，冰雹在最终降落在地球上之前在大气层中上下移动。&lt;/p&gt;

&lt;p&gt;This sequence of values of &lt;code&gt;n&lt;/code&gt; is often called a Hailstone sequence. Write a function that takes a single argument with formal parameter name &lt;code&gt;n&lt;/code&gt;, prints out the hailstone sequence starting at &lt;code&gt;n&lt;/code&gt;, and returns the number of steps in the sequence:&lt;br&gt;&lt;br&gt;
&lt;code&gt;n&lt;/code&gt; 的值序列通常称为冰雹序列。编写一个函数，该函数采用具有形式参数名称 &lt;code&gt;n&lt;/code&gt; 的单个参数，打印出从 &lt;code&gt;n&lt;/code&gt; 开始的冰雹序列，并返回序列中的步数：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def hailstone(n):
    """Print the hailstone sequence starting at n and return its
    length.

    &amp;gt;&amp;gt;&amp;gt; a = hailstone(10)
    10
    5
    16
    8
    4
    2
    1
    &amp;gt;&amp;gt;&amp;gt; a
    7
    &amp;gt;&amp;gt;&amp;gt; b = hailstone(1)
    1
    &amp;gt;&amp;gt;&amp;gt; b
    1
    """
    "*** YOUR CODE HERE ***"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hailstone sequences can get quite long! Try 27. What's the longest you can find?&lt;br&gt;&lt;br&gt;
冰雹序列可能会很长！尝试 27。你能找到的最长的是什么？&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note that if &lt;code&gt;n == 1&lt;/code&gt; initially, then the sequence is one step long.&lt;br&gt;&lt;br&gt;
请注意，如果最初为 &lt;code&gt;n == 1&lt;/code&gt; ，则序列为一个步骤长。&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Hint:&lt;/strong&gt; Recall the different outputs from using regular division &lt;code&gt;/&lt;/code&gt; and floor division &lt;code&gt;//&lt;/code&gt;&lt;br&gt;&lt;br&gt;
提示：回想一下使用常规除法 &lt;code&gt;/&lt;/code&gt; 和下限除法 &lt;code&gt;//&lt;/code&gt; 的不同输出&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Use Ok to test your code:&lt;br&gt;&lt;br&gt;
使用 Ok 测试代码：&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python3 ok -q hailstone
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Curious about hailstones or hailstone sequences? Take a look at these articles:&lt;br&gt;&lt;br&gt;
对冰雹或冰雹序列感到好奇？看看这些文章：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check out &lt;a href="https://www.nationalgeographic.org/encyclopedia/hail/"&gt;this article&lt;/a&gt; to learn more about how hailstones work!
查看这篇文章以了解有关冰雹如何工作的更多信息！&lt;/li&gt;
&lt;li&gt;In 2019, there was a major &lt;a href="https://www.quantamagazine.org/mathematician-terence-tao-and-the-collatz-conjecture-20191211/"&gt;development&lt;/a&gt; in understanding how the hailstone conjecture works for most numbers!
2019 年，在理解冰雹猜想如何适用于大多数数字方面取得了重大进展！&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  My Result
&lt;/h1&gt;

&lt;h3&gt;
  
  
  R1: A Plus Abs B Q1
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;a_plus_abs_b&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;  
    &lt;span class="s"&gt;"""Return a+abs(b), but without calling abs.  

    &amp;gt;&amp;gt;&amp;gt; a_plus_abs_b(2, 3)  
    5    &amp;gt;&amp;gt;&amp;gt; a_plus_abs_b(2, -3)  
    5    &amp;gt;&amp;gt;&amp;gt; a_plus_abs_b(-1, 4)  
    3    &amp;gt;&amp;gt;&amp;gt; a_plus_abs_b(-1, -4)  
    3    """&lt;/span&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  
        &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sub&lt;/span&gt;  
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  
        &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;add&lt;/span&gt;  
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Q2: Two of Three Q2
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;two_of_three&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;  
    &lt;span class="s"&gt;"""Return m*m + n*n, where m and n are the two smallest members of the  
    positive numbers i, j, and k.  
    &amp;gt;&amp;gt;&amp;gt; two_of_three(1, 2, 3)  
    5    &amp;gt;&amp;gt;&amp;gt; two_of_three(5, 3, 1)  
    10    &amp;gt;&amp;gt;&amp;gt; two_of_three(10, 2, 8)  
    68    &amp;gt;&amp;gt;&amp;gt; two_of_three(5, 5, 5)  
    50    """&lt;/span&gt;    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nb"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nb"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Q3: Largest Factor Q3：
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;largest_factor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;  
    &lt;span class="s"&gt;"""Return the largest factor of n that is smaller than n.  

    &amp;gt;&amp;gt;&amp;gt; largest_factor(15) # factors are 1, 3, 5  
    5    &amp;gt;&amp;gt;&amp;gt; largest_factor(80) # factors are 1, 2, 4, 5, 8, 10, 16, 20, 40  
    40    &amp;gt;&amp;gt;&amp;gt; largest_factor(13) # factor is 1 since 13 is prime  
    1    """&lt;/span&gt;    &lt;span class="s"&gt;"*** YOUR CODE HERE ***"&lt;/span&gt;  
    &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;  
    &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;  
    &lt;span class="n"&gt;edge&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  
    &lt;span class="k"&gt;while&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;=&lt;/span&gt;&lt;span class="n"&gt;edge&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;  
        &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;  
            &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  
        &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;  
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Q4: Hailstone Q4：
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;hailstone&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;  
    &lt;span class="s"&gt;"""Print the hailstone sequence starting at n and return its  
    length.  
    &amp;gt;&amp;gt;&amp;gt; a = hailstone(10)  
    10    5    16    8    4    2    1    &amp;gt;&amp;gt;&amp;gt; a  
    7    &amp;gt;&amp;gt;&amp;gt; b = hailstone(1)  
    1    &amp;gt;&amp;gt;&amp;gt; b  
    1    """&lt;/span&gt;    &lt;span class="s"&gt;"*** YOUR CODE HERE ***"&lt;/span&gt;  
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;  
    &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  
    &lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  
    &lt;span class="k"&gt;while&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;!=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;  
        &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;  
        &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  
        &lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;  
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>python</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
