作业:
1.用python实现冒泡排序
# [50,20,30,10]
#
# 升序:谁大谁交换到后面
# 降序:谁大谁交换到前面
#
# 以升序为例
# 第1趟:
# [20,50,30,10]
# [20,30,50,10]
# [20,30,10,50]
# 第2趟:
# [20,30,10,50]
# [20,10,30,50]
# 第3趟:
# [10,20,30,50]

2.用python实现选择排序
# 定义:选择法排序指每次选择所要排序的数组中的最大值(由小到大排序则选择最小值)的数组元素,
# 将这个数组元素的值与最前面没有进行排序的数组元素的值互换
# 以升序为例:
#
# 原始:
# lst = [50, 30, 10, 20]

# 比较:
# 第一趟:[10, 30, 50, 20]
# 第二趟:[10, 20, 50, 30]
# 第三趟:[10, 20, 30, 50]

3.列表合并(用你能想到所有方法实现)
    [1, 2, 3, 5, 6]    [0, 2, 5, 7]
    
    要求得到结果:[0, 1, 2, 3, 5, 6, 7]

4.大脚超市赊账人员名单如下:
['刘能', '王老七', '谢广坤', '赵玉田', '杨晓燕', '刘大脑袋', '王长贵', '谢飞机', '赵四', '王大拿']
大脚想移除掉里面的姓氏重复的人(不考虑复姓),但是对于每种姓氏大脚想保留最后出现的那个人。希望你来帮助她

['杨晓燕','刘大脑袋','谢飞机', '赵四','王大拿']

5.编写一组数据,记录组内每个人的语文成绩
    data = {
         'ZhaoLiYing': 60,
         'FengShaoFeng': 75,
         'TianLaoShi': 99,
         'TangYan': 88,
         'LuoJin': 35,
         'LiuLaoShi': 100
    }
    a.算出平均分
    b.再找出学霸

6.编写一组数据,记录组内每个人的语文成绩、数学成绩、英语成绩    
    data = {
     'ZhaoLiYing': [60, 68, 45],
     'FengShaoFeng': [10, 28, 5],
     'TianLaoShi': [44, 86, 73],
     'TangYan': [99, 95, 95],
     'LuoJin': [98, 65, 100],
     'LiuLaoShi': [77, 97, 65]
    }
    a.找到平均分不足60分的人
    b.找出各科的最高分
    c.算出各科的平均分,再找出各科的学霸

7. 编写一组数据,记录组内每个人的语文成绩、数学成绩、英语成绩    
data = {
    '颖宝':{'语文':60, '数学':68, '英语':45},
    '冯威':{'语文':10, '数学':28, '英语':5},
    '糖糖':{'语文':44, '数学':86, '英语':73},
    '咕噜':{'语文':99, '数学':95, '英语':95},
    '田老师':{'语文':98, '数学':65, '英语':100},
    '刘老师':{'语文':77, '数学':97, '英语':65},
    }
    a.找到平均分不足60分的人,
    b.找出各科的最高分,平均分
    c.找出各科的学霸

8.统计一篇英文文章每个单词的出现频率,并返回出现频率最高的前5个单词及其出现次数(字典形式)
A small sample of texts from Project Gutenberg appears in the NLTK corpus collection. However, you may be interested in analyzing other texts from Project Gutenberg. You can browse the catalog of 25,000 free online books at http://www.gutenberg.org/catalog/, and obtain a URL to an ASCII text file. Although 90% of the texts in Project Gutenberg are in English, it includes material in over 50 other languages, including Catalan, Chinese, Dutch, Finnish, French, German, Italian

9.给定一个字符串,例如abcabcd,请你求得到该字符串中所有的长度大于等于2的子串,
并统计每个字串出现的次数

