女神博客链接:https://www.cnblogs.com/Eva-J/articles/11214642.html#_label16

练习题

1、任一个英文的纯文本文件,统计其中的每个单词出现的个数,注意是每个单词。。

2、写函数,计算传入数字参数的和。(动态传参)

3、写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作

4、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。

5、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容(对value的值进行截断),并将新内容返回给调用者,注意传入的数据可以是字符、list、dict

6、写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组

 

  例如:[(‘红心’,2),(‘草花’,2), …(‘黑桃A’)]

 

7、写函数,传入n个数,返回字典{‘max’:最大值,’min’:最小值}

  例如:minmax(2,5,7,8,4)
  返回:{‘max’:8,’min’:2}

8、写函数,专门计算图形的面积

 

  • 其中嵌套函数,计算圆的面积,正方形的面积和长方形的面积
  • 调用函数area(‘圆形’,圆半径) 返回圆的面积
  • 调用函数area(‘正方形’,边长) 返回正方形的面积
  • 调用函数area(‘长方形’,长,宽) 返回长方形的面积
复制代码
#代码模板
def area():
def 计算长方形面积():
pass

def 计算正方形面积():
pass

def 计算圆形面积():
pass
复制代码

 

9、写函数,传入一个参数n,返回n的阶乘

  例如:cal(7)
  返回计算7*6*5*4*3*2*1的结果

 

10、如下,每个小字典的name对应股票名字,shares对应多少股,price对应股票的价格

复制代码
portfolio = [
{‘name’: ‘IBM’, ‘shares’: 100, ‘price’: 91.1},
{‘name’: ‘AAPL’, ‘shares’: 50, ‘price’: 543.22},
{‘name’: ‘FB’, ‘shares’: 200, ‘price’: 21.09},
{‘name’: ‘HPQ’, ‘shares’: 35, ‘price’: 31.75},
{‘name’: ‘YHOO’, ‘shares’: 45, ‘price’: 16.35},
{‘name’: ‘ACME’, ‘shares’: 75, ‘price’: 115.65}
]
复制代码
  • 通过哪个内置函数可以计算购买每支股票的总价
  • 用filter过滤出,单价大于100的股票有哪些


11、有列表 li = [‘alex’, ‘egon’, ‘smith’, ‘pizza’, ‘alen’], 请将以字母“a”开头的元素的首字母改为大写字母;

 

12、有列表 li = [‘alex’, ‘egon’, ‘smith’, ‘pizza’, ‘alen’], 请以列表中每个元素的第二个字母倒序排序;

 

13、有名为poetry.txt的文件,其内容如下,请删除第三行;

复制代码
昔人已乘黄鹤去,此地空余黄鹤楼。

黄鹤一去不复返,白云千载空悠悠。

晴川历历汉阳树,芳草萋萋鹦鹉洲。

日暮乡关何处是?烟波江上使人愁。
复制代码

 

14、有名为username.txt的文件,其内容格式如下,写一个程序,判断该文件中是否存在”alex”, 如果没有,则将字符串”alex”添加到该文件末尾,否则提示用户该用户已存在;

pizza
alex
egon

 

15、有名为user_info.txt的文件,其内容格式如下,写一个程序,删除id为100003的行;

pizza,100001
alex, 100002
egon, 100003

 

16、有名为user_info.txt的文件,其内容格式如下,写一个程序,将id为100002的用户名修改为alex li

pizza,100001
alex, 100002
egon, 100003

 

# -*- coding:utf-8 -*-
# caiqinxiong 
# 2019/7/21 上午10:48
# import copy
# a = [1,2,3]
# # b = a
# b = copy.copy(a)
# a.append(1)
# a[0] = 8
# print(a)
# print(b)
# dic = {}
# f = open(r'userinfo',
#      mode='r',encoding='utf-8')
# # print(f.read())
# print(f.tell()) # 获取指针位置
# print(f.readline())
# print(f.seek(5)) # 指针定位
# print(f.tell())
# # 比较常用的第一种读方式
# for line in f:
#      line = line.strip()
#      if line:# 把空行也给去掉
#           #print(line)
#           dic[line.split('|')[0]] = [line.split('|')[1] ,line.split('|')[2]]
# print(dic)
# f.close()

