好文档 - 专业文书写作范文服务资料分享网站

python面试题及答案

天下 分享 时间: 加入收藏 我要投稿 点赞

双引号:s5 = “Let’s go”

s6 = ‘I realy like“python”!’

这就是单引号和双引号都可以表示字符串的原因了 17. 如何用Python来发送邮件?

可以使用smtplib标准库。

以下代码可以在支持SMTP监听器的服务器上执行。

import sys, smtplib

fromaddr =raw_input(“From: “) toaddrs = raw_input(“To: “).split(‘,’) print “Enter message, end with ^D:” msg = ” while 1:

line = sys.stdin.readline() if not line: break

msg = msg + line

# 发送邮件部分

server = smtplib.SMTP(‘localhost’)

server.sendmail(fromaddr, toaddrs, msg) server.quit()

18. Python如何实现单例模式?其他23种设计模式python如何实现?

Python有两种方式可以实现单例模式,下面两个例子使用了不同的方式实现单例模式: 1.

class Singleton(type):

def __init__(cls, name, bases, dict):

super(Singleton, cls).__init__(name, bases, dict) cls.instance = None

def __call__(cls, *args,**kw): if cls.instance is None:

cls.instance = super(Singleton, cls).__call__(*args, **kw)

return cls.instance

class MyClass(object):

__metaclass__ = Singleton

print MyClass() print MyClass()

2. 使用decorator来实现单例模式 def singleton(cls): instances = {} def getinstance(): if cls not in instances: instances[cls] = cls() return instances[cls] return getinstance

@singleton class MyClass: …

19. 华为一道编程

有两个序列a,b,大小都为n,序列元素的值任意整形数,无序;

要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。 1. 将两序列合并为一个序列,并排序,为序列Source 2. 拿出最大元素Big,次大的元素Small

3. 在余下的序列S[:-2]进行平分,得到序列max,min

4. 将Small加到max序列,将Big加大min序列,重新计算新序列和,和大的为max,小的为min。

Python代码

def mean( sorted_list ):

if not sorted_list:

return (([],[]))

big = sorted_list[-1]

small = sorted_list[-2]

big_list, small_list =mean(sorted_list[:-2])

big_list.append(small)

small_list.append(big)

big_list_sum =sum(big_list)

small_list_sum =sum(small_list)

if big_list_sum >small_list_sum:

return ( (big_list,small_list)) else:

return (( small_list,big_list))

tests = [ [1,2,3,4,5,6,700,800],

[10001,10000,100,90,50,1],

range(1, 11),

[12312, 12311, 232, 210,30, 29, 3, 2, 1, 1] ]

for l in tests:

l.sort() print

print “Source List:\\t”,l

l1,l2 = mean(l)

print “Result List:\\t”,l1, l2

print “Distance:\\t”,abs(sum(l1)-sum(l2))

print ‘-*’*40

输出结果

Python代码

Source List: [1, 2, 3, 4, 5, 6, 700, 800]

Result List: [1, 4, 5, 800] [2, 3, 6, 700]

Distance: 99

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

Source List: [1, 50, 90, 100, 10000, 10001]

Result List: [50, 90, 10000] [1, 100, 10001]

Distance: 38

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

Source List: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Result List: [2, 3, 6, 7, 10] [1, 4, 5, 8, 9]

Distance: 1

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

Source List: [1, 1, 2, 3, 29, 30, 210, 232, 12311, 12312]

Result List: [1, 3, 29, 232, 12311] [1, 2, 30, 210, 12312]

Distance: 21

20. python程序中文输出问题怎么解决?

方法一:

用encode和decode 如:

import os.path import xlrd,sys

Filename=’/home/tom/Desktop/1234.xls’ if not os.path.isfile(Filename):

raise NameError,”%s is not a valid filename”%Filename

bk=xlrd.open_workbook(Filename) shxrange=range(bk.nsheets) print shxrange

for x in shxrange:

p=bk.sheets()[x].name.encode(‘utf-8′) print p.decode(‘utf-8′)

方法二:

在文件开头加上 reload(sys)

sys.setdefaultencoding(‘utf8′)这2行,再试着运行一下

字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。

decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。

encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。

因此,转码的时候一定要先搞明白,字符串str是什么编码,然后decode成unicode,然后再encode成其他编码

代码中字符串的默认编码与代码文件本身的编码一致。

如:s='中文'

如果是在utf8的文件中,该字符串就是utf8编码,如果是在gb2312的文件中,则其编码为gb2312。这种情况下,要进行编码转换,都需要先用decode方法将其转换成unicode编码,再使用encode方法将其转换成其他编码。通常,在没有指定特定的编码方式时,都是使用的系统默认编码创建的代码文件。

如果字符串是这样定义:s=u'中文'

则该字符串的编码就被指定为unicode了,即python的内部编码,而与代码文件本身的编码无关。因此,对于这种情况做编码转换,只需要直接使用encode方法将其转换成指定编码即可。

如果一个字符串已经是unicode了,再进行解码则将出错,因此通常要对其编码方式是否为unicode进行判断:

isinstance(s,unicode) #用来判断是否为unicode

用非unicode编码形式的str来encode会报错

python面试题及答案

双引号:s5=“Let’sgo”s6=‘Irealylike“python”!’这就是单引号和双引号都可以表示字符串的原因了17.如何用Python来发送邮件?可以使用smtplib标准库。以下代码可以在支持SMTP监听器的服务器上执行。importsys,
推荐度:
点击下载文档文档为doc格式
8ai0y3rj8c9sc9l3ppnv1xep036fc3019ap
领取福利

微信扫码领取福利

微信扫码分享