# 作业:
# 1.用python实现冒泡排序
# [50,20,30,10]
#
# 升序:谁大谁交换到后面
# 降序:谁大谁交换到前面
#
# 以升序为例
# 第1趟:
# [20,50,30,10]
# [20,30,50,10]
# [20,30,10,50]
# 第2趟:
# [20,30,10,50]
# [20,10,30,50]
# 第3趟:
# [10,20,30,50]

# 分析方法:依次分析外层循环条件、内层循环条件、循环体内容。
# 每个步骤中,均采用特殊到一般的方法进行归纳。

# 1、先看比较多少趟:
# 列表长度为4, 进行3趟比较
# 总结:
# 列表长度为len(lst), 则进行len(lst)-1趟比较
# 用i来控制比较的趟数
# len(lst)-1趟,数值范围为1到len(lst)-1,写到range的参数中,应为range(1, len(lst))
# 所以写出外层循环条件如下,
# for i in range(1, len(lst)):

# 2、再看每趟中,比较次数与第几趟的关系
# 第1趟 -- 3次
# 第2趟 -- 2次
# 第3趟 -- 1次
# 总结出:
# 第i趟 -- len(lst)-i次
# 用j来代表比较次数。j的范围是1到len(lst)-i,即range(1, len(lst)-i+1)
# 所以写出内层循环条件如下:
# for j in range(1, len(lst)-i+1)

# 3、最后看循环体内容应该是什么

# 以i = 2,即第2趟比较为例
# 原始:[20,30,10,50]
# 第1次: 比较的是第1个元素和第2个元素

# if lst[0] > lst[1]:
#     lst[0],lst[1] = lst[1],lst[0]

# 第2次:比较的是第2个元素和第3个元素
# if lst[1] > lst[2]:
#     lst[1],lst[2] = lst[2],lst[1]

# 总结:
# 第j次:比较的是  第j个元素 和 第 j+1个元素,下标分别为j-1 和 j。
# 升序时,若前一个元素大,则把它跟后一个元素交换
# 所以写出循环体内容如下:
#     for j in range(1, len(lst)-i+1):
#         if lst[j-1] > lst[j]:
#             lst[j-1],lst[j] = lst[j],lst[j-1]

# lst = [50, 20, 15, 90, 30, 10]
# length = len(lst)
# for i in range(1, length):
#     for j in range(1, length - i + 1):
#         if lst[j - 1] > lst[j]:
#             lst[j - 1], lst[j] = lst[j], lst[j - 1]
# print(lst)

# 2.用python实现选择排序
# 定义:选择法排序指每次选择所要排序的数组中的最大值(由小到大排序则选择最小值)的数组元素,
# 将这个数组元素的值与最前面没有进行排序的数组元素的值互换
# 以升序为例:
#
# 原始:
# lst = [50, 30, 10, 20]

# 比较:
# 第一趟:[10, 30, 50, 20]
# 第二趟:[10, 20, 50, 30]
# 第三趟:[10, 20, 30, 50]

# 分析方法:

# 长度为4 -- 3趟

# 第1趟

# 第2趟

# 第3趟

# for i in range(1,4) i代表趟数

# 看第i趟中的动作

# 第1趟

# 第2趟:找出第2项到最后一项中找出最小的,如果最小的不是第2项,则把找到的最小的与第2项交换

#            假定第2项就是最小的,索引为2-1
#            从第3项开始,到最后一项:依次跟最小项进行比较
#            如果找到一项比当前最小项还小,就把找到的项赋值给最小值,同时把最小索引
#            换成新找到项的索引。
# 第3趟

# 第i趟:在第i项到最后一项中找出最小的,如果最小的不是第i项,则把找到的最小的与第i项交换

#            假定第i项就是最小的,索引为i-1
#            从第i+1项开始,到最后一项:依次跟最小项进行比较
#            索引:i len-1  range(i,len)
#            如果找到一项比当前最小项还小,就把找到的项赋值给最小值,同时把最小索引
#            换成新找到项的索引。