# with open(r'userinfo',mode='r',encoding='utf-8') as f:
#      for line in f:
#           line = line.strip()
#           if line:
#                print(line)
# a = 1
# b = 2
# c = 3
#
# def func():
#     ret =  a * b / c
#     print(ret)
# func()

# def sum(a,b):
#      return  a+b
# ret = sum(1,3)
# print(ret)

# def func(a,b):
#      if a > b:
#           return a
#      else:
#           return b
# print(func(2,5))
# 列表 、元组 、字符串、字典。求两个类型的长度比,返回数据长度更长的类型
# def mylen(seq):
#     i = 0
#     for j in seq:
#         i += 1
#     return i
#
# def compare(agr1,agr2):
#      if mylen(agr1) > mylen(agr2):
#           return agr1
#      else:
#           return  agr2
#
# ret = compare([1,2,4],'fajdhkdfa')
# print(ret)
#
# a = 1
# def func():
#      global a # 尽量少用,一旦修改了全局变量,其他函数调用到它到时候,值也是会改变的
#      a = a+1
#      #print(a)
#      return a
# print(func())
#################################分割线##########################################################################

'''
1、任一个英文的纯文本文件,统计其中的每个单词出现的个数,注意是每个单词。。
'''
# import collections
# with open('English.txt','r') as fp:
#     str1=fp.read().split(' ')
# b = collections.Counter(str1)
# with open('result.txt','w') as result_file:
#     for key,value in b.items():
#         result_file.write(key+':'+str(value)+'\n')

# 方法二
# dic = {}
# ch = ''
# with open('English.txt',mode='r',encoding='utf-8') as f:
#     conten = f.read()
#     for line in conten:
#         if line.isalpha():
#             ch += line
#         else:
#             if ch in dic:
#                 dic[ch] +=1
#             else:
#                 dic[ch] = 1
#                 ch = ''
# print(dic)

'''
2、写函数,计算传入数字参数的和。(动态传参)
'''
# def cout(*args):
#     num = 0
#     for i in args:
#         num += i
#     return num
# print(cout(1,2,3,4,5))

'''
3、写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作
'''
# import os
# def modifyFile(fileName,old,new):
#     try:
#         with open(fileName,mode='r',encoding='utf-8') as f1, open("%s.bak" % fileName,mode='w',encoding='utf-8') as f2:
#             for line in f1:
#                 line = line.strip()
#                 if old in line:
#                     line = line.replace(old,new)
#                 f2.write(line+'\n')
#         os.remove(fileName)
#         os.rename("%s.bak" % fileName,fileName)
#     except:
#         print('have no file!')
#
# modifyFile('userinfo','alex','wusir')
# modifyFile('userinfo','10','20')

'''
4、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
'''
# def checkEmptyContent(args):
#     if isinstance(args,str):
#         for a in args:
#             if a.isspace():
#                 print('有空内容!')
#                 break
#         else:
#             print('无空内容!')
#     else:
#         for i in args:
#             if i =='':
#                 print('有空元素!')
#                 break
#         else:
#             print('无空元素!')
# checkEmptyContent('1232   43243')
# checkEmptyContent('123243243')
# checkEmptyContent(['a','','c'])
# checkEmptyContent(('a','b','c'))

'''
5、写函数,检查传入字典的每一个value的长度,如果大于2,
那么仅保留前两个长度的内容(对value的值进行截断),
并将新内容返回给调用者,注意传入的数据可以是字符、list、dict
'''
# def checkLen(args):
#     if isinstance(args,dict):
#         for k,v in args.items():
#             #print(k,v)
#             if len(v)>2:
#                 args[k] = v[:2]
#     elif isinstance(args,list):
#         for i in args:
#             if len(i)>2:
#                 args[args.index(i)] = i[:2]
#     else:
#         if len(args)>2:
#             args = args[:2]
#     return args
#
# args = checkLen('aabbcc')
# print(args)
# args = checkLen(['11111','22','333'])
# print(args)
# args = checkLen({'k1':'1','k2':'222','k3':'33333333'})
# print(args)

