Python常见面试题
1、Python生成随机数
import random
random.random() 随机生成0-1之间的数字
random.uniform(1,10)随机生成1-10之间的数字(包括小数整数)
random.randint(1,10)生成1-10之间的整数
random.randrange(1,10,2) 生成1-10之间 步长为2的数字 所以只能是奇数。1,3,5,7,9
list=[1,2,3,4,5,6,7]
random.choice(list) 从list中随机抽取
random.sample(list,2) 从list中随机抽取2个元素的片段。
2、字符串逆序
a = "abcdefg"
1.切片 a[::-1]
2.t = list(a)
t.reverse
"".join(t)
3.写函数
def reverseStr(ss):
c = []
for i in range(len(ss)):
c.append(ss[i])
c.reverse()
return ''.join(c)
if __name__ == "__main__":
s = raw_input("please input str:")
print reverseStr(s)
3、判断一个字符串是否为回文字符串
abcdcba 一个字符串从前往后读和从后往前读是一样的。
1.s = "abcdcba" s == s[::-1] 字符串翻转
2.定义函数
def converted(s):
ss = s[:]
if len(ss) >= 2 and s == ss[::-1]
return True
else:
return False
if __name__ == "__main__":
s = "abcdcba"
print(converted(s))
4、随机生成100个数,然后写入文件
思路:
1.打开一个新文件,准备去写
2.然后随机生成一个数(整数或者小数),并将该数写入文件中
3.循环第二部,知道完成100个随机数的生成
import random
with open("1.txt",'w') as f:
for i in range(1,101):
n = random.randint(1,100)
f.write(str(n)+"\n")
5、给定字典进行排序
给定dict = {'a':3,'bc':5,'c':3,'asd':4,'33':56,'d':0}
根据其键值进行排序
sorted(dict.items(),key = lambda i:i[0],reverse = True)
list2 = [[1,2],[4,6],[3,1]]
list2.sort(key = lambda x:x[0],reverse = False)
print list2
6、对列表进行去重
1.对 a = [1,3,2,2,1,5,5,3]
print list(set(a))
2.t = dict.fromkeys(a,0) 利用字典key的唯一性
t.keys() 或者list(t)
3.利用count函数查找重复
for i in a:
if a.count(i) > 1:
a.remove(i)
4. list1 = [1,4,3,3,4,2,3,4,5,6,1]
reduce(lambda x,y : x if y in x else x + [y],[[]]+list1)
7、去重字符串
s = 'abddaddfd' 先转list 然后set去重,然后join字符串、
8.有UTF-8编码的文件a.txt。文件路径在E盘根目录,写一段程序逐行读入文本文件。并在屏幕(gbk编码)打印出来
65001 utf-8 936 GBK 编码 采用chcp命令查看当前的CMD编码。
思路:
1.打开编码为UTF-8的文件,准备读
2.readlines方法将文件以行的方式读取,存到变量中。
3.打印到屏幕(编码需要调整,打印至GBK屏幕)
fp = open("f:\test\a.txt",'r')
content = fp.read()
fp.close()
print content.decode("utf-8").encode("gbk","ignore")