python学习-综合练习三(斐波那契数列、阿姆斯特朗数、//和/、十进制转二进制bin、八进制oct、十六进制hex、进制转换源码、python中::和:的区别)
文章目录
- 斐波那契数列
- 阿姆斯特朗数
- 十进制转二进制bin、八进制oct、十六进制hex
- 补充进制转换源码
- python中::和:的区别
说明:本篇博文的知识点大部分来自 Python3 实例
斐波那契数列
下面代码实现了判断用户输入值,只有输入为大于等于1的正整数时,才会打印结果。
网上看到的是使用while的一种方式,我这里自己实现了一种使用for循环的方式。相比而言,代码更简洁一些。
try:num = int(input("斐波那契数列:需要打印几项的值?\n"))if num <= 0:print("请输入大于1的正整数")elif num == 1:print("斐波那契数列:", num - 1)else:print("斐波那契数列:")iVal1, iVal2 = 0, 1print(iVal1, ',', iVal2, end=' , ')for item in range(2, num):nSum = iVal1 + iVal2print(nSum, end=' , ')iVal1, iVal2 = iVal2, nSum
except ValueError:print("请输入大于1的正整数")
本段代码自己查看没什么问题,广大网友如果发现有什么问题,敬请留言。
运行结果:
阿姆斯特朗数
如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。
例如33 + 73 + 03 = 370。
上代码:
try:str1 = input("请输入一个正整数:")len1 = len(str(str1))num = int(str1)rst = 0while num > 0:digit = num % 10rst += digit ** len1num //= 10if int(str1) == rst:print(str1, "是阿姆斯特朗数")else:print(str1, "不是阿姆斯特朗数")
except ValueError:print("请输入一个正整数")
这里提一下//和/的区别。//表示整数的除法,结果也是整数。/表示浮点数的除法,结果是浮点数。
代码中,我尽量对一些代码进行了简化,这也是python的特点之一,代码简洁。
运行结果:
十进制转二进制bin、八进制oct、十六进制hex
有现成的方法可以对类型进行转换,详见代码:
try:num = int(input("请输入一个整数:"))print("十进制数为:", num)print("转换为二进制为:", bin(num))print("转换为八进制为:", oct(num))print("转换为十六进制为:", hex(num))
except ValueError:print("请输入一个整数")
能直接转换出结果,简单快捷。
补充进制转换源码
def dec2bin(num1):len1 = []if num1 < 0:return '-' + dec2bin(abs(num1))while True:num1, remainder = divmod(num1, 2)len1.append(str(remainder))if num1 == 0:return ''.join(len1[::-1])def dec2oct(num):len1 = []if num < 0:return '-' + dec2oct(abs(num))while True:num, remainder = divmod(num, 8)len1.append(str(remainder))if num == 0:return ''.join(len1[::-1])base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]def dec2hex(num):len1 = []if num < 0:return '-' + dec2hex(abs(num))while True:num,rem = divmod(num, 16)len1.append(base[rem])if num == 0:return ''.join(len1[::-1])print('dec2bin(100) = ', dec2bin(100))
print('dec2oct(100) = ', dec2oct(100))
print('dec2hex(100) = ', dec2hex(100))
运行结果:
python中::和:的区别
lst1 = [1, 2, 3, 4, 5]
# lst1[::-1]相当于 lst1[-1:-len(lst1)-1:-1],也就是从最后一个元素到第一个元素复制一遍,即倒序。
print(lst1[::-1])
# lst1[:-1]相当于 lst1[-5:-1],也就是从最后一个元素到第一个元素。
print(lst1[:-1])
# lst1[:1]相当于 lst1[0:1],也就是从第一个元素到第二个元素。
print(lst1[:1])
# lst1[::1]相当于 lst1[1:len(lst1)-1:1],也就是从第一个元素到最后一个元素复制一遍,即顺序。
print(lst1[::1])
在代码中已经有详细说明,这里总结一下
::-1表示逆序, ::1表示顺序。
:-1表示-len到-1,:1表示0到1
运行结果:
python学习-综合练习三(斐波那契数列、阿姆斯特朗数、//和/、十进制转二进制bin、八进制oct、十六进制hex、进制转换源码、python中::和:的区别)相关推荐
- python编写递归函数、求斐波那契数列_利用Python实现斐波那契数列的方法实例
今天我们来使用Python实现递归算法求指定位数的斐波那契数列 首先我们得知道斐波那契数列是什么? 斐波那契数列又叫兔子数列 斐波那契数列就是一个数列从第三项开始第三项的值是第一项和第二项的和依次类推 ...
- python编写递归函数、求斐波那契数列第n项_40.细说递归之二:Python求解斐波那契数列...
本篇通过青蛙跳台阶.兔子数列(斐波那契数列)问题进一步理解递归思想的魅力. 上一篇最后的题目如下: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个n级的台阶总共有多少种跳法? 归纳 ...
- python多种计算阶乘和斐波那契数列的六脉神剑
目录 前言 一.求阶乘 1.第一种方法 2.第二种方法 3.第三种方法 4.第四种方法 5.第五种方法 6.第六种方法 二.斐波那契数列 1.第一种方法 2.第二种方法 3.第三种方法 前言 最近在p ...
- python编写递归函数、求斐波那契数列第n项_Python非递归算法求解Fibonacci斐波那契数列...
斐波那契数列递归数学定义如下:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*) Python代码: 函数f(n),输入非负整数n,返回f[n] def f(n): a, ...
- python显示1000以内的斐波拉契数列_python实现斐波那契数列
首先想到的是用递归来解决 求100内的斐波那契数列: def diGui(num=100): a,b = 0,1 # 为了方便看打印,我就用list存一下 lit = [] while a < ...
- Python案例:格式化输出斐波拉契数列
文章目录 一.提出任务 二.运行效果 三.实现步骤 1.定义fib(n)函数 2.采用format()函数实现格式化输出 3.采用repr()与rjust()函数实现格式化输出 4.运行程序,查看效果 ...
- python编写递归函数、求斐波那契数列第n项的值_用递归函数求斐波那契数列的第n项的值...
展开全部 #include int Fibonacci(int n) { if( n == 1 || n == 2) // 递归结束的条件,求前两项 return 1; else return Fib ...
- python编写递归函数、求斐波那契数列第n项_用Python实现求Fibonacci数列的第n项
1. 背景--Fabonacci数列的介绍(摘自百度百科): 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacc ...
- Python之递归(含斐波那契数列和汉诺塔)
Python递归 一.什么是递归? 递归就是在调用一个函数的过程中,直接或者间接的调用函数自身这就叫递归. 二.实例 这里讲一下递归的注意点: (1)调用一次函数就会在内存里开辟栈帧空间,在调用结束后 ...
最新文章
- OpenGL Julia Fractal(Julia分形)的实例
- 如何优雅地检测类型/表达式有效性?
- restorecon命令
- centos 需要哪些常用端口_仓库加盟:电商仓库需要配备哪些常用仓储设备
- Git学习总结(22)——Git 常用操作再总结
- Oracle 日期时间函数大全
- 2019美赛M(一等/优异)奖,给想参加美赛的同学们的干货建议
- ESB(企业服务总线)
- 一文述说人工智能(AI)发展史,几经沉浮!
- Activity实战之装备购买小案例
- 如何制作资产编号标签
- 虚拟机——KSM Kernel Samepage Merging
- 三网话费接口API 文档
- 利用Qt制作连续性图片
- 可观测性-Metrics-Kafka监控
- Weblogic清缓存
- 《Android 基础(四十九)》Navigation Of JetPack【译】
- Facebook 推出支付服务:Facebook Pay将横跨旗下所有App
- Google API大全
- oracle 表分区,根据时间按月分区做一次记录
热门文章
- SAP Spartacus breakpoint的决定逻辑
- SAP Spartacus list item点击之后的detail页面跳转
- SAP Spartacus Cost Center list的实现原理
- Angular Component模板里的元素,运行时如何被生成并插入到DOM tree中
- Angular的property binding一个例子
- Spring Bean的继承
- SAP Cloud for Customer的HTML Mashup渲染原理
- how to make Membership header extension fields editable
- 阿里云Java虚拟机的安装位置
- OPA start up and wait for