'''
6、写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组
  例如:[(‘红心’,2),(‘草花’,2), …(‘黑桃A’)]
'''
# def poker():
#     poker_list = []
#     for i in ['红心','草花','方块','黑桃']:
#         for j in range(1,13):
#             poker_list.append((i,j))
#         else:
#             poker_list.append((i,'A'))
#     print(poker_list)
# poker()

# def poker():
#     ranks = [2,3,4,5,6,7,8,9,10,'J','Q',"k",'A']
#     coler = ['红心','草花','方块','黑桃']
#     poker_list = []
#     for i in coler:
#         for j in ranks:
#             poker_list.append((i,j))
#     print(poker_list)
# poker()

'''
7、写函数,传入n个数,返回字典{‘max’:最大值,’min’:最小值}
  例如:minmax(2,5,7,8,4)
  返回:{‘max’:8,’min’:2}
'''
# def maxMin(*args):
#     dic = {}
#     dic['max'] = max(args)
#     dic['min'] = min(args)
#     print(dic)
#     return dic
# maxMin(2,5,7,8,4)

'''
8、写函数,专门计算图形的面积
其中嵌套函数,计算圆的面积,正方形的面积和长方形的面积
调用函数area(‘圆形’,圆半径) 返回圆的面积
调用函数area(‘正方形’,边长) 返回正方形的面积
调用函数area(‘长方形’,长,宽) 返回长方形的面积
'''

# def area(*args):
#     def rectangularArea(l,w):
#         '''计算长方形面积'''
#         area = l*w
#         return area
#
#     def squareArea(l):
#         '''计算正方形面积'''
#         area = l*l
#         return area
#
#     def circularArea(r):
#         '''计算圆形面积'''
#         area = 3.14*r**2
#         return area
#     area = 0
#     if args[0] == '长方形':
#         area = rectangularArea(args[1],args[2])
#     elif args[0] == '正方形':
#         area = squareArea(args[1])
#     elif args[0] == '圆形':
#         area = circularArea(args[1])
#     else:
#         print('暂时无该图形的计算!')
#     print('%s的面积为:%s' % (args[0],area))
#     return area
#
# area('圆形',2)
# area('正方形',4)
# area('长方形',2,4)

'''
9、写函数,传入一个参数n,返回n的阶乘
  例如:cal(7)
  返回计算7*6*5*4*3*2*1的结果
'''
# def cal(n):
#     if n == 1:
#         return 1
#     else:
#         return n * cal(n - 1)
# print('7*6*5*4*3*2*1的结果为:',cal(7))

'''
10、如下,每个小字典的name对应股票名字,shares对应多少股,price对应股票的价格

portfolio = [
{‘name’: ‘IBM’, ‘shares’: 100, ‘price’: 91.1},
{‘name’: ‘AAPL’, ‘shares’: 50, ‘price’: 543.22},
{‘name’: ‘FB’, ‘shares’: 200, ‘price’: 21.09},
{‘name’: ‘HPQ’, ‘shares’: 35, ‘price’: 31.75},
{‘name’: ‘YHOO’, ‘shares’: 45, ‘price’: 16.35},
{‘name’: ‘ACME’, ‘shares’: 75, ‘price’: 115.65}
]
通过哪个内置函数可以计算购买每支股票的总价
用filter过滤出,单价大于100的股票有哪些
'''
# portfolio = [
# {'name': 'IBM', 'shares': 100, 'price': 91.1},
# {'name': 'AAPL', 'shares': 50, 'price': 543.22},
# {'name': 'FB', 'shares': 200, 'price': 21.09},
# {'name': 'HPQ', 'shares': 35, 'price': 31.75},
# {'name': 'YHOO', 'shares': 45, 'price': 16.35},
# {'name': 'ACME', 'shares': 75, 'price': 115.65}
# ]
# # 通过哪个内置函数可以计算购买每支股票的总价
# ret = map(lambda dic : {dic['name']:round(dic['shares']*dic['price'],2)},portfolio)
# print(list(ret))
# # 用filter过滤出,单价大于100的股票有哪些
# ret = filter(lambda dic:True if dic['price'] > 100 else False,portfolio)
# print(list(ret))
'''
11、有列表 li = [‘alex’, ‘egon’, ‘smith’, ‘pizza’, ‘alen’], 请将以字母“a”开头的元素的首字母改为大写字母;
'''
# li = ['alex','egon','smith','pizza','alen']
# for i in li:
#     if i.startswith('a'):
#         li[li.index(i)] = i.capitalize() # 首字母大写
#         #li[li.index(i)] = i.replace('a','A')
# print(li)
#
#

