Python3:Collatz 序列(考拉咨猜想)
如果参数是偶数,那么collatz()就打印出number//2,并返回该值;
如果number是奇数,那么collatz()就打印,并返回3*number+1。
然后编写一个程序,让用户输入一个整数,并不断对这个数调用,collatz(),直到函数返回值1(让人惊奇的是,这个序列对于任何整数都有效,利用这个序列,你迟早会得到1!奇数数学家也不能确定为什么。你的程序在研究所谓的“Collatz序列”,它有时候被称为“最简单的、不可能的数学问题”)。
注意:记得将input()的返回值用int()函数转成一个整数,否则它会是一个字符串。
提示:如果number%2==0,整数number就是偶数,如果number%2==1,它就是奇数。
这个程序的输出看起来应该像这样:
- Enter number: 3
- 3
- 10
- 5
- 16
- 8
- 4
- 2
- 1
我的程序如下:
#-*- coding:utf-8 -*-
def collatz(number):
if number % 2 ==0:
return number//2
elif number % 2 == 1:
return number*3+1
else:
print('error') while True:
keyinput = int(input())
getnum = collatz(keyinput)
print(getnum)
if getnum == 1:
break
在上面的题目中添加try和except语句,检测用户是否输入了一个非常整数的字符串。正常情况下,int()函数在传入一个非整数字符串时,会产生ValueError错误,比如int('Happy')。在expect子句中,向用户输出一条信息,告诉他们必须输入一个整数。
改进代码如下:
# -*- coding:utf-8 -*-
def collatz(number):
if number % 2 ==0:
return number//2
elif number % 2 == 1:
return number*3+1
else:
print('error') while True:
try:
keyinput = int(input())
getnum = collatz(keyinput)
print(getnum)
if getnum == 1:
break
except ValueError:
print('you must input a int number')
运行结果如下:

但有一点,不对的地方是Collatz 序列是输入一个任意的整数,让计算机去默认执行,不再输入,知道出现1执行结束。
所以看到网上的人的做法,对我的代码进行改进之后。
改进代码如下:
- import sys
- def collatz(number):
- print(number)
- if number == 1:
- sys.exit()
- elif number % 2 == 1 :
- t=number*3+1
- collatz(t)
- else:
- t=number//2
- collatz(t)
- if __name__=='__main__':
- n=input('Enter number: ')
- try:
- n=int(n)
- collatz(n)
- except ValueError as verror:
- print('ValueError: You need input digital.') (注:此处代码是借鉴他人代码。)
Python3:Collatz 序列(考拉咨猜想)的更多相关文章
- Python实现Collatz序列(考拉兹猜想)
考拉兹猜想(英语:Collatz conjecture),又称为奇偶归一猜想.3n+1猜想.冰雹猜想.角谷猜想.哈塞猜想.乌拉姆猜想或叙拉古猜想,是指对于每一个正整数,如果它是奇数,则对它乘3再加1, ...
- Collatz 序列、逗号代码、字符图网格
1.collatz序列 编写一个名为 collatz()的函数,它有一个名为 number 的参数.如果参数是偶数, 那么 collatz()就打印出 number // 2,并返回该值.如果 num ...
- 2015年网易考拉海淘android面试
经朋友推荐,昨天下午去网易杭州公司参加了考拉海淘android客户端的面试.今天回忆一下面试题目,做个整理进行备案. 1.说说JVM垃圾回收机制. 1.1.画了JVM分代回收的图,大致说了下垃圾分代回 ...
- 关于rem的使用和less编译工具考拉
前提: 1.使用rem的前提是首先要设置好页面的根节点的大小: <script> (function(){ var html = document.documentElement; var ...
- DISC社交风格测试题--老虎 孔雀 考拉 猫头鹰
凭直觉,迅速回答 "我是谁",而不是"我应该是谁,或我想我是谁". 1.关于人生观,我的内心其实是: A 希望能够有尽量多的人生体验,所以会有非常多样化的想法. ...
- megalo -- 网易考拉小程序解决方案
megalo 是基于 Vue 的小程序框架(没错,又是基于 Vue 的小程序框架),但是它不仅仅支持微信小程序,还支持支付宝小程序,同时还支持在开发时使用更多 Vue 的特性. 背景 对于用户而言,小 ...
- python实践项目—Collatz序列
Collatz序列题意说明 编写一个名为collatz()的函数,它有一个名为number 的参数.如果参数是偶数,那么collatz()就打印出number // 2,并返回该值.如果number ...
- 网易考拉Android客户端网络模块设计
本文来自网易云社区 作者:王鲁才 客户端开发中不可避免的需要接触到访问网络的需求,如何把访问网络模块设计的更具有扩展性是每一个移动开发者不得不面对的事情.现在有很多主流的网络请求处理框架,如Squar ...
- 考拉Android统一弹框
作者:钱成杰 背景 在快速开发的背景下,经历了n个版本后的考拉Android App中已经存在了各种各样看似相同却各有差别的弹框样式.其中包括系统弹框和自定义弹框,并且在线上时常会出现IllegalA ...
随机推荐
- lua与c的交互(函数专用)
Lua与C的交互 Lua是一个嵌入式的语言,它不仅可以是一个独立运行的程序,也可以是一个用来嵌入其它应用的程序库. C API是一个C代码与Lua进行交互的函数集,它由以下几部分构成: 1. 读写L ...
- sda.Update批量更新数据
老方法了,重新做个记录. string connStr = ConfigurationManager.ConnectionStrings["constring"].ToString ...
- Editplus code
网上一大堆,垃圾也是一大堆,保留一个真正的,提高效率 原文链接:https://blog.csdn.net/anhldd/article/details/85088715 Vovan 3AG46-JJ ...
- latex中文环境配置(针对北大模板,开题报告+中期答辩+毕业论文)
最近自己在忙着开题,中文环境真的是emm 以下只针对北大的毕业论文模板,至于其他的中文环境没有尝试 主要是用不同的latex编辑器会报不同的错误,当然我最后还是统一成了pdflatex,经过无数次尝试 ...
- 一步步创建第一个Vue项目
写在了GitHub https://github.com/TaoPanfeng/vue-cms 1 初始化 创建一个文件夹 vue-cms 在vue-cms目录下创建文件 package.json 在 ...
- JavaMaven【二、目录结构&HelloMaven】
目录结构 Demo: 1.创建目录结构 2.编写hello maven以及对应的test,放到对应目录下 package com.shane.maven01.model; public class H ...
- 第十章、numpy模块
目录 第十章.numpy模块 一.导入方式 二.作用 三.通过函数创建numpy数组 四. numpy数组运算 五.重点 第十章.numpy模块 一.导入方式 import numpy as np#约 ...
- 第六篇.文件处理之python2和3字符编码的区别
目录 python2和3字符编码的区别 一.字符编码应用之python python2和3字符编码的区别 一.字符编码应用之python 1执行python的三个阶段 python test.py 执 ...
- Windows 7上QTP11破解及java等插件破解方法
QTP11破解方法: 1.准备文件 注册机mgn-mqt82.exe 2.安装QTP11 3.运行注册机mgn-mqt82.exe 如果运行mgn-mqt82.exe 没有反应-,请注意关掉暂时关掉杀 ...
- 招商银行网银在Mac上装了插件仍然无法登录
1 装完插件后,在登录页面重新载入插件,再次打开