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 ...
随机推荐
- Docker——入门
虚拟化最大区别:虚拟化技术元件,资源申请调度到其他硬件服务器: Docker是一个开源得应用容器引擎,让开发者可以打包他们得应用以及依赖包到一共可移植得容器中,然后发布到任何流行得linux机器上,也 ...
- 日历控件datetimepicker(IE11)
1.安装 smalot.bootstrap-datetimepicker 2.引用 bootstrap.css bootstrap-datetimepicker.min.css jquery-1.10 ...
- Winfrom 定时锁屏
#region 锁屏 public struct LASTINPUTINFO { [MarshalAs(UnmanagedType.U4)] public int cbSize; [MarshalAs ...
- Code First项目Migrations
关于Enable-Migrations指令说明我们知道,Enable-Migrations的作用是在Code First项目中使用数据迁移,通过get-help Enable-Migrations查看 ...
- 修改NPM默认全局安装路径
场景: 最近在新电脑上鼓捣完环境后,打算切换下源,结果使用全局安装的nrm时提示找不到命令,之前都是这么用现在怎么不行了呢? 排查过程: 于是各种折腾,发现- g安装的插件目录在C盘中的某个路径中,后 ...
- 二、maven学习
maven工程运行环境修改 例如maven自带Tomcat6,我们想使用Tomcat7 pom.xml #配置多一个Tomcat7<plugins> <plugin> < ...
- Facebook 一个热搜帖,美国一个老人癌症不治最后的心愿是跟儿子喝啤酒。
今天早上起床看到这个Facebook上的热搜帖.太感动了.这个老人癌症不治后最后心愿是跟他的儿子们一起喝一次啤酒.这个帖子被他孙子贴上网以后牵动了千万人的心.
- python3.3.2中的关键字(转)
The following identifiers are used as reserved words, or keywords of the language, and cannot be use ...
- java.sql.SQLException: Could not retrieve transaction read-only status from server 问题解决
网上有2种主要说法 第一种 问题描述: java代码在开始事务后,先做了一个查询,再insert,此时会报: java.sql.SQLException: could not ret ...
- css 单位
CSS 有几个不同的单位用于表示长度. 一些设置 CSS 长度的属性有 width, margin, padding, font-size, border-width, 等. 长度有一个数字和单位组成 ...