'''
12、有列表 li = [‘alex’, ‘egon’, ‘smith’, ‘pizza’, ‘alen’], 请以列表中每个元素的第二个字母倒序排序
'''

li = ['alex','egon','smith','pizza','alen']

'''
13、有名为poetry.txt的文件,其内容如下,请删除第三行;

昔人已乘黄鹤去,此地空余黄鹤楼。

黄鹤一去不复返,白云千载空悠悠。

晴川历历汉阳树,芳草萋萋鹦鹉洲。

日暮乡关何处是?烟波江上使人愁。

'''
# with open('poetry.txt',mode='r',encoding='utf-8') as f1, open('poetry.txt.bak',mode='w') as f2:
#     n = 0
#     for line in f1:
#         if line.strip():
#             n += 1
#             if n != 3:
#                 f2.write(line+'\n')
#
# import os
# os.remove('poetry.txt')
# os.rename('poetry.txt.bak','poetry.txt')
#


'''
14、有名为username.txt的文件,其内容格式如下,写一个程序,判断该文件中是否存在”alex”, 如果没有,则将字符串”alex”添加到该文件末尾,否则提示用户该用户已存在;

pizza
alex
egon
'''
# with open('username.txt',mode='r',encoding='utf-8') as f:
#     for line in f:
#         if line.strip() and 'alex' in line:
#             print('用户已存在!')
#             break
#     else:
#         with open('username.txt',mode='a',encoding='utf-8') as f2:
#             f2.write('alex\n')


'''
15、有名为user_info.txt的文件,其内容格式如下,写一个程序,删除id为100003的行;

pizza,100001
alex, 100002
egon, 100003
'''
#
# with open('user_info.txt',mode='r',encoding='utf-8') as f1,open('user_info.txt.bak',mode='w') as f2:
#     for line in f1:
#         if line.strip():
#             #print(line)
#             if '100003' in line:
#                 continue
#             f2.write(line)
# import os
# os.remove('user_info.txt')
# os.rename('user_info.txt.bak','user_info.txt')


'''
16、有名为user_info.txt的文件,其内容格式如下,写一个程序,将id为100002的用户名修改为alex li;

pizza,100001
alex, 100002
egon, 100003
'''
# with open('user_info.txt',mode='r',encoding='utf-8') as f1,open('user_info.txt.bak',mode='w') as f2:
#     for line in f1:
#         if line.strip():
#             #print(line)
#             if '100002' in line:
#                 name = line.split(',')[0]
#                 line = line.replace(name,'alex li')
#             f2.write(line)
# import os
# os.remove('user_info.txt')
# os.rename('user_info.txt.bak','user_info.txt')
#
练习题

作业

1.股票查询程序开发

把以下股票数据存入stock_data.txt



数据来源:东方财富网

开发程序对stock_data.txt进行以下操作:

1.程序启动后,给用户提供查询接口,允许用户重复查股票行情信息(用到循环)

2.允许用户通过模糊查询股票名,比如输入“啤酒”, 就把所有股票名称中包含“啤酒”的信息打印出来

3.允许按股票价格、涨跌幅、换手率这几列来筛选信息,比如输入“价格>50”则把价格大于50的股票都打印,输入“市盈率<50“,则把市盈率小于50的股票都打印,不用判断等于。

思路提示:加载文件内容到内存,转成dict or list结构,然后对dict or list 进行查询等操作。 这样以后就不用每查一次就要打开一次文件了,效率会高。

