Python面试题

第一题:

题目:设计一个函数,可以传入一个或多个单词的字符串,并返回该字符串,但所有五个或更多字母的单词都前后颠倒。

解答:

1.代码:

def long_words(text):  #定义函数
    words = text.split()  #将字符串按空格分割成列表
    i = []  #设置空列表
    for word in words:
        if len(word) >= 5:
            i.append(word[::-1]) #使用切片
        else:
            i.append(word)
    return " ".join(i)  #合并列表
#示例
string = "Hello Everybody!!!"
output = long_words(string)
print(output)

2.运行:

第二题:

 题目:给定一个字符串,判断该字符事是否是回文

回文是指顺读或倒读都一样的字、诗句等,如aabaa、abacaba是回文,aaabaaaa则不是回文

解答:

1.代码

def y(num):  #定义函数
    num = num.lower().replace(" ", "")
    return num == num[::-1]

#示例
string1 = 'aaabbb'
print(y(string1))
string2 = 'ababa'
print(y(string2))

2.运行

第三题:

 题目:某个人进入如下一个棋盘中,要求从左上角开始走,
最后从右下角出来(要求只能前进,不能后退),
问题:共有多少种走法?

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

解答:

1.代码

m, n = 5, 8
dp = [[0] * n for _ in range(m)]
dp[0][0] = 1

for i in range(m):
    for j in range(n):
        if i == 0 and j == 0:
            continue
        if i == 0:
            dp[i][j] = dp[i][j - 1]
        elif j == 0:
            dp[i][j] = dp[i - 1][j]
        else:
            dp[i][j] = dp[i - 1][j] + dp[i][j - 1]

print(dp[m - 1][n - 1])

2.运行

第四题:

 题目:存在一个列表,列表的元素都是从1~N的元素组成现在有个元素成对出现了,找出这个成对出现的元素。

解答:

1.代码

2.运行

第五题:

 题目:存在一个列表,该列表中的元素都是成对出现,现在有一个不是成对出现,找出它。

解答:

1.代码

2.运行

第六题:

 题目:实现汉诺塔A-C的步骤

解答:

1.代码

def hanoi(n, source, target, auxiliary):  #定义函数
    if n == 1:  #遍历循环
        print(f"将圆盘从 {source} 移到 {target}")
        return
    hanoi(n - 1, source, auxiliary, target)
    print(f"将圆盘从 {source} 移到 {target}")
    hanoi(n - 1, auxiliary, target, source)

# 示例,假设初始有3个圆盘在A柱,要移到C柱,B柱作为辅助
n = 3
hanoi(n, 'A', 'C', 'B')

2.运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值