技术标签: python奇数和
odd 代表奇数, even 代表偶数, 下面代码全部使用is_odd, 判断输入的值是不是奇数, 是奇数返回True, 否则返回False
最常用的办法就是直接取模判断:
def is_odd(n):
# 余数是 1 就是奇数, 否则是偶数
return n % 2 == 1
当然也可以用位运算, 这里需要知道的是, 一个十进制表示的数字如果是奇数的话, 在二进制下最后一位一定是 1, 否则最后一位是 0, 举个例子, 3 在二进制里面是0011, 4 在二进制里是0100
所以可以用与门(&), 然后和 1 比较:
def is_odd(n):
# 比如 4 & 1 (0100 & 0001) => 0
return bool(n & 1)
也可以用异或门(^), 这个运算符的比较方法是两个二进制数字某个位不同时返回 1, 否则返回 0. 所以比较有意思的地方就是二进制(0 或 1)下的一个数字x, 和 0 进行异或门运算一定返回x, 和 1 进行异或门运算一定返回的是本身取反!x. 所以我们可以直接拿一个数和 1 进行异或门运算, 前面一定不变, 就看最后一位, 偶数就是从 0 变成 1, 整体数字就是加一, 奇数就是从 1 变成 0, 整体数字就是减一:
def is_odd(n):
# 比如 3 & 1 (0011 & 0001) => 0010
return n ^ 1 == n - 1
还可以用位运算符, >>右移运算符和<<左移运算符, 和 1 进行操作, 右移相当于除以 2 取商(或者叫向下取整) , 左移就是乘以 2, 这里不展开
def is_odd(n):
# 比如 (5 >> 2) << 2 => 4, 所以用原来的数减去结果要么是 1 要么是 0
return bool(n - ((n >> 1) << 1))
或者用一些奇淫技巧, 比如下面这种:
def is_odd(n):
# 奇数返回 -1, 偶数返回 1
return (-1)**n == -1
总之方法一堆...但是第一个取模应该最常用吧, 后面几个知道理解就行, 平时还是少些那种代码...
简介名称特点电机的分类PMSM的机械组成本书目的三相PMSM的数学建模三相PMSM的基本数学模型PMSM转子结构分类PMSM模型假设PMSM的基本数学模型4个方程自然坐标系下三相PMSM的坐标变换Clark变换iClark变换Park变换iPark变换Clark变换到Park变换坐标变换仿真建模书中坐标系和MATLAB自身坐标系之间的关系同步旋转坐标系dq下的P
以下内容源于网路资源的学习与整理,如有侵权请告知删除。简介语法格式参考实例1、显示当前目录和所有子目录的大小, 单位为KB2、显示当前目录总大小,加-h提高信息的可读性显示当前目录和第一层子目录的大小由于磁盘空间将满,需要整理磁盘时,想知道哪些文件夹的内容过大,以及删除一些无用文件,du命令会非常有用。在用户目录下输入“du --max-depth=1 -h”查看哪些文件夹的内容过大,然后进入那些文件夹,再不断地“du --max-depth=1 -h”,筛选出你要删除的文件,然后删除,即
一开始我时,我使用uni.navigateTo跳转失败报错无可厚非navigateTo:fail can not navigateTo a tabbar page改成了uni.switchTab这个专门跳转tabbar页面的也是报这个错,经大佬提醒得知:任何跳转的路径,都要用在pages.json中声明的路径,都要以/开头,如"/pages/login/login"这样,相对路径会有问题将跳转路由中的url改成绝对路径就好了...
redis支持的hash类型:新的存储需求,对一系列存储的数据进行编组,方便管理,典型应用存储对象信息需要的存储结构,一个存储空间保存多个键值对数据hash类型数据的基本操作添加数据hset key field value获取数据hget key fieldhgetall删除数据hdel key field添加多个hmset key f1 v1 f2 v2获取多...
数据倾斜定义:数据倾斜是大量的相同key被partition分配到一个分区里,其他几个key的数据不是很多task都完成了计算,而其中一个数据量特别大的key却迟迟运行部出结果,造成了’一个人累死,其他人闲死’的情况。数据倾斜的解决 1.前面文章中论述的Combine组件利用map阶段的计算去减轻负担,但是需要注意的地方太多 2.常规有效的解决方案—-&gt;打散倾斜的key 整体思...
小程序连接低功耗蓝牙流程参考官方api:https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth/wx.openBluetoothAdapter.html1、初始化蓝牙模块,主要检查用户设备支持蓝牙或是否开启蓝牙(wx.openBluetoothAdapter)2、监听蓝牙适配器状态(wx.onBluetoothAdapterStateChange)3、开始搜索附近蓝牙设备(wx.startBluetoothDevic
执行命令:cmake ..或cmake .. -DCMAKE_EXPORT_COMPILE_COMMANDS=1时,有时候会报错:string no output variable specified这个错误不是语法的问题,是CMakeLists.txt写的时候,没有指定默认的CMAKE_BUILD_TYPE导致的,所以只需要指定build type即可,在命令行中:cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMA.
aruco 是一种类似二维码的定位标记辅助工具,通过在环境中部署 Markers,可以辅助机器人进行定位,弥补单一传感器的缺陷,纠正误差,本教程使用的手眼标定 easy_handeye 功能包需要借助这个工具进行手眼标定。easy_handeye 是用于手眼标定的功能包之一,借助它可以实现眼在手上和眼在手外的手眼标定,在这里我们介绍使用 easy_handeye 完成眼在手上的手眼标定。
Hexo是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。
这个是element-ui默认的弹出框popover的样式,其实这个弹出框是由矩形和下面的小三角形组成的,而且看下图,给出的vue部分代码也并没有提到它的样式:<template> <el-popover placement="top-start" title="标题" width="200" trigger="hover" content="这是一段内容,这是一段内容,这是一段内容,这是一段内容。"> ...
什么是对数坐标系?这个问题中的关键词是对数,只要理解了对数坐标系中的对数指的是什么意思,我们就能明白什么是对数坐标系。对数定义:如果a的x次方等于N,那么数x叫做以a为底N的对数,记作x=logaN。其中,a叫做底数,N叫做真数,x叫做对数。而对数坐标系中的对数指的是坐标轴上的刻度与原点的距离是用对数表示的,比如,对于以10为底数的对数坐标轴来说,如果某个刻度上标出的值为10(真数),...
相关接口 pause 函数用于将进程挂起. 如果信号的处理动作是终止进程, 则进程终止, pause 函数没有返回值; 如果信号的处理动作是忽略, 则进程被挂起, pause函数不返回, 如果信号的处理动作是捕捉, 则调用信号处理动作之后pause 返回 -1.来看一段代码#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;...