用python验证冰雹猜想_用Pythony验证万物归一(考拉咨猜想)

世界上存在一种这样的猜想,无论你给我什么,如何待我,我会慢慢把它捶打磨练,最后达到天人合一.额,其实是我瞎编的啦.其实世界上有一种跟我瞎编的东西很像,那么就是考拉咨猜想:你随便给我一个整数,我最后都是会通过固定的规则演变成"1",万物归一.

那么这个规则是什么呢?

我拿到一个数number:

奇数则number= 3 * number + 1;

偶数则number= number // 2;

猜想:对于每一个正整数,如此循环,最终都能够得到1。

那么我们就用Python验证一下这个猜想

#!/usr/bin/env python3

# coding=utf-8

__author__ = "RidingRoad"

START_NUMBER = 1

END_NUMBER = 1000001

def collatz_seq(number):

"""

获取到的number是奇数,则number= 3 * number + 1;

偶数则number= number // 2;

如果考拉咨猜想真的成立,可以number=1,那么程序将会停止,否则,考拉咨猜想不成立

:return:1

"""

while True:

if number == 1:

return number

else:

# number为偶数

if not number % 2:

number = number // 2

else:

# number为奇数

number = 3 * number + 1

if __name__ == "__main__":

# 存放验证考拉咨猜想函数的结果

result = []

for i in range(START_NUMBER, END_NUMBER):

# 验证START_NUMBER, END_NUMBER之间的数

result.append(collatz_seq(i))

# 显示结果

print(result)

下面是1到1000,000的数字进行考拉咨猜想验证的结果

[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,......]

可以看到:万里挑一啊, so easy

古人的猜想,如果还是基于传统的计算工具,那是多么的无聊单调,我们可以用Python来瞬间完成,感谢龟叔哦.

这里我们就不自己肉眼判断了,我们用filter

def verify(num):

"""判断结果里的不是1的数"""

return 1 != num

if __name__ == "__main__":

# 存放验证考拉咨猜想函数的结果

result = []

for i in range(START_NUMBER, END_NUMBER):

# 验证START_NUMBER, END_NUMBER之间的数

result.append(collatz_seq(i))

# 使用filter对结果进行判断是否存在非1的数

print(list(filter(verify,result)))

"""

filter(function or None, iterable) --> filter object

Return an iterator yielding those items of iterable for which function(item)

is true. If function is None, return the items that are true.

"""

结果

输出了一个[]空列表,说明result列表里全部为一,考拉咨猜想是可能正确的.为什么说可能,是因为我只验证了1到1000000的数字.

[]

我的个性签名:Focusing on the Python and firmly convincing that nothing can replace hard work.需要完整的代码关注我的公众号Python孙行者,聊天界面回复"万物归一",即可获取.欢迎大家关注我的公众号.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的手写数字识别代码的示例,使用Python和Keras框架: 首先,我们需要导入所需的库: ```python import numpy as np from keras.models import Sequential from keras.layers.core import Dense, Activation from keras.utils import np_utils from keras.datasets import mnist ``` 接着,我们可以加载MNIST数据集,该数据集包含60,000张28x28像素的手写数字图像和相应的标签(0到9之间的整数): ```python (X_train, y_train), (X_test, y_test) = mnist.load_data() ``` 我们需要对图像进行预处理,将它们转换为模型可以处理的格式(1维数组),并将像素值归一化为0到1之间的浮点数。同时,我们将标签进行one-hot编码: ```python # 将图像转换为1维数组 X_train = X_train.reshape(60000, 784) X_test = X_test.reshape(10000, 784) # 将像素值归一化为0到1 X_train = X_train.astype('float32') / 255 X_test = X_test.astype('float32') / 255 # 将标签进行one-hot编码 Y_train = np_utils.to_categorical(y_train, 10) Y_test = np_utils.to_categorical(y_test, 10) ``` 接着,我们可以定义一个简单的神经网络模型,包含3个全连接层和2个激活函数层(使用ReLU激活函数和Softmax激活函数)。最后,我们可以编译模型并训练它: ```python # 定义模型 model = Sequential() model.add(Dense(512, input_shape=(784,))) model.add(Activation('relu')) model.add(Dense(512)) model.add(Activation('relu')) model.add(Dense(10)) model.add(Activation('softmax')) # 编译模型 model.compile(loss='categorical_crossentropy', metrics=['accuracy'], optimizer='adam') # 训练模型 model.fit(X_train, Y_train, batch_size=128, epochs=10, validation_data=(X_test, Y_test)) ``` 训练完成后,我们可以使用测试集评估模型的性能: ```python score = model.evaluate(X_test, Y_test, verbose=0) print('Test accuracy:', score[1]) ``` 这就是一个简单的手写数字识别代码示例,希望能对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值