python常见代码题

  1. 写出斐波那契数列的前20位
list1=[]
for i in range(20):
    if i <= 1:
        list1.append(i)
    else:
        list1.append(list1[-1]+list1[-2])
print(list1) 
#[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181]
  1. 写出九九乘法表
for i in range(1,10):
    for j in range(1,i+1):
        print(f'{j}*{i}={j*i}\t',end='')
    print()
  1. list2=[12,98,-3,196,77,103],从小到大冒泡排序
 list2=[12,98,-3,196,77,103]
 for i in range(len(list2)-1):    #控制比几轮
    for j in range(len(list2)-1-i):   #控制每轮比几次
        if list2[j]>list2[j+1]:
           list2[j],list2[j+1]=list2[j+1],list2[j]    #两数互换
print(list2)
#[-3, 12, 77, 98, 103, 196]
  1. 冒泡算法优化
for i in range(len(list2)-1):
    flag = False
    for j in range(len(list2)-i-1):
        if list2[j]>list2[j+1]:
            list2[j],list2[j+1]=list2[j+1],list2[j]
            flag = True
    if not flag:
        print(list2)
        break
  1. 递归计算5的阶乘
def fun(n):
    if n<=1:
        return 1
    else:
        return n*fun(n-1)
print(fun(5))  
#120
  1. 计算100-999以内的质数
list3=[]
for i in range(100,1000):
   for j in range(2,i):
       if i % j == 0:
           break
   else:
       list3.append(i)
print(list3)
#[101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997]
  1. 有N个台阶,每次只能走1或2步,共有多少种方法能爬完台阶?
#本质上是斐波那契数列
def fun(n):
   if n<=2:
       return n
   else:
       return fun(n-1)+fun(n-2)
print(fun(10))
  1. 判断字符串是否为对称字符串
str1 = input('请输入字符串:')
list1 = list(str1)
for i in range(int(len(list1)/2)):
    if list1[i] != list1[-i-1]:
        print(f'字符串:{str1}是不对称的')
        break
else:
    print(f'字符串:{str1}是对称的')
  1. 求最大公约数和最小公倍数
def fun(a,b):
    if a>b:
        smaller = b
    else:
        smaller = a
    for i in range(1,smaller+1):
        if (a % i == 0) and (b % i == 0):
            res1 = i
    res2 = int(a * b / res1)
    print(f'{a}{b}的最大公约数为{res1},最小公倍数为{res2}')
fun(12,30) 
#12和30的最大公约数为6,最小公倍数为60
  1. 输出1000以内的水仙花数
list1=[]
for i in range(100,1000):
   a = i//100
   b = i//10%10
   c = i%10
   if a**3+b**3+c**3==i:
       list1.append(i)
print(list1)
# [153, 370, 371, 407]
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值