Python Collatz序列实现过程解析
编写一个名为 collatz()的函数,它有一个名为 number 的参数。如果参数是偶数,那么 collatz()就打印出 number // 2, 并返回该值。如果 number 是奇数, collatz()就打印并返回 3 * number + 1。然后编写一个程序, 让用户输入一个整数, 并不断对这个数调用 collatz(), 直到函数返回值1(令人惊奇的是, 这个序列对于任何整数都有效, 利用这个序列,你迟早会得到 1! 既使数学家也不能确定为什么。 你的程序在研究所谓的“Collatz序列”,它有时候被称为“最简单的、 不可能的数学问题”)。
在项目中添加 try 和 except 语句,检测用户是否输入了一个非整数的字符串。正常情况下, int()函数在传入一个非整数字符串时,会产生 ValueError 错误,比如 int('puppy')。在 except 子句中,向用户输出一条信息,告诉他们必须输入一个整数。
示例代码:
def collatz(number):
a = number % 2
if a == 0:
number = number//2
return number
elif a == 1:
number = number*3+1
return number
try:
number = int(input("请输入一个整数:"))
while number != 1:
number = collatz(number)
print(number)
except ValueError:
print('必须输入整数')
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
时间: 2019-10-12
本文实例讲述了python计算一个序列的平均值的方法.分享给大家供大家参考.具体如下: def average(seq, total=0.0): num = 0 for item in seq: total += item num += 1 return total / num 如果序列是数组或者元祖可以简单使用下面的代码 def average(seq): return float(sum(seq)) / len(seq) 希望本文所述对大家的Python程序设计有所帮助.
有时候我们的数据是按某个频率收集的,比如每日.每月.每15分钟,那么我们怎么产生对应频率的索引呢?pandas中的date_range可用于生成指定长度的DatetimeIndex. 我们先看一下怎么生成日期范围:pd.date_range(startdate,enddate) 1.生成指定开始日期和结束日期的时间范围: In:import pandas as pd index = pd.date_range('4/1/2019','5/1/2019') print(index) Out: Da
filter函数: filter()函数可以对序列做过滤处理,就是说可以使用一个自定的函数过滤一个序列,把序列的每一项传到自定义的过滤函数里处理,并返回结果做过滤.最终一次性返回过滤后的结果. filter()函数有两个参数: 第一个,自定函数名,必须的 第二个,需要过滤的列,也是必须的 DEMO 需求,过滤大于5小于10的数: 复制代码 代码如下: # coding=utf8 # 定义大于5小于10的函数 def guolvhanshu(num): if num>5 and num<
python标准库包含于日期(date)和时间(time)数据的数据类型,datetime.time以及calendar模块会被经常用到. datetime以毫秒形式存储日期和时间,datetime.timedelta表示两个datetime对象之间的时间差. 下面我们先简单的了解下python日期和时间数据类型及工具 给datetime对象加上或减去一个或多个timedelta,会产生一个新的对象 from datetime import datetime from datetime impo
ARIMA模型 ARIMA模型的全称是自回归移动平均模型,是用来预测时间序列的一种常用的统计模型,一般记作ARIMA(p,d,q). ARIMA的适应情况 ARIMA模型相对来说比较简单易用.在应用ARIMA模型时,要保证以下几点: 时间序列数据是相对稳定的,总体基本不存在一定的上升或者下降趋势,如果不稳定可以通过差分的方式来使其变稳定. 非线性关系处理不好,只能处理线性关系 判断时序数据稳定 基本判断方法:稳定的数据,总体上是没有上升和下降的趋势的,是没有周期性的,方差趋向于一个稳定的值. A
先简单的了解下日期和时间数据类型及工具 python标准库包含于日期(date)和时间(time)数据的数据类型,datetime.time以及calendar模块会被经常用到. datetime以毫秒形式存储日期和时间,datetime.timedelta表示两个datetime对象之间的时间差. 给datetime对象加上或减去一个或多个timedelta,会产生一个新的对象 from datetime import datetime from datetime import timedel
时间序列模型 时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征.这是一类相对比较复杂的预测建模问题,和回归分析模型的预测不同,时间序列模型是依赖于事件发生的先后顺序的,同样大小的值改变顺序后输入模型产生的结果是不同的. 举个栗子:根据过去两年某股票的每天的股价数据推测之后一周的股价变化:根据过去2年某店铺每周想消费人数预测下周来店消费的人数等等 RNN 和 LSTM 模型 时间序列模型最常用最强大的的工具就是递归神经网络(recurrent neural n
python中有一个zfill方法用来给字符串前面补0,非常有用 view sourceprint? n = "123" s = n.zfill(5) assert s == "00123" zfill()也可以给负数补0 n = "-123" s = n.zfill(5) assert s == "-0123" 对于纯数字,我们也可以通过格式化的方式来补0 n = 123 s = "%05d" % n a
如下所示: import h5py import numpy as np #HDF5的写入: imgData = np.zeros((2,4)) f = h5py.File('HDF5_FILE.h5','w') #创建一个h5文件,文件指针是f f['data'] = imgData #将数据写入文件的主键data下面 f['labels'] = np.array([1,2,3,4,5]) #将数据写入文件的主键labels下面 f.close() #关闭文件 #HDF5的读取: f = h5
构建一个二阶多项式:x^2 - 4x + 3 多项式求解 >>> p = np.poly1d([1,-4,3]) #二阶多项式系数 >>> p(0) #自变量为0时多项式的值 3 >>> p.roots #多项式的根 array([3., 1.]) >>> p(p.roots) #多项式根处的值 array([0., 0.]) >>> p.order #多项式的阶数 2 >>> p.coeffs #
小编想把用python将列表[1,1,1,1,1,1,1,1,1,1] 和 列表 [2,2,2,2,2,2,2,2,2,2]对应相加成[3,3,3,3,3,3,3,3,3,3]. 代码如下: import numpy a = numpy.array([1,1,1,1,1,1,1,1,1,1]) b = numpy.array([2,2,2,2,2,2,2,2,2,2]) c = a + b print(type(c)) print(list(c)) 输出结果为:
利用GDAL库对tif影像进行读取 示例代码默认波段为[B.G.R.NIR的顺序,且为四个波段] import gdal def readTif(fileName): dataset = gdal.Open(fileName) if dataset == None: print(fileName+"文件无法打开") return im_width = dataset.RasterXSize #栅格矩阵的列数 im_height = dataset.RasterYSize #栅格矩阵的行
1.最小二乘也可以拟合二次函数 我们都知道用最小二乘拟合线性函数没有问题,那么能不能拟合二次函数甚至更高次的函数呢?答案当然是可以的.下面我们就来试试用最小二乘来拟合抛物线形状的的图像. 对于二次函数来说,一般形状为 f(x) = a*x*x+b*x+c,其中a,b,c为三个我们需要求解的参数.为了确定a.b.c,我们需要根据给定的样本,然后通过调整这些参数,知道最后找出一组参数a.b.c,使这些所有的样本点距离f(x)的距离平方和最小.用什么方法来调整这些参数呢?最常见的自然就是我们的梯度下降
如下所示: from sklearn.datasets import load_iris iris = load_iris() print iris.data.shape from sklearn.cross_validation import train_test_split X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size = 0.25, random_state = 3
下面代码中利用了两种比对的方法,一 对图片矩阵(m x m)求解特征值,通过比较特征值是否在一定的范围内,判断图片是否相同.二 对图片矩阵(m x m)中1求和,通过比较sum和来比较图片. # -*- coding: utf-8 -*- import cv2 as cv import numpy as np import os file_dir_a='C:\Users\wt\Desktop\data\image1\\' file_dir_b='C:\Users\wt\Desktop\data\
代码为: import matplotlib.pyplot as plt #用于显示图片 import matplotlib.image as mpimg # mpimg 用于读取图片 picdir = 'C:\\Users\\wyt\\Desktop\\test\\ship\\012400.jpg' img = mpimg.imread(picdir) plt.imshow(img) plt.title('Original train image') plt.show() 显示结果如下,是以热