# -*- coding:utf-8 -*-
# caiqinxiong 
# 2019/7/21 下午10:30
def getData():
    '''获取源数据'''
    stock_data_list = []
    with open(r'stock_data.txt', mode='r', encoding='utf-8') as f:
        print('~' * 160)
        head = f.readline().split()
        stock_data_list.append(head)
        # 打印表头,中文字符比英文字符大啊!!!,为了打印输出美观点,只能分开打印了
        for i in head:
            print(i.center(6,' '),end='|')
        print()
        for line in f:
            line = line.strip()
            if line:
                #print(line.split())
                for j in line.split():
                    print(j.center(8),end='|')
                print()
                #print('|'.join(line.split()))
                stock_data_list.append(line.split())
        print('~' * 160)
    return stock_data_list

def changeData(data):
    '''数据转换'''
    if not data.find('') < 0:
        data = float(data.split('')[0]) * 10000
    elif not data.find('亿') < 0:
        data = float(data.split('亿')[0]) * 100000000
    elif not data.find('%') < 0:
        data = float(data.split('%')[0]) * 0.01
    else:
        if data.isdigit() or data.split(".")[1].isdigit():
            return float(data)
        else:
            print('输入有误啊!')
            return data
    return data


def printList(listData):
    '''打印列表'''
    if len(listData) == 0:
        print('\033[31;1m无查询结果!\033[0m')
    else:
        print('一共搜索到\033[31;1m%s\033[0m条结果,详情如下:' % len(listData))
        print('~' * 100)
        for i in data_list[0]:
            print(i.center(5,' '),end='|')
        print()
        for j in listData:
            #print(j.center(5,' '),end='|')
            for k in j:
                print(k.center(7,' '),end='|')
            print()

        print('~' * 100)


def compareData(compare, num, index, data_list):
    '''比较查询'''
    num_list = []
    # 获取比较完成数据,添加到列表里
    for i in range(1, len(data_list)):
        if compare == '<':
            if changeData(data_list[i][int(index)]) < float(num):
                num_list.append(data_list[i])
        else:
            if changeData(data_list[i][int(index)]) > float(num):
                num_list.append(data_list[i])

    # 打印比较结果
    printList(num_list)


def stockFinder(*args):
    '''比较查找数据'''
    # print(args)
    name = args[0][0]
    data_list = args[-1][-1]
    try:
        compare = args[0][1]  # 比较符号
        num = args[0][2]  # 比较数据
        # 获取输入项名称,支持模糊查找
        for i in data_list[0]:
            if not i.find(name) < 0:
                index = data_list[0].index(i)  # 获取该名称对应的index值
                compareData(compare, num, index, data_list)
    except:
        find_data = []
        # 模糊查找
        for i in range(1, len(data_list)):
            if not data_list[i][2].find(name) < 0:
                find_data.append(data_list[i])
        # 打印查找结果
        printList(find_data)


def checkArgs(data_list):
    '''校验传入参数'''
    choise = input('股票查询接口(按q退出)>>:').strip()
    if not choise.find('>') < 0:
        name = choise.split('>')[0].strip()
        num = choise.split('>')[-1].strip()
        num = changeData(num)
        return name, '>', num, data_list
    elif not choise.find('') < 0:
        name = choise.split('')[0].strip()
        num = choise.split('')[-1].strip()
        num = changeData(num)
        return name, '>', num, data_list
    elif not choise.find('<') < 0:
        name = choise.split('<')[0].strip()
        num = choise.split('<')[-1].strip()
        num = changeData(num)
        return name, '<', num, data_list
    elif not choise.find('') < 0:
        name = choise.split('')[0].strip()
        num = choise.split('')[-1].strip()
        num = changeData(num)
        return name, '<', num, data_list
    elif choise.upper() == 'Q':
        print('\033[34;1m谢谢使用!\033[0m')
        exit(-1)
    elif choise == '':
        #print('\033[31;1m请输入内容!\033[0m')
        return 'continue'
    else:
        return choise, data_list


