在这一节中,我们将练习使用变量和控制流(while循环、if语句)在Python中进行编程。虽然我们已经离开了Karel,但while循环和其他控制流的工作原理与之前相同。本节的最后一个问题还将让你练习接受某些值的辅助函数——我们称这些值为参数!
这是一个代码追踪问题——在不运行代码的情况下检查代码。SENTINEL常量的作用是什么?四个变量(a、b、x、y)在while循环每次执行时是如何变化的?总的来说,这个程序在计算什么?
# 文件:mystery_calculation.py
# ----------------------------
# 你的任务是弄清楚这个程序做什么!
SENTINEL = -1
def main():
a = int(input("请输入a的值:"))
b = int(input("请输入b的值:"))
x = int(input("请输入x的值:"))
while x != SENTINEL:
y = a * x + b
print("当x = " + str(x) + "时,结果为 " + str(y))
x = int(input("请输入x的值:"))
if __name__ == "__main__":
main()
大家都知道我们的毛茸茸朋友衰老的速度与人类不同。编写一个程序,要求用户输入人类年龄,并使用"一年人类年龄等于七年狗年龄"的事实打印出相应的狗年龄。考虑为这个值定义一个常量DOG_YEARS_PER_HUMAN_YEAR。你可以假设用户输入的是整数年龄,但不一定是正数。如果不是正数,请打印错误消息。
你的程序应该持续要求用户输入人类年龄,直到用户输入0,此时程序应该结束。
编写一个程序,要求用户输入一个整数,然后逐个打印出该数字的所有因数。你的函数应该检查输入的数字是否大于0。程序应该持续要求用户输入数字,直到输入0(哨兵值the sentinel value:哨兵是在循环或迭代算法中用来标志终止条件的值。)为止。
使用一个名为print_factors(num)的辅助函数,该函数接受用户输入的数字num作为参数,并打印其所有因数。你可以在main()函数中进行输入验证(检查数字是否为负数或等于哨兵值),但一旦确定要分解这个数字,就调用辅助函数!
在打印出所有因数后,当数字是质数时打印一条特殊消息!你如何根据一个数的因数来判断它是否是质数?这段代码应该放在main()函数中还是print_factors(num)函数中?