python高频面试题

在D盘根目录下创建一个文本文件test.txt,并向其中写入字符串hello world
# 方法1:
file_test = open('./output/a.txt','w',encoding='utf8')
file_test.write('hello world')
file_test.close()

# 方法2: 该方式会在不需要使用该文件的时候自动关闭, 不需要手动close关闭资源
with open('./output/b.txt','a',encoding='utf8') as fp:
    # 输出方式1:
    fp.write('hello world')
    # 输出方式2:
    print("hello world",file=fp)
写出下面代码的优化版本,提高运行效率。

x = list(range(500))
for item in x:
​ t = 5**5
​ print(item+t)

t = 5 ** 5
x = list(range(500))
for item in x:
    print(item+t)
print(end-start)
生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变。(提示:使用切片。)
"""
@Project :python
@File    :py_01.py
@IDE     :PyCharm
@Author  :wrx
@Date    :2023/7/6 14:16
@describe:编写程序,生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变。
"""
import random

#方法1
# 获取随机列表
a = []
for i in range(20):
    a.append(random.randint(0,100))
print(a)

b = a[::2]
for i in range(20):
    if i%2 == 0:
        a[i] = max(b)
        b.remove(max(b))
print(a)

# 方法2:
y = a[::2]
y.sort(reverse=True)
a[::2] = y
print(a)
写出下面代码的执行结果
def Join(List, sep=None):
	return (sep or ',').join(List)
print(Join(['a', 'b', 'c']))
print(Join(['a', 'b', 'c'],':'))


a,b,c
a:b:c
def Sum(a, b=3, c=5):
	return sum([a, b, c])
print(Sum(a=8, c=2))
print(Sum(8))
print(Sum(8,2))
8+3+2 13
8+3+5 16
8+2+5 15
def Sum(*p):
	return sum(p)
print(Sum(3, 5, 8))
print(Sum(8))
print(Sum(8, 2, 10))
3+5+8 16
8
8+2+10 20
判断一个数字是否为素数,是则返回字符串YES,否则返回字符串NO。
# 方法1:
def if_sushu():
    try:
        a = int(input('请随机输入一个数字:'))
    except Exception as e:
        print(f'出现了格式转化错误:{e},请输入正确格式')
    else:
        if a <= 1:
            return 'NO'
        elif a == 2:
            return 'Yes'
        else:
            for i in range(2,int(a/2+1)):
                    if a % i == 0:
                        return 'NO'

            else:
                return 'Yes'
# 方法2:
import math
def IsPrime(v):
    # sqrt返回该值最大的平方值  例如 8 为 2  而 9 为 3
    n = int(math.sqrt(v)+1)
    print(n)
    for i in range(2,n):
        if v%i==0:
            return 'No'
    else:
        return 'Yes'

if __name__ == '__main__':
    # print(if_sushu())
    print(IsPrime(9))
模拟Python内置函数sorted()
import random
import copy

ls = [random.randint(1,20)for i in range(5)]
print(ls)

# 创建临时表 不能损害原始数据
# ls_tmp = ls[::]
ls_tmp = copy.deepcopy(ls)

sort_ls = []

for i in range(5):
    max_num = 0
    for i in ls_tmp:
        if max_num < i:
            max_num = i
    else:
        sort_ls.append(max_num)
        ls_tmp.remove(max_num)
print(ls)
print(sort_ls)
按行读取文件的方式
file = open('./a.txt','r',encoding='utf8')
for i in file:
    print(i,end='')
    
print()
file.seek(0)

text = file.readlines()
for j in text:
    print(j,end='')
生成包含20个随机数的列表,然后将前10个元素升序排列,后10个元素降序排列,并输出结果
import random

ls = [random.randint(1,50) for i in range(20)]
print(ls)
for j in range(9):
    # 前十个升序
    for i in range(j+1,10):
        if ls[j] > ls[i]:
            ls[j],ls[i] = ls[i],ls[j]
    # 后十个降序
    for i in range(j+11,20):
        if ls[j+10] < ls[i]:
            ls[j+10],ls[i] = ls[i],ls[j+10]

print(ls)

# 简单方法
y = ls[0:10]
y.sort()
ls[0:10] = y
y = ls[10:20]
y.sort(reverse=True)
ls[10:20] = y

print(ls)
运行后用户输入4位整数作为年份,判断其是否为闰年。如果年份能被400整除,则为闰年;如果年份能被4整除但不能被100整除也为闰年
try:
    year = int(input('请输入一个四位年份:'))
except:
    print('请输入整数')
else:
    if len(str(year)) != 4:
        print("请输入4位整数")
# 判断是否是闰年
    if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
        print('是闰年')
    else:
        print('不是闰年')
python分段函数
num = eval(input('请输入一个数字:'))
y = 0
if num < 0 or num>=20:
    y = 0
elif num < 5:
    y = num
elif num < 10:
    y = 3 * num - 5
else:
    y = 0.5 * num - 2
print(y)
统计 列表中数字的个数
"""
@describe: 统计 列表中数字的个数
dict[key] 和 dict.get(key,default) 的区别
都能返回key的value值,但是区别是 前者如果key不存在报错, 而后者key不存在返回默认值default
items 返回的结果是列表嵌套元组
"""
import random

x = [random.randint(1, 2) for i in range(5)]
r = dict()
for i in x:
    r[i] = r.get(i, 0) + 1
    print(r)
for k, v in r.items():
    print(k, v)
假设有Python程序文件demo.py
def main():
    if __name__ == '__main__':
	print(1)
else:
	print(2)

main()

将该程序文件直接运行时输出结果为_________,作为模块导入时得到结果___________-。(12
下面程序的执行结果
s = 0
for i in range(1,101):
	s += i
else:
	print(1)

1

    
s = 0
for i in range(1,101):
	s += i
	if i == 50:
 	   print(s)
	   break
else:
	print(1)
1275



from random import randint
	result = set()
while True:
	result.add(randint(1,10))
	if len(result)==20:
		break
print(result)

无法正确执行,因为该程序的功能是从[1,10]区间中选择20个不同的随机整数,而该区间并没有这么多整数,所以程序死循环。


x = list(range(20)) 
for i in range(len(x)):
	del x[i]

无法正确执行,因为删除列表元素时会影响其他元素在列表中的索引,上面的代码会抛出下标越界的异常。


def demo(*p):
	return sum(p)
print(demo(1,2,3,4,5))
print(demo(1,2,3))

15
6

def demo(a, b, c=3, d=100):
	return sum((a,b,c,d))
print(demo(1, 2, 3, 4))
print(demo(1, 2, d=3))

10
9



def demo():
	x = 5
x = 3
demo()
print(x)

3

def demo(lst, k):
	if k<len(lst):
		return lst[k:]+lst[:k]

阅读一下代码, 解释其功能
# enumerate(iteration, start)
# iteration:可遍历的对象,如列表、元组、字符串等。
# start:用来指定索引的起始数值,默认为0。
# enumerate函数的返回值有两个,第一个是索引,第二个是iteration参数中的值
x = list(range(20)) 
for index, value in enumerate(x):
	if value == 3:
		x[index] = 5

 将列表x中值为3的元素修改为5import string 
x = string.ascii_letters + string.digits
import random
print(''.join(random.sample(x, 10)))


random.sample(x, 10) 随机从小写字母和大写字母中选取10个返回列表
join  将列表中的值以''为字符串连接字符连接列表中的每个元素形成字符串
答: 输出由英文字母大小写或数字组成的长度为10且不重复的随机字符串。



你可能感兴趣的:(python,python,windows,开发语言)