Python面试题(二)

Python相关的面试编程题

第一题 题目

"""
1.编写程序,已知程序中列表 ll = [2, 546, 73, 11, 66, 235, 73, 5, 89] 封装不同的函数,实现下面功能
    a.输出列表中所有的质数。(质数是只能被1和它本身整除的数)
    b.删除列表中的重复元素
    c.使用已知列表,通过列表生成式生成一个新的列表,其中的元素全部为偶数
    d.利用冒泡排序的方式对列表中的元素进行降序排序
    e.请找出列表中任意两个元素相加等于100的元素集合,生成新的列表,例如[(73,27),(95,5)]
"""

 代码以及运行结果

ll = [2, 546, 73, 11, 66, 235, 73, 5, 89]
# a
for num in ll:
    if num < 2:
        print("%d不是质数" % num)
    else:
        result = True
        for i in range(2, num):
            if num % i == 0:
                result = False
                break
        if result:
            print("%d是质数" % num)
        else:
            print("%d不是质数" % num)
"""
打印结果:
2是质数
546不是质数
73是质数
11是质数
66不是质数
235不是质数
73是质数
5是质数
89是质数
"""



# b
# 方式一
l2 = list(set(ll))
# 这句代码让sort()方法按照ll列表中索引顺序进行排列。
# 因为set函数会改变列表中的默认的顺序
l2.sort(key=ll.index)
# 方式二
l_2 = []
for num in ll:
    if num not in l_2:
        l_2.append(num)
print(l2)
print(l_2)
"""
打印结果:
[2, 546, 73, 11, 66, 235, 5, 89]
[2, 546, 73, 11, 66, 235, 5, 89]
"""



# c
l3 = [num for num in ll if num % 2 == 0]
print(l3)
"""
打印结果:
[2, 546, 66]
"""



# d
# 冒泡排序:相邻下标对应的元素进行比较
for i in range(0, len(ll) - 1):
    for j in range(0, len(ll) - i - 1):
        if ll[j] < ll[j + 1]:
            ll[j], ll[j + 1] = ll[j + 1], ll[j]

print(ll)
"""
打印结果:
[546, 235, 89, 73, 73, 66, 11, 5, 2]
"""



# e
l4 = []
for num1 in ll:
    for num2 in ll:
        if num1 + num2 == 100:
            l4.append((num1, num2))
print(l4)
"""
打印结果:
[(89, 11), (11, 89)]
"""

第二题题目

"""
2.已知有字符串 "I wish you have a wonderful tomorrow"
    a. 统计出字符串中字母 "a" 出现的次数
    b. 将整个字符串倒序输出
    c. 判断这个字符串是否对称的
    d. 将字符串中每一个单词的第一个字母变成大写
"""

 代码以及运行结果

str1 = "I wish you have a wonderful tomorrow"

# a
# 方式一
c1 = str1.count("a")
# 方式二
c_1 = 0
for ch in str1:
    if ch == "a":
        c_1 += 1
print(c1)
print(c_1)
"""
2
2
"""

# b
# 方式一
str2 = str1[::-1]
print(str2)
# 方式二
str_2 = ""
n = len(str1) - 1
while n >= 0:
    str_2 += str1[n]
    n -= 1
print(str_2)
# 方式三
list1 = list(str1)
list1.reverse()
str__2 = "".join(list1)
print(str__2)
"""
worromot lufrednow a evah uoy hsiw I
worromot lufrednow a evah uoy hsiw I
worromot lufrednow a evah uoy hsiw I
"""

# c
if str1 == str2:
    print("对称的")
"""不对称所以不打印"""


# d
str3 = str1.title()
print(str3)
"""
I Wish You Have A Wonderful Tomorrow
"""

第三题题目

"""
3.在下面字典中找到年龄最大的人,并输出姓名和年龄
    person = {"li": 18, "wang": 50, "zhang": 20, "sun": 22}
"""

 代码以及运行结果

person = {"li": 18, "wang": 50, "zhang": 20, "sun": 22}

max_value = max(person.values())
for name, age in person.items():
    if age == max_value:
        print("姓名:%s , 年龄:%d" % (name, age))

"""
姓名:wang , 年龄:50
"""

第四题题目

"""
4.设计一个函数,对传入的字符串(假定字符串中只包含小写字母和空格)进行加密
    加密的规则是a变d , b变e , c变f , ······ , x 变 a , y 变 b , 空格不变,
    返回加密后的字符串
"""

 代码以及运行结果

def func(str1):
    # 声明一个空字符串,用于接收加密之后的新字符串
    result = ""
    for ch in str1:
        value = ord(ch)
        if 97 <= value <= 119:
            result += chr(value + 3)
        elif 120 <= value <= 122:
            result += chr(value - 23)
        else:
            result += chr(value)
    return result


print(func("abcdjei1535gef"))
"""
defgmhl1535jhi
"""

第五题题目

"""
计算字符串中所有数字的和,已知字符串中都是字母和数字
    比如传递 "12abc34def54lala" 返回 12+34+54 = 100
    比如传递 "lov240fdgj354rn235" 返回 240+354+235 = 829
"""

代码以及运行结果

import re

str1 = "12abc34def54lala"
# 中括号只能匹配一位数字,大写26个字母和小写26个字母, +:加号至少能够匹配一位
list1 = re.split(r"[a-zA-Z]+", "12abc34def54lala")
for ele in list1:
    if ele == "":
        list1.remove("")
print(list1)
totall = 0
for ele in list1:
    totall += int(ele)
print(totall)
"""
['12', '34', '54']
100
"""

 

©️2020 CSDN 皮肤主题: 终极编程指南 设计师:CSDN官方博客 返回首页