# lst = [100, 50, 30, 15, 90, 10, 20]
# length = len(lst)
#
# for i in range(1, length):
#     min_value = lst[i - 1]
#     min_index = i - 1
#     for j in range(i, length):
#         if lst[j] < min_value:
#             min_value = lst[j]
#             min_index = j
#     if min_index != i - 1:
#         lst[i - 1], lst[min_index] = lst[min_index], lst[i - 1]
#
# print(lst)

# 3.列表合并(用你能想到所有方法实现)
#     [1, 2, 3, 5, 6]    [0, 2, 5, 7]
#
#     要求得到结果:[0, 1, 2, 3, 5, 6, 7]

a = [1, 2, 3, 5, 6]
b = [0, 2, 5, 7]

# 1
new = []
for ele in a + b:
    if ele not in new:
        new.append(ele)
print(sorted(new))

# 2
print(list(set(a + b)))

# 3
print(sorted(list({}.fromkeys(a + b).keys())))

# 4.大脚超市赊账人员名单如下:
# ['刘能', '王老七', '谢广坤', '赵玉田', '杨晓燕', '刘大脑袋', '王长贵', '谢飞机', '赵四', '王大拿']
# 大脚想移除掉里面的姓氏重复的人(不考虑复姓),但是对于每种姓氏大脚想保留最后出现的那个人。希望你来帮助她
#
# 期望结果:['杨晓燕','刘大脑袋','谢飞机', '赵四','王大拿']

names = ['刘能', '王老七', '谢广坤', '赵玉田',
         '杨晓燕', '刘大脑袋', '王长贵', '谢飞机',
         '赵四', '王大拿']

f_names = []  # 姓氏列表
result = []  # 人名列表

names.reverse()
for name in names:
    if name[0] not in f_names:
        f_names.append(name[0])
        result.append(name)
result.reverse()
print(result)

# 5.编写一组数据,记录组内每个人的语文成绩
# data = {
# #      'ZhaoLiYing': 60,
# #      'FengShaoFeng': 75,
# #      'TianLaoShi': 99,
# #      'TangYan': 88,
# #      'LuoJin': 35,
# #      'LiuLaoShi': 100
# # }
#     a.算出平均分
#     b.再找出学霸

# data = {
#     'ZhaoLiYing': 60,
#     'FengShaoFeng': 75,
#     'TianLaoShi': 99,
#     'TangYan': 88,
#     'LuoJin': 35,
#     'LiuLaoShi': 100
# }
#
#
# def avg(iter):
#     return sum(iter) / len(iter)
#
#
# average = avg(data.values())
# print('平均分数为%.2f' % average)
#
# for name, score in data.items():
#     if score == max(data.values()):
#         print('学霸是' + name)
#
# 6.编写一组数据,记录组内每个人的语文成绩、数学成绩、英语成绩
#     data = {
#      'ZhaoLiYing': [60, 68, 45],
#      'FengShaoFeng': [10, 28, 5],
#      'TianLaoShi': [44, 86, 73],
#      'TangYan': [99, 95, 95],
#      'LuoJin': [98, 65, 100],
#      'LiuLaoShi': [77, 97, 65]
#     }
#     a.找到平均分不足60分的人
#     b.找出各科的最高分
#     c.算出各科的平均分,再找出各科的学霸

