前言:
此时朋友们对“python开次方”大致比较注意,小伙伴们都需要知道一些“python开次方”的相关知识。那么小编同时在网上汇集了一些对于“python开次方””的相关内容,希望看官们能喜欢,大家一起来了解一下吧!以下所有测试实例来自于菜鸟教程:
1:Python 数字求和
自己的代码
#用户输入数字,并转换为浮点型(float)a = float(input('请输入数字1:'))b = float(input('请数入数字2:'))#数字求和sum = a+b# 显示计算结果print('{0}和{1}的和为{2}'.format(a,b,sum))
执行结果:
请输入数字1: > 8.321请输入数字2: > 4.23128.321和4.2312的和为12.5522
菜鸟教程参考代码
# 用户输入数字num1 = input('输入第一个数字:')num2 = input('输入第二个数字:')# 求和sum = float(num1) + float(num2)# 显示计算结果print('数字 {0} 和 {1} 相加结果为: {2}'.format(num1, num2, sum))
执行结果:
输入第一个数字:1.5输入第二个数字:2.5数字 1.5 和 2.5 相加结果为: 4.0
或者直接一行代码执行
print('两数之和为 %.1f' %(float(input('输入第一个数字:'))+float(input('输入第二个数字:'))))
%.1f 指的输出保留一位小数的浮点数。
%f 表示其输出格式为浮点数。
其他人参考笔记
写了一个报错重新输入的处理
while 1: x=input("请输入数字x的值") y=input("请输入数字y的值") try: sum=float(x)+float(y) except: print("输入的数字格式不正确,请重新输入") continue else: print(f"两个数字之和为{sum:.2f}") break
print(f" ")
格式化的字符串文字前缀为 f ,和接受的格式字符串相似str.format(),
以 f 开头,包含的{ }表达式在程序运行时会被表达式的值代替。
列子:
w = 2print('%.2f' %w)print(f'w = {w:.2f}')#执行结果:2:00w = 2.00
2:Python 平方根
自己的代码
num = float(input("请输入数字"))a = num ** 0.5print(f'%.2f的平方根为{a:.2f}'%num)
执行结果:
请输入数字 7878.00的平方根为8.83
菜鸟教程参考代码
代码1
num = float(input('请输入一个数字: '))num_sqrt = num ** 0.5print(' %0.3f 的平方根为 %0.3f'%(num ,num_sqrt))
执行结果:
请输入一个数字: 44.000 的平方根为 2.000
代码2
# 计算实数和复数平方根# 导入复数数学模块import cmathnum = int(input("请输入一个数字: "))num_sqrt = cmath.sqrt(num)print('{0} 的平方根为 {1:0.3f}+{2:0.3f}j'.format(num ,num_sqrt.real,num_sqrt.imag))
执行结果:
请输入一个数字: -8-8 的平方根为 0.000+2.828j
cmath.sqrt(x) x的开方,以上支持 负数 和 复数 的平方根。
注:可能版本原因,本人3.8版本,菜鸟教程需要用到cmath.sqrt模块支持负数和复数,但是我测试取幂的方式num ** 0.5,同样支持负数 和 复数 的平方根运算。
3:Python 二次方程
主要根据公式法求解,上过初中的公式。
二次方程求根公式法:Δ=b^2-4ac,x=[-b±(b^2-4ac)^(1/2)]/2a。
自己的代码
a = float(input('输入 a: '))b = float(input('输入 b: '))c = float(input('输入 c: '))d = b**2-4*a*cx = (-b+d**0.5)/(2*a)x2 = (-b-d**0.5)/(2*a)print(f'方程式{a:.2f}x^2+({b:.2f}x)+({c:.2f})中x值为{x:.2f}和{x2:.2f}')
执行结果:
输入 a: > 1输入 b: > -10输入 c: > 24方程式1.00x^2+(-10.00x)+(24.00)中x值为6.00和4.00
菜鸟教程参考代码
# 二次方程式 ax**2 + bx + c = 0# a、b、c 用户提供,为实数,a ≠ 0# 导入 cmath(复杂数学运算) 模块import cmatha = float(input('输入 a: '))b = float(input('输入 b: '))c = float(input('输入 c: '))# 计算d = (b**2) - (4*a*c)# 两种求解方式sol1 = (-b-cmath.sqrt(d))/(2*a)sol2 = (-b+cmath.sqrt(d))/(2*a)print('结果为 {0} 和 {1}'.format(sol1,sol2))
执行结果:
输入 a: 1输入 b: 5输入 c: 6结果为 (-3+0j) 和 (-2+0j)
菜鸟教程同上面例子一样,用到cmath.sqrt模块支持负数和复数,我用取幂的方式num ** 0.5,同样支持负数 和 复数。
4:Python 计算三角形的面积
三角形面积公式有很多,这里简单的就用到海伦-秦九韶公式:
设三角形ABC三个角A、B、C的对边分别为a、b、c,三角形ABC的面积为S,则S=“p(p-a)(p-b)(p-c)的算术平方根”。其中p等于三角形周长的一半。即p=(1/2)x(a+b+c)。
自己的代码
a = float(input('输入 a: '))b = float(input('输入 b: '))c = float(input('输入 c: '))p=(a+b+c)/2s=(p*(p-a)*(p-b)*(p-c))**0.5print(f'边长为{a:.2f},{b:.2f},{c:.2f}的三角形面积为{s:.2f}')
执行结果:
输入 a: 3输入 b: 4输入 c: 5边长为3.00,4.00,5.00的三角形面积为6.00
菜鸟教程参考代码
a = float(input('输入三角形第一边长: '))b = float(input('输入三角形第二边长: '))c = float(input('输入三角形第三边长: '))# 计算半周长s = (a + b + c) / 2# 计算面积area = (s*(s-a)*(s-b)*(s-c)) ** 0.5print('三角形面积为 %0.2f' %area)
执行结果:
输入三角形第一边长: 5输入三角形第二边长: 6输入三角形第三边长: 7三角形面积为 14.70
其他人参考笔记
a = float (input ('输入三角形第一边长:'))b = float (input ('输入三角形第二边长:'))c = float (input ('输入三角形第三边长:'))while a+b<c or a+c<b or b+c<a: print ('输入的边构不成三角形,请重新输入!') a = float (input ('输入三角形第一边长:')) b = float (input ('输入三角形第二边长:')) c = float (input ('输入三角形第三边长:'))s = (a+b+c) /2area = (s*(s-a)*(s-b)*(s-c))**0.5print ('三角形面积为:%0.2f'%area)
加了三角形判断
5:Python 计算圆的面积
圆的公式:S=π r^2
自己的代码
pi = 3.14a = float (input ('输入圆的半径r:'))s=pi*a**2print(f'圆面积为:{s:.2f}')
执行结果:
输入圆的半径r: 3圆面积为:78.50
菜鸟教程参考代码
用到了定义方法
#定义一个方法来计算圆的面积def findArea(r): PI = 3.142 return PI * (r*r) #调用方法print("圆的面积为 %.6f" % findArea(5))
执行结果:
圆的面积为 78.550000
其他人参考笔记
创建函数,可重复输入且非数字不会中
#计算圆的面积import mathdef cirarea(): r=0 while r <=0: print('请输入大于0的数字!') try: r=float(input('您所要求的圆的半径是:')) except: print('输入错误,请输入数字!') else: p=math.pi square=p*r**2 print('您所求的圆的面积为:%.4f'%square)cirarea()6:Python 随机数生成
自己的代码
根据输入的位数,生成随机数
import randomdef random(length): min = 10**(length-1) max = 10**length -1 return random.randint(min,max)length = int(input("请输入随机的位数:"))print(random(length))
执行结果:
请输入随机的位数: > 514771
菜鸟教程参考代码
# 导入 random(随机数) 模块import random print(random.randint(0,9))
执行以上代码输出结果为:4
以上实例我们使用了 random 模块的 randint() 函数来生成随机数,你每次执行后都返回不同的数字(0 到 9),该函数的语法为:
random.randint(a,b)
函数返回数字 N ,N 为 a 到 b 之间的数字(a <= N <= b),包含 a 和 b。
其他人参考笔记
random() 函数中常见的函数如下:
import randomprint( random.randint(1,10) ) # 产生 1 到 10 的一个整数型随机数print( random.random() ) # 产生 0 到 1 之间的随机浮点数print( random.uniform(1.1,5.4) ) # 产生 1.1 到 5.4 之间的随机浮点数,区间可以不是整数print( random.choice('tomorrow') ) # 从序列中随机选取一个元素print( random.randrange(1,100,2) ) # 生成从1到100的间隔为2的随机整数a=[1,3,5,6,7] # 将序列a中的元素顺序打乱random.shuffle(a)print(a)
Python 生成随机数、随机字符串
import randomimport string# 随机整数:print random.randint(1,50)# 随机选取0到100间的偶数:print random.randrange(0, 101, 2)# 随机浮点数:print random.random()print random.uniform(1, 10)# 随机字符:print random.choice('abcdefghijklmnopqrstuvwxyz!@#$%^&*()')# 多个字符中生成指定数量的随机字符:print random.sample('zyxwvutsrqponmlkjihgfedcba',5)# 从a-zA-Z0-9生成指定数量的随机字符:ran_str = ''.join(random.sample(string.ascii_letters + string.digits, 8))print ran_str# 多个字符中选取指定数量的字符组成新字符串:print ''.join(random.sample(['z','y','x','w','v','u','t','s','r','q','p','o','n','m','l','k','j','i','h','g','f','e','d','c','b','a'], 5))# 随机选取字符串:print random.choice(['剪刀', '石头', '布'])# 打乱排序items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]print random.shuffle(items)7:Python 摄氏温度转华氏温度
首先了解换算公式:
华氏度(℉)=32+摄氏度(℃)×1.8,
摄氏度(℃)=(华氏度(℉)-32)÷1.8。
自己的代码
a = int(input("请选择需要输入的温度,1:摄氏度。2:华氏度"))def she(tem): hua = 32 + tme * 1.8 return huadef hua(tem): she = (tem-32) / 1.8 return sheif a == 1: tem = float(input("请输入摄氏温度:")) b = she(tem) print(f'{tem:f}摄氏度,为{b:.4f}华氏度')elif a == 2: tem = float(input("请输入华氏温度:")) b = hua(tem) print(f'{tem:f}华氏度,为{b:.4f}摄氏度')else: print("请输入正确的值1或者2")
执行结果:
请选择需要输入的温度,1:摄氏度。2:华氏度 > 1请输入摄氏温度: > 3838.00摄氏度,为100.40华氏度
菜鸟教程参考代码
# 用户输入摄氏温度# 接收用户输入celsius = float(input('输入摄氏温度: '))# 计算华氏温度fahrenheit = (celsius * 1.8) + 32print('%0.1f 摄氏温度转为华氏温度为 %0.1f ' %(celsius,fahrenheit))
执行以上代码输出结果为:
输入摄氏温度: 3838.0 摄氏温度转为华氏温度为 100.4
其他人参考笔记
a = input("请输入带有符号的温度值: ")if a[-1] in ['F','f']: C = (eval(a[0:-1]) - 32)/1.8 print("转换后的温度是{:.1f}C".format(C))elif a[-1] in ['C','c']: F = 1.8*eval(a[0:-1]) + 32 print("转换后的温度是{:.1f}F".format(F))else: print("输入格式错误")
执行以上代码输出结果为:
请输入带有符号的温度值: 38C转换后的温度是100.4F8:Python 交换变量
自己的代码
a = input("a的值:")b = input("b的值:")print(f"a值为{a},b值为{b}")a,b = b,aprint(f"交换后a值为{a},b值为{b}")
执行以上代码输出结果为:
a的值: > 10b的值: > 20a值为10,b值为20交换后a值为20,b值为10
菜鸟教程参考代码
# 用户输入x = input('输入 x 值: ')y = input('输入 y 值: ')# 创建临时变量,并交换temp = xx = yy = tempprint('交换后 x 的值为: {}'.format(x))print('交换后 y 的值为: {}'.format(y))
执行以上代码输出结果为:
输入 x 值: 2输入 y 值: 3交换后 x 的值为: 3交换后 y 的值为: 2
以上实例中,我们创建了临时变量 temp ,并将 x 的值存储在 temp 变量中,接着将 y 值赋给 x,最后将 temp 赋值给 y 变量。
不使用临时变量。
# 用户输入x = input('输入 x 值: ')y = input('输入 y 值: ')# 不使用临时变量x,y = y,xprint('交换后 x 的值为: {}'.format(x))print('交换后 y 的值为: {}'.format(y))
其他人参考笔记
不使用临时变量:
# 用户输入x = int(input('输入 x 值: '))y = int(input('输入 y 值: '))x = x + yy = x - yx = x - yprint('交换后 x 的值为: {}'.format(x))print('交换后 y 的值为: {}'.format(y))
异或形式:
#交换变量x = int(input('输入 X 值:'))y = int(input('输入 Y 值:'))x = x ^ yy = x ^ yx = x ^ yprint('交换后的 X 值为:',x)print('交换后的 Y 值为:',y)
9:Python 判断字符串是否为数字
自己的代码
逻辑,通过float 类型判断,数字float不会报错,报错就不是数字。除了异常报错,用try except 语法。
def isnumber(a): try: float(a) return (f"{a}是数字") except: return (f"{a}不是数字")a = input("请输入值:")print(isnumber(a))
执行以上代码输出结果为:
请输入值:1.2131231.213123是数字请输入值:asdasd不是数字
菜鸟教程参考代码
def is_number(s): try: float(s) return True except ValueError: pass try: import unicodedata unicodedata.numeric(s) return True except (TypeError, ValueError): pass return False # 测试字符串和数字print(is_number('foo')) # Falseprint(is_number('1')) # Trueprint(is_number('1.3')) # Trueprint(is_number('-1.37')) # Trueprint(is_number('1e3')) # True # 测试 Unicode# 阿拉伯语 5print(is_number('٥')) # True# 泰语 2print(is_number('๒')) # True# 中文数字print(is_number('四')) # True# 版权号print(is_number('©')) # False
执行以上代码输出结果为:
FalseTrueTrueTrueTrueTrueTrueTrueFalse
更多方法
Python isdigit() 方法检测字符串是否只由数字组成。
#!/usr/bin/python3str = "123456";print (str.isdigit())str = "Runoob example....wow!!!"print (str.isdigit())
以上实例输出结果如下:
TrueFalse
Python isnumeric() 方法检测字符串是否只由数字组成。这种方法是只针对unicode对象。
isnumeric() 方法检测字符串是否只由数字组成,数字可以是: Unicode 数字,全角数字(双字节),罗马数字,汉字数字。
指数类似 ² 与分数类似 ½ 也属于数字。
#!/usr/bin/python3str = "runoob2016" print (str.isnumeric())str = "23443434"print (str.isnumeric())
以上实例输出结果如下:
FalseTrue10:Python 判断奇数偶数
自己的代码
num = int(input("输入一个数字: "))if (num % 2) == 0: print(f"{num} 是偶数")else: print(f"{num} 是奇数")
以上实例输出结果如下:
输入一个数字: 22 是奇数输入一个数字: 2121 是奇数
菜鸟教程参考代码
num = int(input("输入一个数字: "))if (num % 2) == 0: print("{0} 是偶数".format(num))else: print("{0} 是奇数".format(num))
执行以上代码输出结果为:
输入一个数字: 33 是奇数
其他人代码参考
优化加入输入判断:
while True: try: num=int(input('输入一个整数:')) #判断输入是否为整数 except ValueError: #不是纯数字需要重新输入 print("输入的不是整数!") continue if num%2==0: print('偶数') else: print('奇数') break
简洁就是美丽。
num = eval(input('Number:\n'))print('{} is '.format(num) + ('even number.' if num % 2 == 0 else 'odd number.'))
11:Python 判断闰年
自己的代码
year = int(input("输入年份:"))if (year % 100) == 0: if (year % 400) == 0: print(f"{year}是闰年") else: print(f"{year}不是闰年")else: if (year % 4) == 0: print(f"{year}是闰年") else: print(f"{year}不是闰年")
执行以上代码输出结果为:
输入年份:19001900不是闰年输入年份:20042004是闰年
菜鸟教程参考代码
year = int(input("输入一个年份: "))if (year % 4) == 0: if (year % 100) == 0: if (year % 400) == 0: print("{0} 是闰年".format(year)) # 整百年能被400整除的是闰年 else: print("{0} 不是闰年".format(year)) else: print("{0} 是闰年".format(year)) # 非整百年能被4整除的为闰年else: print("{0} 不是闰年".format(year))
执行以上代码输出结果为:
输入一个年份: 20002000 是闰年输入一个年份: 20112011 不是闰年
其他人代码参考
但其实 Python 的 calendar 库中已经封装好了一个方法 isleap() 来实现这个判断是否为闰年:
>>> import calendar>>> print(calendar.isleap(2000))True>>> print(calendar.isleap(1900))False
实例
import calendaryear = int(input("请输入年份:"))check_year=calendar.isleap(year)if check_year == True: print ("闰年")else: print ("平年")12:Python 获取最大值函数
自己的代码
print(max(1, 2))
执行结果:
2
菜鸟教程参考代码
使用max()方法求最大值:
# 最简单的print(max(1, 2))print(max('a', 'b')) # 也可以对列表和元组使用print(max([1,2]))print(max((1,2))) # 更多实例print("80, 100, 1000 最大值为: ", max(80, 100, 1000))print("-20, 100, 400最大值为: ", max(-20, 100, 400))print("-80, -20, -10最大值为: ", max(-80, -20, -10))print("0, 100, -400最大值为:", max(0, 100, -400))
执行以上代码输出结果为:
2b2280, 100, 1000 最大值为: 1000-20, 100, 400最大值为: 400-80, -20, -10最大值为: -100, 100, -400最大值为: 10013:Python 质数判断
一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除(2, 3, 5, 7等),换句话说就是该数除了1和它本身以外不再有其他的因数。
自己的代码
num = int(input("输入整数:"))if num > 1: for i in range(2,num): if num % i == 0: print(f"{num}不是质数") break else: print(f"{num}是质数")
执行结果:
输入整数:2323是质数输入整数:2525不是质数
注意点:range 是包含左边,不包含右边,如:range(1,5)范围为: 1,2,3,4。
菜鸟教程参考代码
# 用户输入数字num = int(input("请输入一个数字: ")) # 质数大于 1if num > 1: # 查看因子 for i in range(2,num): if (num % i) == 0: print(num,"不是质数") print(i,"乘于",num//i,"是",num) break else: print(num,"是质数") # 如果输入的数字小于或等于 1,不是质数else: print(num,"不是质数")
执行以上代码输出结果为:
请输入一个数字: 11 不是质数请输入一个数字: 44 不是质数2 乘于 2 是 4请输入一个数字: 55 是质数
其他人代码参考
原作者的算法基本正确,但时间复杂度较高,在判断一个大数是质数还是合数的情况下,应该在查看因子那里的循环中使用到平方根。代码如下:
# Python 程序用于检测用户输入的数字是质数还是合数import math# 用户输入数字num = int(input("请输入一个数字: "))# 质数大于 1if num > 1: # 找到其平方根( √ ),减少算法时间 square_num = math.floor( num ** 0.5 ) # 查找其因子 for i in range(2, (square_num+1)): #将平凡根加1是为了能取到平方根那个值 if (num % i) == 0: print(num, "是合数") print(i, "乘于", num // i, "是", num) break else: print(num, "是质数") # 如果输入的数字小于或等于 1,不是质数else: print(num, "既不是质数,也不是合数")
原理是用了开根号法:
假如一个数N是合数,它有一个约数a,那么有a×b=N
则a、b两个数中必有一个大于或等于根号N,一个小于或等于根号N。
因此,只要小于或等于根号N的数(1除外)不能整除N,则N一定是素数。
14:Python 输出指定范围内的素数
同上,只是加了for取num值。
自己的代码
minn = int(input("输入最小整数:"))maxn = int(input("输入最大整数:"))for num in range(minn,maxn+1): if num > 1: for i in range(2,num): if num % i == 0: print(f"{num}不是质数") break else: print(f"{num}是质数")
执行结果:
输入最小整数:11输入最大整数:20 11是质数 12不是质数 13是质数 14不是质数 15不是质数 16不是质数 17是质数 18不是质数 19是质数 20不是质数
菜鸟教程参考代码
lower = int(input("输入区间最小值: "))upper = int(input("输入区间最大值: ")) for num in range(lower,upper + 1): # 素数大于 1 if num > 1: for i in range(2,num): if (num % i) == 0: break else: print(num)
其他人代码参考
与前面判断是否是质数一样,作者算法中未使用到"开根号法"来节约时间复杂度,同时为加入个数等说明,因此对其改进如下:
import math# 输出指定范围内的素数# 用户输入范围lower = int(input("输入区间最小值: "))upper = int(input("输入区间最大值: "))print("素数结果如下:")print("="*10)pri_num = 0com_num = 0for num in range(lower, upper + 1): # 找到其平方根( √ ),减少算法时间 square_num = math.floor(num ** 0.5) # 素数大于 1 if num > 1: for i in range(2, (square_num + 1)): if (num % i) == 0: com_num += 1 break else: pri_num += 1 print(num)print("="*10)print(com_num,'个合数')print(pri_num,'个素数')15:Python 阶乘实例
整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,0的阶乘为1。即:n!=1×2×3×...×n。
自己的代码
num = int(input("请输入一个数字: "))s = 1if num > 0: for i in range(1,num+1): s = s * i print(f"{num}的阶乘是{s}")
执行结果:
请输入一个数字: 1010的阶乘是3628800
菜鸟教程参考代码
# 通过用户输入数字计算阶乘 # 获取用户输入的数字num = int(input("请输入一个数字: "))factorial = 1 # 查看数字是负数,0 或 正数if num < 0: print("抱歉,负数没有阶乘")elif num == 0: print("0 的阶乘为 1")else: for i in range(1,num + 1): factorial = factorial*i print("%d 的阶乘为 %d" %(num,factorial))
执行以上代码输出结果为:
请输入一个数字: 33 的阶乘为 6
其他人代码参考
查了一下 math 库的帮助,发现自带阶乘函数。所以代码可以简洁一点。
import mathnum = int(input("请输入一个数字:"))if num < 0: print("负数是没有阶乘的!")else: print("{0} 的阶乘为 {1}".format(num, math.factorial(num)))16:Python 九九乘法表
自己的代码
for i in range(1,10): for j in range(1,i+1): print(f"{j}*{i}={i*j}",end=" ") print()
执行结果:
1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
print() 默认为换行,省略值end='/n',及print() = print(end='/n'),
print("aa",end=" ,"),及更改了/n默认值,不会换行,而是以“ ,”结尾。
菜鸟教程参考代码
# 九九乘法表for i in range(1, 10): for j in range(1, i+1): print('{}x{}={}\t'.format(j, i, i*j), end='') print()
通过指定end参数的值,可以取消在末尾输出回车符,实现不换行。
其他人代码参考
一句话输出99乘法表,可以参考一下:
print('\n'.join(' '.join("%dx%d=%-2d" % (x, y, x*y) for x in range(1, y+1)) for y in range(1, 10)))
17:Python 斐波那契数列
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。
自己的代码
如果在细一点,需要加个if大于等于1的判断
num = int(input("输入大于1的范围值:"))a = 0b = 1print("0,1",end=',')while True: c = a + b a,b=b,c if c > num: break print(c,end=',')
执行结果:
输入大于1的范围值:1000,1,1,2,3,5,8,13,21,34,55,89,
菜鸟教程参考代码
# Python 斐波那契数列实现 # 获取用户输入数据nterms = int(input("你需要几项?")) # 第一和第二项n1 = 0n2 = 1count = 2 # 判断输入的值是否合法if nterms <= 0: print("请输入一个正整数。")elif nterms == 1: print("斐波那契数列:") print(n1)else: print("斐波那契数列:") print(n1,",",n2,end=" , ") while count < nterms: nth = n1 + n2 print(nth,end=" , ") # 更新值 n1 = n2 n2 = nth count += 1
执行以上代码输出结果为:
你需要几项? 10斐波那契数列:0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 ,
我写的是范围,这个是位数
其他人代码参考
用函数方法,值得参考
def fib(n): a, b = 0, 1 while a < n: print(a, end=' ') a, b = b, a+b print()fib(1000) # 取值范围可以任意# 输出结果如下:# 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 98718:Python 阿姆斯特朗数
如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5^3 + 3^3 = 153。
1000以内的阿姆斯特朗数: 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407。
自己的代码
显示范围内的所有阿姆斯特朗数,用字符串的形式,获取每位数的值并计算。
num=int(input("请输入范围值:"))for n in range(1,num+1): sum = 0 numlen=len(str(n))# print(f"{n}的位数为{numlen}") for i in range(0,numlen): s = int(str(n)[i]) s1 = s**numlen sum = sum + s1# print(f"{n}的第{i}位为{s},{s}的{numlen}次方为{s1},和的值为{sum}") if sum == n: print(f"{n}为 阿姆斯特朗数")
执行结果:
输入范围:100001为 阿姆斯特朗数2为 阿姆斯特朗数3为 阿姆斯特朗数4为 阿姆斯特朗数5为 阿姆斯特朗数6为 阿姆斯特朗数7为 阿姆斯特朗数8为 阿姆斯特朗数9为 阿姆斯特朗数153为 阿姆斯特朗数370为 阿姆斯特朗数370为 阿姆斯特朗数371为 阿姆斯特朗数407为 阿姆斯特朗数1634为 阿姆斯特朗数6688为 阿姆斯特朗数8208为 阿姆斯特朗数9474为 阿姆斯特朗数
菜鸟教程参考代码
菜鸟教程,是通过除数余数来获取每位数的值。
# Python 检测用户输入的数字是否为阿姆斯特朗数 # 获取用户输入的数字num = int(input("请输入一个数字: ")) # 初始化变量 sumsum = 0# 指数n = len(str(num)) # 检测temp = numwhile temp > 0: digit = temp % 10 sum += digit ** n temp //= 10 # 输出结果if num == sum: print(num,"是阿姆斯特朗数")else: print(num,"不是阿姆斯特朗数")
执行以上代码输出结果为:
请输入一个数字: 345345 不是阿姆斯特朗数请输入一个数字: 153153 是阿姆斯特朗数请输入一个数字: 16341634 是阿姆斯特朗数
获取指定期间内的阿姆斯特朗数
lower = int(input("最小值: "))upper = int(input("最大值: ")) for num in range(lower,upper + 1): # 初始化 sum sum = 0 # 指数 n = len(str(num)) # 检测 temp = num while temp > 0: digit = temp % 10 sum += digit ** n temp //= 10 if num == sum: print(num)
执行以上代码输出结果为:
最小值: 1最大值: 10000123456789153370371407163482089474
其他人代码参考
获取指定期间内的阿姆斯特朗数
lower=int(input("Please input a number: "))upper=int(input("Please input a number: "))sum=0for num in range(lower,upper): l = len(str(num)) for n in str(num): sum=sum+int(n)**l if num==sum: print(num) sum=019:Python 十进制转二进制、八进制、十六进制
python默认方法转换值
自己的代码
n=int(input("请输入值:"))print(f"{n}的二进制为{bin(n)},十进制为{oct(n)},十六进制为{hex(n)}")
执行结果
请输入值:1010的二进制为0b1010,十进制为0o12,十六进制为0xa
菜鸟教程参考代码
# 获取用户输入十进制数dec = int(input("输入数字:"))print("十进制数为:", dec)print("转换为二进制为:", bin(dec))print("转换为八进制为:", oct(dec))print("转换为十六进制为:", hex(dec))
执行以上代码输出结果为:
输入数字:5十进制数为:5转换为二进制为: 0b101转换为八进制为: 0o5转换为十六进制为: 0x5
其他人代码参考
具体实现
十进制到二进制:
def dec2bin(num): l = [] if num < 0: return '-' + dec2bin(abs(num)) while True: num, remainder = divmod(num, 2) l.append(str(remainder)) if num == 0: return ''.join(l[::-1])
十进制到八进制:
def dec2oct(num): l = [] if num < 0: return '-' + dec2oct(abs(num)) while True: num, remainder = divmod(num, 8) l.append(str(remainder)) if num == 0: return ''.join(l[::-1])
十进制到十六进制:
base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]def dec2hex(num): l = [] if num < 0: return '-' + dec2hex(abs(num)) while True: num,rem = divmod(num, 16) l.append(base[rem]) if num == 0:20:Python ASCII码与字符相互转换
同上,用python默认方法转换值
自己的代码
n=input("请输入字符:")print(f"{n}的ASCII 码为{ord(n)}")
同理,chr(a))为ASCII码转字符。
执行结果:
请输入字符:aa的ASCII 码为97
菜鸟教程参考代码
c = input("请输入一个字符: ")# 用户输入ASCII码,并将输入的数字转为整型a = int(input("请输入一个ASCII码: "))print( c + " 的ASCII 码为", ord(c))print( a , " 对应的字符为", chr(a))
执行以上代码输出结果为:
请输入一个字符: a请输入一个ASCII码: 101a 的ASCII 码为 97101 对应的字符为 e
标签: #python开次方