python基础(16面试题附答案一)
python系列文章目录
python基础(01变量&数据类型&运算符)
python基础(02序列共性)
python基础(03列表和元组)
python基础(04字符串&字典)
python基础(05集合set)
python基础(06控制语句)
python基础(07函数)
python基础(08类和对象)
python基础(09闭包&装饰器)
python基础(10异常处理)
python基础(11文件读取)
python基础(12迭代器&生成器)
python基础(13魔法方法介绍)
python基础(14内置函数介绍)
python基础(15多线程编程介绍)
文章目录
- python系列文章目录
- 一、面试题附答案一
一、面试题附答案一
1、难度等级 I
如何实现 “1,2,3” 变成 [‘1’,‘2’,‘3’]
a='1,2,3'
print(a.split(','))
2、难度等级 I
1:计算整型50乘以10再除以5的商并使用print输出。
2:判断整型8是否大于10的结果并使用print输出。
3:计算整型30除以2得到的余数并使用print输出
4:使用字符串乘法实现 把字符串”我爱我的祖国”创建三遍并拼接起来最终使用print输出。
print(50*10/5)
print(8>10)
print(30%2)
print("我爱我的祖国"*3)
3、难度等级 II
将列表[[‘a’,‘b’,‘c’],[‘d’,‘e’,‘f’],[‘g’,‘h’]]中的元素依次展开
得到 一个新的列表 [‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,‘h’]
#方法一:分别获取每个元素,相加
a=[['a','b','c'],['d','e','f'],['g','h']]
b=a[0]
c=a[1]
d=a[2]
print(b+c+d)
#方法二:定义一个空列表,使用extend()添加
f=[]
f.extend(b)
f.extend(c)
f.extend(d)
print(f)
#方法三:和方法二一致
s1=[]
s=[['a','b','c'],['d','e','f'],['g','h']]
for item in s:
s1.extend(item)
print(s1)
4、难度等级 II
熟悉 列表的 sort() 方法中的key 和 reverse 参数的使用,并做demo
list=[4,2,9,1,5]
#降序
list.sort(reverse=True)
print(list)
#默认升序
list.sort()
print(list)
5、难度等级 III
将一个英文语句以单词为单位逆序排放,如 “i am a boy” 逆序排放后 “boy a am i”
a='i am a boy' #定义一个字符串
b=a.split() #默认按照空格分割成list
b.reverse() #反向存放
print(' '.join(b)) #再按照空格拼接转化成str
6、难度等级 III
假设今天的上课时间为5678秒,编程计算今天上课时间是多少时,多少分,多少秒,以“xx时xx分xx秒”的形式表示出来。
num=5678
h=5678//(60*60)
m=(5678%(60*60))//60
s=5678%60
print(f'{h}时{m}分{s}秒')
7、难度等级 I
有如下变量 x = " zhoU" 实现如下功能:
移除x 变量对应值的两边的空格
判断x变量对应的值是否以 ‘zh’ 开头
判断x变量对应的值是否以 ‘U’ 结尾
将x变量对应的值 中的 “o” 替换为x
将 x 变量对应的值根据 “h” 分割,并输出结果
输出 x 变量对应的值中 “U” 所在索引位置
输出 x 变量中索引为2 和 3 的字符
x = " zhoU"
#去除两边的空格
x=x.strip()
print(x)
#判断是否zh开头
print(x.startswith('zh'))
#判断是否U结尾
print(x.endswith('U'))
#0替换为x
print(x.replace('o','x'))
#根据h分割
print(x.split('h'))
#输出 x 变量对应的值中 “U” 所在索引位置
print(x.find("U"))
#输出 x 变量中索引为2 和 3 的字符
print(x[2],x[3])
8、难度等级 II
通过分片创一个与原列表实现反转的列表
a=[1,2,3,4,5,6]
print(a[5::-1]) #方式1
print(a[5:-7:-1]) #方式2
print(a[-1::-1]) #方式3
print(a[-1:-7:-1]) #方式4
print(a[::-1]) #方式5
9、难度等级 I
列表一次性追加多个值,用多种方法实现
#方法一:切片插入
a=[9,0,4,5]
a[4:4]=[9,9,9]
print(a)
#方法二:extend()
a.extend([6,6,6])
print(a)
#方法三:相加
b=[1,2]
print(a+b)
10、输入字符串,将字符串的开头和结尾变成’+',产生一个新的字符串
#方式一、字符串替换replace()函数
a="abcdefg"
a=a.replace('a','+')
a=a.replace('g','+')
print(a)
#方式二:切片 前6个元素加一个'+','+'再加后6个字符
a="abcdefg"
a=a[:6]+'+'
a='+'+a[1:]
print(a)
11.难度I 字典内容如下
dic = {
‘python’: 95,
‘java’: 99,
‘c’: 100
}
字典的长度是多少
请修改’java’ 这个key对应的value值为98
删除 c 这个key 增加一个key-value对,key值为 php, value是90
获取所有的key值,存储在列表里
获取所有的value值,存储在列表里
判断 javascript 是否在字典中
获得字典里所有value 的和
获取字典里最大的value
获取字典里最小的value
字典 dic1 = {‘php’: 97}, 将dic1的数据更新到dic中
dic = {
'python': 95,
'java': 99,
'c': 100
}
#字典的长度
print(len(dic))
#修改Java对应的value为98
dic['java']=98
#删除c增加php 90
del dic['c']
dic['php'] = 90
print(dic)
# 获取所有的key值,存储在列表里
# l1 = list(dic.keys())
# print(l1)
# 获取所有的value值,存储在列表里
# l2 = list(dic.values())
# print(l2)
# 判断 javascript 是否在字典中
print('javascript' in dic)
# 获得字典里所有value 的和
sum1 = 0
for i in dic.values():
sum1 += i
print(sum1)
# 获取字典里最大的value
print(max(dic.values()))
# 获取字典里最小的value
print(min(dic.values()))
# 字典 dic1 = {'php': 97}, 将dic1的数据更新到dic中
dic1 = {'php': 97}
dic.update(dic1)
print(dic)
12、猜数
- 给定一个定值,比如说 99
- 让用户输入数字,给用户三次机会,如果三次之内猜对了(输入的值等于99),显示猜测正确
- 如果三次之内没有猜对,退出循环,显示’stupid’
要求,用2种方式实现
#方式一:for遍历
nums=[1,2,3]
for num in nums:
a=int(input("请输入数字:"))
if a ==99:
print("恭喜你猜对了!")
break
else:
print('stupid')
#方式二:while循环
i=0
a='stupid'
while i<3:
i+=1
b=int(input("请输入数字:"))
if b==99:
a='恭喜你,猜对了!'
break
print(a)
13、输入某年某月某日,判断这一天是这一年的第几天? 这边简单考虑,不考虑 闰年的情况。
year=int(input("请输入年份:"))
month=int(input("请输入月份:"))
date=int(input("请输入日:"))
num=date
y=0
for m in range(1,month):
if m in (4,6,9,11):
y=30
elif m in (1,3,5,7,8,10,12):
y=31
elif m==2:
y=28
num+=y
print("{}年{}月{}日是这一年的第{}天".format(year,month,date,num))
14.输出101~200之间的所有素数,就是只能被1和⾃⼰整除的数,判断素数的⽅法:⽤⼀个数分别去除2到这个数的平⽅根,如果能被整除,则表明此数
不是素数,反之是素数。
num=[]
for x in range(101,200):
for y in range(2,x):
if x%y==0:
break
else:
num.append(x)
print(num)
15、难度等级1
输入成绩:
如果是 >90 分,则显示优秀
大于等于60 且 小于等于 90 则显示良好
小于 60 ,则显示不及格
a=int(input("请输入成绩:"))
if a>90:
print("优秀")
elif 60<=a<=90:
print("良好")
else:
print("不及格")
16、难度等级3
输出 9*9 乘法口诀表
for m in range(1,10):
for n in range(1,m+1):
print("{0}*{1}={2}".format(m,n,(m*n)),end="\t")
print()
17、难度等级2
实现一个 函数 get_min, 函数返回列表lst 的最小值,要求不使用 min 函数
def get_min(lst): #定义函数
lst_min=lst[1] #定义lst_min接收最小值
for i in lst: #遍历传入的列表
if i<lst_min: #列表的每一个元素进行比较,较小值赋值给lst_min
lst_min=i
else:
continue
print(lst_min)
get_min([10,3,4,7,8,2,4])
18、难度等级 2
实现一个函数,该函数参数为任意数量的数字,在函数中实现这样的功能:统计在参数中 出现的数字的个数
如 传入的参数为 func(3,5,3)
则打印
数字3 出现2次
数字 5 出现1次
for m in range(1,10):
for n in range(1,m+1):
print("{0}*{1}={2}".format(m,n,(m*n)),end="\t")
print()
19、难度等级1
定义一个函数,实现传入整数的累乘的和,比如传入5 ,实现1+2!+3!+…+5!的和。
def num_test(i):
num = 1
sum=0
for n in range(1,i+1):
num =num*n
sum +=num
return sum
print(num_test(5))
20、难度等级2
定义一个银行账户类,Account
属性有:
用户姓名
账号
余额
对应的方法有:
- 存钱
- 取钱 (如果取出的金额>余额,提示错误信息)
# 定义一个账户类
class Account:
def __init__(self, name, number,balance):
self.name = name
self.number = number
self.balance = balance
#存钱的方法
def save_money(self,money):
self.balance=self.balance+money
print(f"{self.name}的{self.number}账户存入{money}元")
print(f"{self.name}的{self.number}账户余额为{self.balance}元")
#取钱的方法
def withdraw_money(self,money):
self.balance = self.balance - money
if self.balance>0:
print(f"{self.name}的{self.number}账户取出{money}元,账户余额为{self.balance}元")
else:
print("取款失败,您的余额不足")
#实例化
A1 = Account('佳佳',"工商",0)
print(A1.name)
print(A1.number)
A1.save_money(200)
A1.withdraw_money(10)