美文网首页
python考试内容6.12-2019-06-12

python考试内容6.12-2019-06-12

作者: 愉快先生 | 来源:发表于2019-06-12 11:51 被阅读0次
    test
    import wx
    import  math
    from homework2 import fact1
    print(fact1(4))
    
    '''homework2阶乘问题调用fact函数'''
    
    
    #使用辗转相除法求任意两个数的最大公约数。
    print("请输入两个数字,大的数字在前")
    listyushu=[]
    a=int(input())
    b=int(input())
    listyushu.append(a)
    listyushu.append(b)
    print(listyushu)
    i=0
    k=a%b
    if a%b==0:#直接输出的情况 4,8
        print(b)
    else:
        while k!=0:
                k = listyushu[i] % listyushu[i + 1]#按照定义
                i = i + 1
                listyushu.append(k)
                print(listyushu)
        else:
                print(listyushu[i])#取的是0前一个数
    
    
    
    #求前10个素数
    l2=range(1,50)#给定一大堆数,确保里面包括到了10个素数
    print (l2)
    list=[]
    listend=[]
    #下面是循环相乘,把每两个数的积都求出来。放在list里面
    for i in l2:
        for j in l2:
            list.append(i*j)
    
    print(list)
    for i in list:
        k=list.count(i)
        if k<3:         #由定义可知,只有1和它本身,所以素数它最多出现两次
            listend.append(i)
    print(listend[1:11])
    
    
    
    
    
    
    
    
    
    l1=range(1,100,2)
    sum=0
    for i in l1:
        sum=i+sum
        print(sum)
    
    
    dislist = ["a", "b","c"]
    for e in dislist:
            print(e)
    
    
    
    l=range(2,10,5)
    for e in l:
        print(e)
    
    s="liu,shou,xi"
    slist=s.split(",")
    print(slist)
    ns=''.join(slist)
    print(ns)
    
    mtuple=('a','b',1,3.14)
    ntuple=(1,2,3,5)
    
    
    
    print("请输入x 和 y 的值")
    x=int (input())
    y=int (input())
    print("结果",x**y)
    
    print("请输入被除数和除数")
    x2=int (input())
    y2=int (input ())
    print ("余数",x2%y2)
    
    
    app = wx.App(False)  # 创建一个新应用程序
    frame = wx.Frame(None, wx.ID_ANY, "Hello World")  # 创建窗口框架在顶层
    frame.Show(True)  # 显示框架窗口
    app.MainLoop()  # 进入窗口消息循环
    
    homework2:
    import  time
    '''要求能输出第N项,默认输出第10项'''
    #这是循环方法:
    def fib1(n=10):
        l=range(2,20)
        list=[0,1]
        for i in l:
            list.append(list[i-1]+list[i-2])
        return print(list[n])
    fib1()
    
    
    #下面是递归方法:
    #很难受,搞了半天,不能在return里面打印,在外面打印。很搞笑,心情复杂
    #但是为什么不能 print(fib2(n - 1) + fib2(n - 2)) ???????
    def fib2(n=10):
        if n==1:
            return 1
        elif n==2:
            return 1
        return  fib2(n - 1) + fib2(n - 2)
    print(fib2(15))
    
    
    '''第二道题:求阶乘,这里是函数,在test.py中是调用这个函数'''
    #循环方法:
    def fact1(n):
        if (n == 0 or n == 1):
            return 1
        else:
            product=1
            while n >=2:
                product=product*n * (n - 1)
                n = n - 2
            return product
        #return fact1(n)
    fact1(1)
    
    start = time.clock()
    #递归写法:
    def fact2(n):
        if (n==0 or n==1):
            return 1
        else:
            return n*fact2(n-1)
       # return fact2(n)
    elapsed = (time.clock() - start)
    print("Time used:",elapsed)
    print(fact2(50))
    
    
    
    homework3:
    import  re
    import numpy as np
    import pandas as pd
    # import odata
    '''
    1统计一个文档词频aboutUN.txt,并将结果写入到wordsFrequence.text
    涉及到分词
    词  出现的次数
    字典或集合
    用split()
    2一个文本文件,获取目前联合国的193个会员国的名字。并将其写入UNmemebers.txt中。
    一种是正则表达式,另一种
    '''
    # obj='ython,python,Python'
    # pattern=re.compile('[pP]ython')
    # match1=re.match(pattern,obj)
    # print('re.match',match1)
    # match2=re.search(pattern,obj)
    # print('re.search',match2)
    # print('match.group',match2.group())#返回找到的字符
    # print('match.span',match2.span() )# 返回位置 二元组
    #
    # match3=re.findall(pattern,obj)
    # print('re.findall',match3)
    #item  返回键值对  集合
    #sorted  三个参数1列表,字典集合   2key 3
    #lambda   sorted
    #re.compile
    #BeautifulSoup,requests
    text=''
    f=open("C:\\Users\\goals2020\\Documents\\Tencent Files\\1322696720\\FileRecv\\aboutUN.txt")
    for line in f:
        text=text+line
    f.close()
    #先进行预处理,标点变空格,全变小写字母
    text=text.replace('\n','')
    text=text.replace('.','')
    text=text.replace(',',' ')
    text=text.replace('"','')
    text=text.lower()
    list1= text.split()
    #把列表转为结合,为了去除重复的项
    set= set(list1)
    list2=list(set)
    #新建一个字典
    print(list1)
    print(set)
    print(list2)
    
    dir = {}
    for i in range(len(list2)):
        dir[list2[i]] = 0  #字典值初始为0
        for j in range(len(list1)):
            if list2[i] == list1[j]:
                dir[list2[i]] += 1
    
    print(dir)
    str1=str(dir)
    str1=sorted(dir.items(),key=lambda x:x[1],reverse=True)
    str1=str(str1)
    print(str1)
    file = open("D:\\DailySoftware\\ChromeDownloadSomething\\wordsFrequence.txt",'w')
    for i in str1:
        file.write(i)
        if i==',':
            file.write('\n')
    file.close()
    
    '''
    多维数组拼接
    对列操作
    也可以用字典方式实现吧 
    
    
    
    
    
    '''
    
    l1=[1,2,3,5]
    l2=[1,2,7,3,9]
    l3=[9,10,11,12,10]
    l4=[13,14,15,16,11]
    l5=list(zip(l2,l3,l4))
    # l6=[ i for i in l1
    #     if i in l5[i][0]]
    l7=[]
    for i in range(0,len(l1)):
        for j in range(0,len(l5)):
            if l1[i] ==l5[j][0]:
              l7.append(l5[j])
    
        else:continue
    print(l7)
    print(l5)
    # print(l6)
    # print(l7)
    
    
    
    
    
    
    
    homework4:
    '''
    面向对象三大特点:
    抽烟....喝....
    封装 继承 多态
    python 定义一个链表
    定义一个 UNmember类
    和一个UNmberSet集合
    属性:国家 ,地区,加入联合国日期,所在地区,人口,面积
    将所有联合国/地区存在UNmemeberSet集合中,
    将UNmemeberSet集合序列化,并保存在磁盘上的UNmember.dat
    从从磁盘上读取UNmember.dat 并将每个会员国加/地区名输出控制台
    urllib requests beautifulsoup
    http://data.un.org/
    或
    http://data.un.org/en/index.html
    '''
    import requests, sys
    import numpy as np
    import pandas as pd
    from lxml import etree
    import  pickle
    class UNmember:
       country_And_region232=[]
       date=[]
       location=[]
       population=[]
       area=[]
       UNmemberset=()
    #然而并不知道面向对象怎么用
    
    
    
    if __name__ == "__main__":
       # 貌似只能配套使用,解析,用xpath方法定位标签(class,id具体定位),及文字。
       #取232个国家名
       html = etree.parse('http://data.un.org/en/index.html', etree.HTMLParser())
       UNmember.country_And_region232 = html.xpath('//ul/li//td[4]/text()')
       # result_location = html.xpath('//ul/li//font/text()')
    
       print(UNmember.country_And_region232)
       print(len(UNmember.country_And_region232))
    
    
    #这是最开始给的HTML文件,取193个成员国国家名
       html0=etree.parse('file:///C:/Users/goals2020/Desktop/UN.html',etree.HTMLParser())
       result_UNcountry193=html0.xpath('//div[@class="view-content"]//span[@class="member-state-name"]/text()')
       print(result_UNcountry193)
       print(len(result_UNcountry193))
    
    #取每个国家的人口面积等属性,这是网页
       target = 'http://data.un.org/en/'
       information = html.xpath('//ul/li/a')
    #循环取属性,放到这写表里
       for i in information:
          html_information=etree.parse(target + i.get('href'),etree.HTMLParser())
          result_location=html_information.xpath('//ul//tbody/tr[1]/td[3]/text()')
          # result_date=html_information.xpath('//ul//tbody/tr[2]/td[3]/text()')
          # result_population=html_information.xpath('//ul//tbody/tr[3]/td[3]/text()')
          # result_area=html_information.xpath('//ul//tbody/tr[4]/td[3]/text()')
          UNmember.location.append(result_location)
          # UNmember.date.append(result_date)
          # UNmember.population.append(result_population)
          # UNmember.area.append(result_area)
          print(result_location)
    
       #list 表的合并,成二维数组。之后按列操作
       result_list=list(zip(UNmember.country_And_region232,UNmember.location))
       #,UNmember.date,UNmember.population,UNmember.area
    
    #这是按193个国家名和232个国家名取交集,从而取其列,结果放到l7里
       l7=[]
    
       for i in range(0,len(result_UNcountry193)):
          for j in range(0,
                         len(result_list)):
    
          # print(i)
             if result_UNcountry193[i] ==result_list[j][0]:
                l7.append(result_list[j])
             # print(l7)
          else:continue
    
       # UNmember.UNmemeberset=set(l7)
       print(l7)
       print(len(l7))
       #l7是我最后得出的结果
       # out= open("D。。。。。一个路径text.dat",'wb')
       # pickle.dump(l7,out)
       # out.close()
       #
       #
       # infile=open('D。。。。。一个路径text.dat','rb')
       # pickle.load(inflie)
    
    
    #todo 结果有数组有单个的表,应该统一格式进行写入文件操作。
    
    
    
    homework5
    '''
    链表的实现。
    try
    except
    接输出语句
    pass
    '''
    class Node():
    
       def __init__(self,d,n):
    
        self.n=n
        self.d=d
    
    
    h2=Node(2,Node)
    h1=Node(1,h2)
    
    
    
    
    
    
    
    
    
    
    
    class Employee:
        '所有员工的基类'
        empCount = 0
    
        def __init__(self, name, salary):
            self.name = name
            self.salary = salary
            Employee.empCount += 1
    
        def displayCount(self):
            print
            ("Total Employee %d" % Employee.empCount)
    
        def displayEmployee(self):
            print
            ("Name : ", self.name, ", Salary: ", self.salary)
    
    
    "创建 Employee 类的第一个对象"
    emp1 = Employee("Zara", 2000)
    "创建 Employee 类的第二个对象"
    emp2 = Employee("Manni", 5000)
    emp1.displayEmployee()
    emp2.displayEmployee()
    print
    ("Total Employee %d" % Employee.empCount)
    
    
    

    相关文章

      网友评论

          本文标题:python考试内容6.12-2019-06-12

          本文链接:https://www.haomeiwen.com/subject/leikfctx.html