# data = {
#     'ZhaoLiYing': [60, 68, 45],
#     'FengShaoFeng': [10, 28, 5],
#     'TianLaoShi': [44, 86, 73],
#     'TangYan': [99, 95, 95],
#     'LuoJin': [98, 65, 100],
#     'LiuLaoShi': [77, 97, 65]
# }
#
#
# def avg(iter):
#     return sum(iter) / len(iter)
#
#
# people_avg_below_60 = []
# yuwen_list = []
# shuxue_list = []
# yingyu_list = []
#
# for name, scores in data.items():
#     if avg(scores) < 60:
#         people_avg_below_60.append(name)
#
#     yuwen_list.append(scores[0])
#     shuxue_list.append(scores[1])
#     yingyu_list.append(scores[2])
#
# yuwen_max = max(yuwen_list)
# shuxue_max = max(shuxue_list)
# yingyu_max = max(yingyu_list)
#
# yuwen_xb = shuxue_xb = yingyu_xb = None
# for name, scores in data.items():
#     if scores[0] == yuwen_max:
#         yuwen_xb = name
#     if scores[1] == shuxue_max:
#         shuxue_xb = name
#     if scores[2] == yingyu_max:
#         yingyu_xb = name
#
# print('平均分不足60分的人有:%s' % ' '.join(people_avg_below_60))
# print('语文最高分为:%d,平均分为%.2f,学霸是%s' % (yuwen_max, avg(yuwen_list), yuwen_xb))
# print('数学最高分为:%d,平均分为%.2f,学霸是%s' % (shuxue_max, avg(shuxue_list), shuxue_xb))
# print('英语最高分为:%d,平均分为%.2f,学霸是%s' % (yingyu_max, avg(yingyu_list), yingyu_xb))

#
# 7. 编写一组数据,记录组内每个人的语文成绩、数学成绩、英语成绩
# data = {
#     '颖宝':{'语文':60, '数学':68, '英语':45},
#     '冯威':{'语文':10, '数学':28, '英语':5},
#     '糖糖':{'语文':44, '数学':86, '英语':73},
#     '咕噜':{'语文':99, '数学':95, '英语':95},
#     '田老师':{'语文':98, '数学':65, '英语':100},
#     '刘老师':{'语文':77, '数学':97, '英语':65},
#     }
#     a.找到平均分不足60分的人,
#     b.找出各科的最高分,平均分
#     c.找出各科的学霸
# data = {
#     '颖宝':{'语文':60, '数学':68, '英语':45},
#     '冯威':{'语文':10, '数学':28, '英语':5},
#     '糖糖':{'语文':44, '数学':86, '英语':73},
#     '咕噜':{'语文':99, '数学':95, '英语':95},
#     '田老师':{'语文':98, '数学':65, '英语':100},
#     '刘老师':{'语文':77, '数学':97, '英语':65},
#     }
#
#
# def avg(lst):
#     return float(sum(lst))/len(lst)
#
# def sort_dict_by_value(dict):
#     return sorted(dict.items(), key=lambda item: item[-1])
#
# people_avg_below_60 = []
# yw_dic = {}
# sx_dic = {}
# yy_dic = {}
#
# for name, scores in data.items():
#     yw_dic[name] = scores['语文']
#     sx_dic[name] = scores['数学']
#     yy_dic[name] = scores['英语']
#
#     avg_score = avg(scores.values())
#     if avg_score < 60:
#         people_avg_below_60.append(name)
#
# yw_sorted_lst = sort_dict_by_value(yw_dic)
# sx_sorted_lst = sort_dict_by_value(sx_dic)
# yy_sorted_lst = sort_dict_by_value(yy_dic)
#
# print('平均分不足60分的人有:%s' % ' '.join(people_avg_below_60))
#
# print('语文最高分为%d,学霸是%s' % (yw_sorted_lst[-1][1], yw_sorted_lst[-1][0]))
# print('数学最高分为%d,学霸是%s' % (sx_sorted_lst[-1][1], sx_sorted_lst[-1][0]))
# print('英语最高分为%d,学霸是%s' % (yy_sorted_lst[-1][1], yy_sorted_lst[-1][0]))
#
# print('语文平均分为%.1f' % (avg(yw_dic.values())))
# print('数学平均分为%.1f' % (avg(sx_dic.values())))
# print('英语平均分为%.1f' % (avg(yy_dic.values())))

