Python算法例3 检测2的幂次

2023-10-30 04:45
文章标签 python 算法 检测 幂次

本文主要是介绍Python算法例3 检测2的幂次,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 问题描述

检测一个整数n是否为2的幂次。

2. 问题示例

n=8,返回True;n=6,返回False。

3.代码实现

# 采用UTF-8编码格式
# 参数n是一个整数
# 返回True或者False
class Solution:def checkPowerOf2(self,n):ans = 1for i in range(31):if ans == n:return Trueans = ans << 1return False
if __name__ == '__main__':temp = Solution()nums1 = 8nums2 = 6print(("输入:"+str(nums1)))print(("输出:"+str(temp.checkPowerOf2(nums1))))print(("输入:"+str(nums2)))print(("输出:"+str(temp.checkPowerOf2(nums2))))
def isPowerOfTwo(n):if n <= 0:return Falsewhile n % 2 == 0:n //= 2if n == 1:return Trueelse:return False# 首先判断n是否小于等于0,如果是,直接返回False。
# 然后,我们使用while循环,不断将n除以2,直到n无法再被2整除为止。
# 此时,如果n等于1,则说明原始数字n是2的幂次;否则,说明n不是2的幂次,返回False。if __name__ == '__main__':n = 8print("初始值:", n)result = isPowerOfTwo(n)print("是否为2的幂次:", result)n = 6print("初始值:", n)result = isPowerOfTwo(n)print("是否为2的幂次:", result)
def getPowerOfTwo(n):if n <= 0:return Nonepower = 0while n % 2 == 0:power += 1n //= 2if n == 1:return powerelse:return None
"""
定义了一个名为getPowerOfTwo的函数,逻辑与之前的代码基本相同。
不同之处在于,我们新增了一个变量power,用于记录2的幂次。
每次成功将n除以2后,power的值加1。
最后,如果n等于1,则返回power的值,否则返回None。
"""
if __name__ == '__main__':n = 8print("初始值:", n)power = getPowerOfTwo(n)if power is not None:print("是2的幂次,幂次为:", power)else:print("不是2的幂次")n = 6print("初始值:", n)power = getPowerOfTwo(n)if power is not None:print("是2的幂次,幂次为:", power)else:print("不是2的幂次")
def isPowerOfTwo(n):# 如果n小于等于0,或者n的二进制表示中包含多个1,则不是2的幂次return n > 0 and (n & (n - 1)) == 0# 测试示例
n1 = 8
n2 = 6print(isPowerOfTwo(n1))  # 输出True
print(isPowerOfTwo(n2))  # 输出False"""
要检测一个整数n是否为2的幂次,可以利用位运算来判断。
如果一个整数是2的幂次,它的二进制表示中只有一个1,
例如2^3 = 8 的二进制是 1000,而2^2 = 4 的二进制是 0100。这个算法首先检查n是否大于0,然后使用位运算 (n & (n - 1)) 来判断是否只有一个1。
如果条件都满足,那么n是2的幂次,返回True,否则返回False。
"""
def findExponentOfTwo(n):exponent = 0while n > 1:if n % 2 != 0:return None  # 如果n不是2的幂次,返回Nonen //= 2exponent += 1return exponent# 测试示例
n1 = 8
n2 = 6exponent1 = findExponentOfTwo(n1)
exponent2 = findExponentOfTwo(n2)if exponent1 is not None:print(f"{n1} 是2的 {exponent1} 次幂")
else:print(f"{n1} 不是2的幂次")if exponent2 is not None:print(f"{n2} 是2的 {exponent2} 次幂")
else:print(f"{n2} 不是2的幂次")# 定义了一个名为findExponentOfTwo的函数,它返回n是2的幂次时的指数,
# 如果n不是2的幂次,则返回None。在测试示例中,它计算两个整数的指数,并输出结果。

这篇关于Python算法例3 检测2的幂次的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/305661

相关文章

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Python打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

Python sys模块的使用及说明

《Pythonsys模块的使用及说明》Pythonsys模块是核心工具,用于解释器交互与运行时控制,涵盖命令行参数处理、路径修改、强制退出、I/O重定向、系统信息获取等功能,适用于脚本开发与调试,需... 目录python sys 模块详解常用功能与代码示例获取命令行参数修改模块搜索路径强制退出程序标准输入

Python pickle模块的使用指南

《Pythonpickle模块的使用指南》Pythonpickle模块用于对象序列化与反序列化,支持dump/load方法及自定义类,需注意安全风险,建议在受控环境中使用,适用于模型持久化、缓存及跨... 目录python pickle 模块详解基本序列化与反序列化直接序列化为字节流自定义对象的序列化安全注

Python之变量命名规则详解

《Python之变量命名规则详解》Python变量命名需遵守语法规范(字母开头、不使用关键字),遵循三要(自解释、明确功能)和三不要(避免缩写、语法错误、滥用下划线)原则,确保代码易读易维护... 目录1. 硬性规则2. “三要” 原则2.1. 要体现变量的 “实际作用”,拒绝 “无意义命名”2.2. 要让

python中的高阶函数示例详解

《python中的高阶函数示例详解》在Python中,高阶函数是指接受函数作为参数或返回函数作为结果的函数,下面:本文主要介绍python中高阶函数的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录1.定义2.map函数3.filter函数4.reduce函数5.sorted函数6.自定义高阶函数

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Python 常用数据类型详解之字符串、列表、字典操作方法

《Python常用数据类型详解之字符串、列表、字典操作方法》在Python中,字符串、列表和字典是最常用的数据类型,它们在数据处理、程序设计和算法实现中扮演着重要角色,接下来通过本文给大家介绍这三种... 目录一、字符串(String)(一)创建字符串(二)字符串操作1. 字符串连接2. 字符串重复3. 字