测试面试python题

本文介绍了Python中的一些基础算法,包括冒泡排序的两种实现,99乘法表的两种打印方式,杨辉三角的生成,寻找水仙花数,构建金字塔图案,斐波那契数列的生成,序列去重并排序,数字直角三角形的绘制,以及一行代码实现求和与字符串反转的方法。这些内容涵盖了初级编程中的常见算法和数据结构操作。
摘要由CSDN通过智能技术生成

1. 冒泡算法

方法一:

num = [1, 5, 10, 58, 12, 2]
for i in range(len(num)-1):# 比较n-1轮,n为元素个数
    for j in range(len(num)-1-i):# 剩余两两进行比较的次数
        if num[j] < num[j + 1]:
            num[j + 1], num[j] = num[j], num[j + 1]

print(num)  #打印结果为:[58, 12, 10, 5, 2, 1]

方法二:

list1 = [2, 6, 9, 10, 18, 15, 1]
a =len(list1) # 统计列表元素的长度:len()函数(统计)
print(a) # 列表的长度为7
for i in range(a): # 那么a的取值为:0123456 #控制循环的次数
    for j in range(i+1,a): # 当i=0时 j=1.2.3.4.5.6
        if list1[i]>list1[j]: # 如从大到小只需要将大于号改为小于号
            #list1[]=list1[j] 调试,满足条件就替换
            list1[i],list1[j]=list1[j],list1[i]
        # 双向赋值语法,两者替换,无先后循序同时取值,把i的值赋值给j,
        print(list1)#调试解释用的
print(list1) # 运行结果:[1, 2, 6, 9, 10, 15,18]


2. 打印99乘法表

方法一:

for i in range(1,10):  
    for j in range(1,i+1):
        print("{}*{}={}".format(i,j,i*j),end=' ')  #使用format格式化输出
    print()

方法二:

for i in range(1,10): # 用来控制循环次数,外循环 i的结果循环次数为:1-9
    for j in range(1,i+1): # 内循环 j=1 内循环循环完毕后才会回到外
循环
        print(j,'*',i,'=',j*i,'\t',end='') # \t 转义字符:表示空格 \n :表示换行
    print('\n')
# 解析
当i = 1 j = 1 1 * 1 = 1
当1 = 2 j = 1,2 1x2=2 2x2=4


3. 杨辉三角**

massage = '''
杨辉三角,本质上是二项式(a+b)的n次方展开后各项的系数排成的三角形。其性质包括:每行的端点数为1, 一个数也为1;每个数等于它左上方和上方的两数之和。
'''

n = eval(input("输入要打印的行数:"))
triangle = [[1], [1, 1]]
for i in range(2, n):  # 已经给出前两行,求剩余行
    pre = triangle[i-1]  # 上一行
    cul = [1]  # 定义每行第一个元素
    for j in range(i-1):  # 算几次
        cul.append(pre[j]+pre[j+1])  # 每个数字等于上一行的左右两个数字之和。
    cul.append(1)  # 添加每行最后一个元素
    triangle.append(cul)
print("普通输出:{}".format(triangle))
for i in range(n):  # 按等边三角形格式输出
    s = " "*(n-i-1)
    for j in triangle[i]:
        s = s + str(j)+" "
    print(s)

4. 水仙花

massage = """
求100-999 所有的"水仙花数"。所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。 
例如: 153 是一个"水仙花数",153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数
"""

l = []
for i in range(100,1000):
    a = i // 100
    b = (i%100) // 10
    c = i % 10
    if a**3 + b**3 + c**3 == i:
        l.append(i)
for i in range(len(l)):
    print(l[i],end = " ")
 # 输出结果 153 370 371 407 



5. 金字塔图案
打印用“*”组成的金字塔图案。
输入描述:
多组输入,一个整数(2~20),表示金字塔边的长度,即“*”的数量,也表示输出行数。

输出描述:
针对每行输入,输出用“*”组成的金字塔,每个“*”后面有一个空格。

def pypart(n):
    myList = []
    for i in range(1, n + 1):
        myList.append("*" * i)
    print("\n".join(myList))


# 驱动程序代码
n = 5
pypart(n)


6. 波非那契数列

方法一:

def fib(lenght):
    a, b = 0, 1
    n = 0
    while n < lenght:
        yield b
        a,b = b,a+b
        n += 1
gen = fib(9)
for i in gen:
    print(i,end=' ')

方法二:

def fun(n): # n = 9
    list1 = []
    for i in range(n): # i = 0-8
        if i == 0 or i == 1:
            list1.append(1) #当i=0或者1的时候往列表添加1,先确定前面的两个数位1
        else:
            list1.append(list1[i-2] + list1[i-1]) #[i-2]索引位是减两位的和减一位的相加得到的结果
    print(list1)
fun(9)


7. 序列中整数去重
题目描述
给定一个整数序列,把其中的重复的整数去掉,并将去重后的序列从小到达排序输出。
输入描述:
第一行,输入一个整数n,表示序列有n个整数。
第二行输入n个整数(每个整数大于等于1,小于等于1000),整数之间用空格分隔。
输出描述:
去重并且从小到大排列的整数序列,整数之间用空格分隔。
'''

n = int(input('请输入:'))
l = list(map(int,input('请输入一段整数:').split(' ')))
new_l = []
for i in range(len(l)):
    if l[i] not in  new_l:
        new_l.append(l[i])
print(new_l)


8. 数字直角三角形图案

massage = '''
打印用数字组成的数字三角形图案。
输入描述:
多组输入,一个整数(3~20),表示数字三角形边的长度,即数字的数量,也表示输出行数。
输出描述:
针对每行输入,输出用数字组成的对应长度的数字三角形,每个数字后面有一个空格。
'''

while True:
    try:
        n = int(input("请输入3-20的数字:"))
        for i in range(n):
            for j in range(1,i+1):
                print(j,end=' ')
            print()
    except:
        break


       
 """


9. 一行代码实现1~100的和

print(sum([i for i in range(1,101)]))


10. 反向输出一个字符串

方法一:
 

s = str(input("请输入一个需要排序字符串:"))
# new_s = s[-1::-1]
new_s = s[::-1]
print(new_s)

方法二:

str = list(input('input a string:'))
str.reverse()#该方法没有返回值,若打印则出现None,但会对列表元素进行反向排序
print(''.join(str))

11.求出1 / 1 + 1 / 3 + 1 / 5……+1 / 99的和 (1分之一+3分之1+5分支1....)

i=1.0 # 定义变量i 赋予浮点值(用作控制循环的次数)
sum=0 # 定义一个求和的变量
while i <= 99: # while循环
    sum = sum + 1/i # i为可变分子和分母必须要有一个为浮点数
    i+=2
print(sum) # 结果为:2.93777484847

12.用循环语句,计算2 - 10之间整数的循环相乘的值 (2X3X4X5....10)

sum = 1 # 定义一个求和的变量
for i in range(2,11): # i变量值是用遍历range函数内的值来循环
    sum = sum * i #这个地方不需要i=i+1,一般是结合while使用
print(sum) # 运行结果:3628800

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值