# 8.统计一篇英文文章每个单词的出现频率,并返回出现频率最高的前5个单词及其出现次数(字典形式)
# A small sample of texts from Project Gutenberg appears in the NLTK corpus collection. However, you may be interested in analyzing other texts from Project Gutenberg. You can browse the catalog of 25,000 free online books at http://www.gutenberg.org/catalog/, and obtain a URL to an ASCII text file. Although 90% of the texts in Project Gutenberg are in English, it includes material in over 50 other languages, including Catalan, Chinese, Dutch, Finnish, French, German, Italian

# def top5_words(text,sp_words):
#     word_list = []
#
#     for word in text.split(' '):
#         if word.endswith(',') or word.endswith('.'):
#             word = word[:-1]
#         if word not in special_words:
#             word = word.lower()
#         if word.isalpha():
#             word_list.append(word)
#     result = {}
#     for word in word_list:
#         result[word] = word_list.count(word)
#
#     print(result)
#     return dict(sorted(result.items(), key=lambda item: item[-1], reverse=True)[:5])
#
#
# text = 'A small sample of texts from Project Gutenberg appears in the NLTK corpus collection. ' \
#        'However, you may be interested in analyzing other texts from Project Gutenberg. ' \
#        'You can browse the catalog of 25,000 free online books at ' \
#        'http://www.gutenberg.org/catalog/, and obtain a URL to an ASCII text file. ' \
#        'Although 90% of the texts in Project Gutenberg are in English, it includes material ' \
#        'in over 50 other languages, including Catalan, Chinese, Dutch, Finnish, French, ' \
#        'German, Italian'
#
# special_words = ['Gutenberg', 'NLTK', 'ASCII', 'English',
#                  'Catalan', 'Chinese', 'Dutch', 'Finnish',
#                  'French', 'German', 'Italian', 'URL']
#
# print(top5_words(text=text, sp_words=special_words))

# 9.给定一个字符串,例如abcabcd,请你求得到该字符串中所有的长度大于等于2的子串,
# 并统计每个字串出现的次数

str0 = input('请输入一个字符串')
lst = []
str_len = len(str0)
for i in range(1,str_len):
    for j in range(1, str_len-i+1):
        lst.append(str0[(j-1):(j+i)])

dict = {}
# print lst
for substr in lst:
    dict[substr] = lst.count(substr)

for itm in sorted(dict.items(), reverse=True, key=lambda x: x[-1]):
    print('%s\n出现次数:%d\n' % (itm[0], itm[-1]))

