作业1: Python变量与控制流


在这一节中,我们将练习使用变量和控制流(while循环、if语句、for循环)在Python中进行编程。本作业包含多个编程问题,从简单的代码追踪到复杂的应用程序开发。

1. 🔍 代码追踪 (Trace)

对于这个问题,你将追踪一些代码的执行过程。请尝试手动进行追踪。当以下函数调用被执行时,控制台会打印什么内容?请将你的答案写在Assignment2文件夹中提供的trace.txt文件中。

"""
这个程序只是为了测试你对变量、控制流和函数的理解。
"""

def mystery():
    x = 3
    x = 5 - x / 2
    print(x)


def main():
    x = 1
    while x < 20:
        print("x = " + str(x))
        mystery()
        x *= 2
    print("x = " + str(x))


if __name__ == "__main__":
    main()
📋 问题要求:

请手动追踪代码执行过程,确定当main()函数被调用时,控制台会打印什么内容。分析变量x在while循环中的变化,以及mystery()函数每次被调用时的行为。将你的答案保存在trace.txt文件中。


2. ➖ 数字相减 (Subtract Numbers)

在文件subtract_numbers.py中编写一个程序,从用户读取两个实数并打印第一个数减去第二个数的结果。你可以假设用户总是输入有效的实数(负值也可以)。是的,我们知道这个问题与我们在课堂上做的问题非常相似——这就是为什么这个问题是一个简单的练习!

📋 示例运行:
This program subtracts one number from another.
Enter first number: 5.5
Enter second number: 2.1
The result is 3.4.

3. 🚀 发射倒计时 (Liftoff!)

在文件liftoff.py中编写一个程序,打印即将发射的宇宙飞船的倒计时呼叫。从10倒数到1,然后写出"Liftoff!"。你的程序应该包含一个for循环。

📋 示例运行:
10
9
8
7
6
5
4
3
2
1
Liftoff!

4. 🎲 随机数字 (Random Numbers)

在文件random_numbers.py中编写一个程序,打印10个随机整数(每个随机整数的值应该在0到100之间,包括0和100)。你的程序应该使用一个名为NUM_RANDOM的常量(值为10),它决定要打印的随机数字的数量。你的程序还应该使用名为MIN_RANDOM和MAX_RANDOM的常量来确定生成的随机数字的最小值和最大值(分别为0和100)。要生成随机数字,你应该使用Python的random库中的random.randint()函数。

📋 示例运行:
35
10
45
59
45
100
8
31
48
6

5. 🌙 月球重量 (Moon Weight)

人类于1969年7月20日首次登上月球。(不,登月不是假的。)人们经常想知道如果他们在月球上会重多少。事实证明,在月球上,你的重量是地球重量的16.5%。

编写一个程序moon_weight.py,询问用户的体重(你可以假设用户输入的是实数值)并打印出他们在月球上的体重。如果用户输入负值(例如,他们很刻薄,试图破坏你的程序),你应该只打印出重量不能为负。记住在编写解决方案时,在适当的地方使用常量是良好的编程风格。

📋 示例运行:
示例运行1(用户输入165.3,注意答案中浮点值的不精确性):
Enter your weight: 165.3
Your weight on the moon is 27.274500000000003

示例运行2(用户输入-13):
Enter your weight: -13
Sorry, you can't have a negative weight.

6. 📐 勾股定理 (Pythagorean)

在几何学中,你学习了直角三角形三边长度关系的勾股定理:

勾股定理:a² + b² = c²

也可以写成:

勾股定理:c = √(a² + b²)

在文件pythagorean.py中编写一个程序,要求用户输入a和b的两个浮点值(你可以假设a和b是正实数值),然后计算c的解并打印出来。回想一下,要计算平方根,你可以使用Python的math库中的math.sqrt()函数。

📋 示例运行:
a: 9.7
b: 3.2
c = 10.21420579389313

7. 🎓 Khansole学院 (Khansole Academy)

现在你已经看到了编程如何在许多不同领域帮助我们,是时候让你实现Khansole学院了——一个帮助其他人学习的程序!在这个问题中,你将在文件khansole_academy.py中编写一个程序,该程序为用户随机生成加法问题,从用户读取答案,然后检查他们是否正确,直到用户似乎掌握了材料。

更具体地说,你的程序应该能够生成涉及两个2位整数相加的加法问题(10到99,包括10和99)。应该要求用户回答每个问题。你的程序应该确定答案是否正确,并给用户一个适当的消息让他们知道。你的程序应该继续给用户问题,直到用户连续答对3个问题。(注意:用户需要连续答对的问题数量只是程序中指定常量的好地方的一个例子)。

📋 示例运行:
What is 51 + 79?
Your answer: 120
Incorrect. The expected answer is 130
What is 33 + 19?
Your answer: 42
Incorrect. The expected answer is 52
What is 55 + 11?
Your answer: 66
Correct! You've gotten 1 correct in a row.
What is 84 + 25?
Your answer: 109
Correct! You've gotten 2 correct in a row.
What is 26 + 58?
Your answer: 74
Incorrect. The expected answer is 84
What is 98 + 85?
Your answer: 183
Correct! You've gotten 1 correct in a row.
What is 79 + 66?
Your answer: 145
Correct! You've gotten 2 correct in a row.
What is 97 + 20?
Your answer: 117
Correct! You've gotten 3 correct in a row.
Congratulations! You mastered addition.