if __name__ == '__main__':
    print('欢迎使用股票查询系统,所有数据信息如下:')
    data_list = getData()
    while True:
        args = checkArgs(data_list)
        stockFinder(args)
股票查询系统
序号     代码    名称          最新价    涨跌幅    涨跌额    成交量(手)    成交额        振幅    最高    最低    今开    昨收    量比    换手率    市盈率(动态)    市净率
1    603256    N宏和         6.38    44.02%    1.95    949        60.16万        23.93%    6.38    5.32    5.32    4.43    2    0.11%    46.16        3.81
2    300179    四方达         5.68    10.08%    0.52    32.86万        1.84亿        8.33%    5.68    5.25    5.34    5.16    2    9.81%    27.86        3.30
3    002201    九鼎新材    8.09    10.07%    0.74    3.86万        3123.70万    0.00%    8.09    8.09    8.09    7.35    3    1.16%    263.97        2.98
4    000011    深物业A         10.63    10.04%    0.97    7.41万        7709.58万    9.83%    10.63    9.68    9.68    9.66    2    1.41%    20.19        1.96
5    002639    雪人股份    8.55    10.04%    0.78    29.90万        2.54亿        3.73%    8.55    8.26    8.30    7.77    2    5.62%    628.44        2.55
6    600281    太化股份    5.81    10.04%    0.53    29.74万        1.68亿        9.47%    5.81    5.31    5.49    5.28    2    5.78%    -86.72        6.98
7    002199    东晶电子    12.73    10.03%    1.16    8.71万        1.08亿        9.77%    12.73    11.60    11.70    11.57    1    3.58%    -156.06        8.22
8    300191    潜能恒信    24.92    10.02%    2.27    5356        1334.77万    0.00%    24.92    24.92    24.92    22.65    0    0.26%    472.36        6.77
9    002362    汉王科技    16.58    10.02%    1.51    10.30万        1.68亿        10.15%    16.58    15.05    15.20    15.07    6    5.75%    -110.06        4.16
10    300648    星云股份    20.10    10.02%    1.83    13.76万        2.66亿        8.76%    20.10    18.50    18.50    18.27    2    22.92%    389.14        5.13
11    300783    三只松鼠    34.05    10.02%    3.10    2328        792.85万    0.00%    34.05    34.05    34.05    30.95    3    0.57%    13.69        7.16
12    300023    宝德股份    7.36    10.01%    0.67    5.87万        4264.41万    9.57%    7.36    6.72    6.72    6.69    1    4.07%    -9.21        5.37
13    300575    中旗股份    26.38    10.01%    2.40    5.16万        1.32亿        9.92%    26.38    24.00    24.19    23.98    1    7.98%    11.64        2.87
14    300785    值得买         59.91    10.01%    5.45    452        270.79万    0.00%    59.91    59.91    59.91    54.46    2    0.34%    44.03        4.73
15    603236    移远通信    84.21    10.01%    7.66    876        738.00万    0.00%    84.21    84.21    84.21    76.55    2    0.39%    41.61        4.69
16    000669    金鸿控股    4.62    10.00%    0.42    4.46万        2060.37万    0.00%    4.62    4.62    4.62    4.20    1    0.67%    -10.44        1.28
17    300526    中潜股份    22.35    9.99%    2.03    8.61万        1.88亿        11.71%    22.35    19.97    20.04    20.32    1    14.33%    541.52        7.02
18    300708    聚灿光电    14.21    9.98%    1.29    9.90万        1.39亿        9.29%    14.21    13.01    13.10    12.92    1    11.32%    237.16        5.03
19    300488    恒锋工具    17.30    9.98%    1.57    1.81万        3098.39万    11.13%    17.30    15.55    15.73    15.73    1    3.68%    33.09        3.12
20    601236    红塔证券    12.91    9.97%    1.17    18.69万        2.41亿        0.00%    12.91    12.91    12.91    11.74    6    5.13%    121.38        3.68
stock_data.txt
股票查询程序使用说明:
1、程序需要在python 3.X版本下运行