day3-作业及答案的更多相关文章

  1. 与左侧的 圆括号“(”(位于“e:\大二上课程课件、作业和答案\数据结构\chapter4\sqstack\sqstack\mysqstack.h(23)”)匹配之前遇到文件结束

    错误原因是“某对圆括号只打了左括号而没有右括号”,debug方法是:直接根据报错提示:“与左侧的 圆括号“(”(位于“e:\大二上课程课件.作业和答案\数据结构\chapter4\sqstack\sq ...

  2. Python学习day3作业

    days3作业 作业需求 HAproxy配置文件操作 根据用户输入,输出对应的backend下的server信息 可添加backend 和sever信息 可修改backend 和sever信息 可删除 ...

  3. java第一天学习作业及答案

    作业一 一.选择题 1.选出在java中有效的注释声明(AD)(选两项) A.//这是注释 B.*/这是注释*/ C./这是注释 D./*这是注释*/ 2.在控制台运行一个java程序,使用的命名正确 ...

  4. 老男孩Day3作业:工资管理系统

    作业需求: 1.从info.txt文件中读取员工及其工资信息,最后将修改或增加的员工工资信息也写入原info.txt文件. 2.能增查改员工工资 3.增.改员工工资用空格分隔 4.实现退出功能 1)编 ...

  5. Python3.5 day3作业二:修改haproxy配置文件。

    需求: 1.使python具体增删查的功能. haproxy的配置文件. global log 127.0.0.1 local2 daemon maxconn 256 log 127.0.0.1 lo ...

  6. Python3.5 day3作业一:实现简单的shell sed替换功能

    需求: 1.使python具有shell中sed替换功能. #!/usr/bin/env python #_*_conding:utf-8_*_ #sys模块用于传递参数,os模块用于与系统交互. i ...

  7. python基础:day3作业

    修改haproxy配置文件 基本功能:1.获取记录2.添加记录3.删除记录 代码结构:三个函数一个主函数 知识点:1.python简单数据结构的使用:列表.字典等 2.python两个模块的使用:os ...

  8. Day3作业及默写

    1.有变量量name = "aleX leNb" 完成如下操作: 移除 name 变量对应的值两边的空格,并输出处理结果 print(name.strip()) 移除 name 变 ...

  9. jquery作业 教授答案

    http://www.cnblogs.com/qianjinyan/p/8961086.html 题目要求: 1. 通过jquery动态的创建一个表格,随机生成(id自增,name随机2-3个中文汉字 ...

  10. Python 全栈开发:day3 作业与默写

    # 1.有变量name = "aleX leNb" 完成如下操作:name = 'aleX leNb'# 1)移除 name 变量对应的值两边的空格,并输出处理结果print(na ...

随机推荐

  1. 自己写一个java的mvc框架吧(四)

    自己写一个mvc框架吧(四) 写一个请求的入口,以及初始化框架 上一章写了获取方法的入参,并根据入参的参数类型进行数据转换.这时候,我们已经具备了通过反射调用方法的一切必要条件.现在我们缺少一个htt ...

  2. python基础技巧综合训练题2

    1,判断一个字符串中的每一个字母是否都在另一个字符串中,可以利用集合的特性来解,集合的元素如果存在,再次更新(update) 是添加不进集合的,那么集合的长度还是跟原来一样,如果添加进去,集合长度就会 ...

  3. 【 js 基础 】【 源码学习 】 深浅拷贝

    underscore的源码中,有很多地方用到了 Array.prototype.slice() 方法,但是并没有传参,实际上只是为了返回数组的副本,例如 underscore 中 clone 的方法: ...

  4. Unable to open debugger port (127.0.0.1:63777): java.net.BindException "Address

    困扰了我好久,试过删掉taget文件夹rebuild,不删除Tomcat Server配置手动修改端口号也不行,试过杀掉java进程和重启机器,但是就是没效果. 解决: 删除Tomcat Server ...

  5. [World Final 2016] Branch Assignment

    链接 PDF bzoj 先求出正置边和反置边时b+1到前b个点的最短路dis[0/1][x](x∈[1,b]), 令D[x]=dis[0][x]+dis[1][x] 然后分组后每个x对代价的贡献为D[ ...

  6. 【代码笔记】iOS-播放从网络上下载的语音

    代码: ViewController.m #import "ViewController.h" //录音 #import <AVFoundation/AVFoundation ...

  7. SQL2008R2数据库日志太大收缩方法

    1.登陆项目平台数据库服务器.双击SQL Server Management Studio打开数据库管理.登陆数据库 2.如下图,打开数据库属性窗口 3.如下图,更改数据库恢复模式 4.如下图,收缩数 ...

  8. 最近用到的 sql 统计操作

    统计操作 1.分组统计group by select id,name,count(*) as '总数'  from test1 group by id,name     --group by   分组 ...

  9. SQL Server 2014 新特性——内存数据库(转载)

    目录 SQL Server 2014 新特性——内存数据库 简介: 设计目的和原因: 专业名词 In-Memory OLTP不同之处 内存优化表 内存优化表的索引 并发能力的提升 和竞争对手相比几点 ...

  10. Linux系统之TroubleShooting(启动故障排除)

    尽管Linux系统非常强大,稳定,但是我们在使用过程当中,如果人为操作不当,仍然会影响系统,甚至可能使得系统无法开机,无法运行服务等等各种问题.那么这篇博文就总结一下一些常见的故障排除方法,但是不可能 ...