龙空技术网

Python初级练习小实例(1-20例),1个实例多个例子相互参考

运维笔记ywbj 2363

前言:

此时朋友们对“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.4F
8: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())

以上实例输出结果如下:

FalseTrue
10: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最大值为: 100
13: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 987
18: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=0
19: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开次方