2、程序主要有两大功能
(1)、支持模糊查找名称
    例如输入"红塔",则查询出相关数据。
    股票查询接口(按q退出)>>:红塔
    一共搜索到1条结果,详情如下:
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    序号|代码|名称|最新价|涨跌幅|涨跌额|成交量(手)|成交额|振幅|最高|最低|今开|昨收|量比|换手率|市盈率(动态)|市净率
    20|601236|红塔证券|12.91|9.97%|1.17|18.69万|2.41亿|0.00%|12.91|12.91|12.91|11.74|6|5.13%|121.38|3.68
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2)、比较查询功能,支持模糊查询,支持中文的''''。
    例如输入"市盈率 < 0",则查询出相关数据。
    股票查询接口(按q退出)>>:市盈率 < 0
    一共搜索到5条结果,详情如下:
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    序号|代码|名称|最新价|涨跌幅|涨跌额|成交量(手)|成交额|振幅|最高|最低|今开|昨收|量比|换手率|市盈率(动态)|市净率
    6|600281|太化股份|5.81|10.04%|0.53|29.74万|1.68亿|9.47%|5.81|5.31|5.49|5.28|2|5.78%|-86.72|6.98
    7|002199|东晶电子|12.73|10.03%|1.16|8.71万|1.08亿|9.77%|12.73|11.60|11.70|11.57|1|3.58%|-156.06|8.22
    9|002362|汉王科技|16.58|10.02%|1.51|10.30万|1.68亿|10.15%|16.58|15.05|15.20|15.07|6|5.75%|-110.06|4.16
    12|300023|宝德股份|7.36|10.01%|0.67|5.87万|4264.41万|9.57%|7.36|6.72|6.72|6.69|1|4.07%|-9.21|5.37
    16|000669|金鸿控股|4.62|10.00%|0.42|4.46万|2060.37万|0.00%|4.62|4.62|4.62|4.20|1|0.67%|-10.44|1.28
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

3、单位换算
(1)、对'''亿'的换算,输入时可以直接输入数字,也可带单位。
(2)、对'%'的换算,输入时可以直接输入小数,也可带%4、异常处理
(1)、空格、回车处理
(2)、无效输入处理

5、作业难点
这次作业花最多的时间就是在处理打印结果上了,找了好多方法,想把打印结果整得美观些。包括想用一些依赖工具prettytable来实现这个效果,
但是考虑到老师您也不一定有安装了这个工具,就放弃了,打印结果没法对齐的主要原因是中文字的大小和英文不一样,尽管是一样的字符长度,展现
出来的效果也不一样。导致使用了好多for循环来打印输出。不花费太多时间研究这个了,重点是把函数的应用get到就中啦。
README

 

2.递归二分查找

https://www.cnblogs.com/Eva-J/articles/7197403.html根据博客学习二分查找算法。

并自己找一个递归相关的练习题进行练习,上交题目和代码。

# -*- coding: utf-8 -*-
__author__ = 'caiqinxiong_cai'
# 2019/7/25 15:18
'''
斐波那契数列指的是1、1、2、3、5、8、13、21、···这样一个数列,我们可以发现它后面的一个数是前两个数之和
递归实现n个斐波那契数列:
'''
# def fibonacci(n):
#     if n == 0:
#         return 0
#     elif n == 1:
#         return 1
#     else:
#         return fibonacci(n-1) + fibonacci(n-2)
# print('20个斐波那契数列为:')
# for i in range(1,21):
#     print(fibonacci(i),end=' ')

'''
利用递归求解n的阶乘:
'''
def func(n):
    if n == 1:
        return 1
    else:
        return n * func(n - 1)
for i in range(1, 10):
    print('%s!的阶乘为:%s'% (i,func(i)))

'''
利用递归来求解 汉诺塔
'''
# def Hanoi(n, a, b, c):
#     if(n == 1):
#         print(a,"-->",c)
#         return
#     Hanoi(n-1, a, c, b)
#     Hanoi(1, a, b, c)
#     Hanoi(n-1, b, a, c)
#     # print('~'*10)
#
# Hanoi(5, "A", "B", "C")
递归调用

 

posted on 2019-07-26 11:29  雨之夜&秋  阅读(999)  评论(0)    收藏  举报