python - python中的冰雹程序
问题描述
我必须在 python 中编写一个冰雹程序
您选择一个数字,如果是偶数则为一半,如果是奇数则将其乘以 3 并加 1。它说要继续这种模式,直到数字变为 1。
该程序将需要以下方法:
- 接受用户输入
- 打印序列时,程序应循环到数字 1。
- 打印循环必须运行以生成序列的次数。
这是一个示例运行:
提示(输入)
Enter a positive integer (1-1000). To quit, enter -1: 20
20 10 5 16 8 4 2 1
The loop executed 8 times.
Enter a positive integer (1-1000). To quit, enter -1: 30
30 15 46 23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1
The loop executed 19 times.
Enter a positive integer (1-1000). To quit, enter -1: -1
Thank you for playing Hailstone.
现在我有这个:
count = 0
def hailstone(n):
if n > 0
print(n)
if n > 1:
if n % 2 == 0:
hailstone(n / 2)
else:
hailstone((n * 3) + 1)
count = count + 1
我不知道这之后该怎么办
解决方案
尝试以模块化的方式思考,创建两个函数:check_number() 和 user_call()。Check_number 将验证循环中的当前数字是奇数还是偶数,并且 user_call() 只是将其包装以计算循环迭代的次数。
我在一本名为 Automate Boring Stuff with Python 的好书中找到了这个练习,如果你还不知道的话,你必须检查一下。
这是我的代码。尝试使用最适合您的东西。
from sys import exit
def check_number(number):
if number % 2 ==0:
print(number // 2)
return(number // 2)
else:
print(number*3+1)
return number*3+1
def user_call(number):
count = 0
while number != 1:
count += 1
number = check_number(number)
return count
if __name__ == "__main__":
try:
number = int(input('Give a number \n'))
count = user_call(number)
print('count ',count)
except Exception as e:
exit()
推荐阅读
- apache-spark - 优化 spark 数据框操作
- c++ - SFINAE 内部概念模板参数
- python - 如何删除 Tkinter 按钮和框架上的边框?
- python-3.x - 图像处理:分割字符,投影?
- r - 如何通过实现一些查询条件在 r 数据框中创建多列
- java - Java 列表包含 - 由于重复的哈希码而产生误报
- java - Java hashmap 对象的数量
- xamarin.forms - 如何在 Xamarin.Forms 中创建类似于日志记录控件的内容
- python - 如何处理来自不同类的 tkinter 中的回调和事件绑定?
- java - 无法在“/Library/Java/JavaVirtualMachines/...”中找到可执行文件