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 """