zoukankan      html  css  js  c++  java
  • 学习:Python练习

    从渠道内获得了一批python面试题,作为python学习的新手,拿来学习一下。顺便如果可能希望看到大家的更好的方法。

    题目:

    1、你想计算所有素数的一个无界的序列,或者小于某个阈值的所有素数的列表(可分别实现)。

    ps:素数又称为质数,指在大于1和此数自身外,不能被其他任何自然数整除的数。

    解答代码如下:

    import math
    def pd(n):
        ‘’‘个人比较搓,命名方式不太妥当,各位请勿见笑,
        cs为除数,wq即无穷'''
        for cs in xrange(2,int(math.sqrt(n)+1)):
            if n % cs == 0:
                return False
        return True
    def out(length="wq"):
        if length == 'wq':
            input_num = 3
            while True:
                if pd(input_num):
                    print input_num,
                input_num += 1
        else:
            try:
                length = int(length)
            except ValueError,e:
                print "you will input a num"
            for key in xrange(2,length+1):
                if pd(key):
                    print key,
    out(100)
    

    2:需要一个函数,它能执行一条shell命令,并实时显示命令的输出,如果能需要从web页面执行这条shell命令,设计一个方案,让web页面能够实时的得到命令的输出。

    解答:个人比较撮,不会写页面,这里埋个坑,以后会写了补上,各位看官,如果会搞或者思路希望不吝赐教。只写了实时获取命令的输出

    import subprocess
    #本人采用了进程间通讯的方法进行输出采集
    shell = raw_input("please input a shell:\t")
    #采集用户输入的shell
    shell_list = []
    for i in shell.split():
        shell_list.append(i)
    popen = subprocess.Popen(shell_list,stdout=subprocess.PIPE)
    while True:
        line = popen.stdout.readline()
        if line:
            print line,
        else:
            break
    

     3:有一个日志文件,内容片段如下,编写一个函数,统计该文件FNF,FNH,BRF,BRH,LF,LH六个字段各自的和。

    ...

    FNF:1

    FNH:1

    BRDA:11,0,0,0

    BRDA:11,0,1,1

    BRF:4

    BRDA:8,2,1,1

    BRH:3

    LF:26

    LH:23

    ...

    注:需要统计的字段冒号后只会出现一个整数。

    解答思路:我的思路是用re库过先过滤包含了","的行,然后依照“:”对数列进行切割,然后将其追加到字典内。

    import re
    #打开文件
    fo = open(filename)
    regex = re.compile(r"(FNF)|(FNH)|(BRF)|(BRH)|(LF)|(LH)")
    result = {}
    while True:
        '''如果该行不含有,号,则进一步判断是否符合预期内的内容,如果符合,则追加到字典中去'''
        line =fo.readline()
        if not line:
            #读到最后一行跳出
            break
        else:
            if not re.search(r",",line):
                line_split = line.split(":")
                if regex.search(line_split[0]):
                    result[line_split[0]] = result.get(line_split[0],0) + line_split[1]
    #输出最终结果
    for k in result:
        print k,result[k]
    

     4:需要一个函数,他能生成fibonacci数列的整个序列(无限个);使用这个函数取出fobonacci数列的前10项。注:fibonacci数列是这样的一个数列:1、1、2、3、5、8、13、21、34

    #!/bin/env python
    # -*- encoding:utf-8 -*-
    fibonacci = [1,1]
    def produce_fibonacci(x):
        global fibonacci
        try:
            x = int(x)
        except ValueError,e:
            print "you will input a num"
            exit()
        if not x >= 3:
            print "you should input a num large then 3"
        else:
            for i in xrange(2,x):
                key = fibonacci[i-2] + fibonacci[i-1]
                fibonacci.append(key)
        print fibonacci
    
    if __name__ == "__main__":
        x = raw_input("input a num you want fibonacci:\t")
        produce_fibonacci(x)

    5: 题目:展开一个嵌套的原始序列,序列中的子项可能是序列,子序列的子项仍然可能是序列。
    例如:[1,2,[3,[],4,[5,6],7,[8,]],9]

    #!/usr/bin/env python
    '''输出序列的展开'''
    result = []
    def zk_xl(x):
        if type(x) is list:
            for k in x:
                if type(k) is list:
                    zk_xl(k)
                else:
                    result.append(k)
    zk_xl([1,[2,],3,[4,5],6,7])
    print result

    就是这些了,有些题目设计django架构的东西,由于自己现在还没接触过,也没办法测试。就丢上来献丑了。

  • 相关阅读:
    今天是周日,一如既往的在加班
    懒出来的框架
    把Visio文档中形状信息导出到XML文件的VBA代码
    DataGridView多线程更新数据的问题的解决办法
    为VS定制一个自己的代码生成器
    安装VS2012之后自己开发的自定义工具没法使用问题的解决办法
    通过RSA进行私钥加密公钥解密算法的进一步改进
    程序员在职场 该反思了吗?
    图片与字节数组相互转换的方法
    jQuery Ajax 方法调用 Asp.Net WebService 的详细例子
  • 原文地址:https://www.cnblogs.com/sageskr/p/3038899.html
Copyright © 2011-2022 走看看