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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
 

 

转载于:https://www.cnblogs.com/Devopser/p/6296442.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值