Python练习 4.26 ~ 5.6

第6章-8 输出全排列

输入整数n(3<=n<=7),编写程序输出1,2,…,n整数的全排列,按字典序输出。

输入格式:

一行输入正整数n。

输出格式:

按字典序输出1到n的全排列。每种排列占一行,数字间无空格。

输入样例:

在这里给出一组输入。例如:

3

输出样例:

在这里给出相应的输出。例如:

123
132
213
231
312
321

难点:

  1. 保存为数组时,处理的一些边界条件。
  2. 如何简单地实现算法。

思路以及代码:

def permutations(n):number = list(range(1,n+1))for i in range(0,n):print(number[i],end="")print("")while True:low_index = n-1while low_index > 0 and number[low_index-1] > number[low_index]:low_index -= 1if low_index == 0:breaklow_index -= 1high_index = low_index+1while high_index < n and number[high_index] > indices[low_index]:high_index += 1high_index -= 1number[low_index], number[high_index] = number[high_index], number[low_index]number[low_index+1:] = reversed(number[low_index+1:]) # 注意此处用reversed()方法转置列表for i in range(0, n):print(number[i], end="")print("")
n=int(input())
permutations(n)

第7章-1 词频统计

请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词。

所谓“单词”,是指由不超过80个单词字符组成的连续字符串,但长度超过15的单词将只截取保留前15个单词字符。而合法的“单词字符”为大小写字母、数字和下划线,其它字符均认为是单词分隔符。

输入格式:

在第一行中输出文本中所有不同单词的个数。注意“单词”不区分英文大小写,例如“PAT”和“pat”被认为是同一个单词。

随后按照词频递减的顺序,按照 词频:单词 的格式输出词频最大的前10%的单词。若有并列,则按递增字典序输出。

输出格式:

输入样例:

This is a test.

输出样例:##

The word “this” is the word with the highest frequency.

Longlonglonglongword should be cut off, so is considered as the same as longlonglonglonee. But this_8 is different than this, and this, and this…#
this line should be ignored.
(注意:虽然单词the也出现了4次,但因为我们只要输出前10%(即23个单词中的前2个)单词,而按照字母序,the排第3位,所以不输出。)

23
5:this
4:is

难点:

使用find和if方法需要写多层循环,如果使用新的方法,如collections库以及counter方法,这样会更加直观。

思路及代码:

# 导入库
import re
import collectionswords = "".join(input())
words = re.compile(r"\w+", re.I).findall(words.lower().split('#')[0]) # 正则表达式将文本处理成全小写并读到符号#
words = [each.strip() for each in words] # 去除空格
words = list(map(lambda each: each[0:15] if len(each) > 15 else each, words)) # 长度超过15的单词将只截取保留前15个单词字符
counter = collections.Counter(words) # 使用Counter统计词频
rank = sorted(counter.items(), key=lambda each: (-each[1], each[0]), reverse=False) # 按照词频递减排序
print(len(rank)) # 输出不同单词的个数
for each in rank[0:int(0.1*len(rank))]: # 输出词频最大的前10%的单词print("{}:{}".format(each[1], each[0]))

强调:

关于collections库的讲解以及示例:

https://blog.csdn.net/y472360651/article/details/80720804

第6章函数-1 使用函数求特殊a串数列和

给定两个均不超过9的正整数a和n,要求编写函数fn(a,n) 求a+aa+aaa++⋯+aa⋯aa(n个a)之和,fn须返回的是数列和

函数接口定义:

fn(a,n)
其中 a 和 n 都是用户传入的参数。 a 的值在[1, 9]范围;n 是[1, 9]区间内的个位数。函数须返回级数和

裁判测试程序样例:


/* 请在这里填写答案 */a,b=input().split()
s=fn(int(a),int(b))
print(s)

输入样例:

在这里给出一组输入。例如:

2 3

输出样例:

在这里给出相应的输出。例如:

246

难点:

在寒假的时候第一次遇见了这道题,当时还不太熟悉,思路是用数组保存单个字母,

现在学了字符串以后,发现使用字符串更为方便,所以还是要不断学一些新的知识技能。

思路及代码:

def fn(a, n):sum = 0for i in range(1, n + 1):sum += int(str(a) * i) #遇到含有重复元素的序列时,直接看成字符串操作类型会很简单return sum

第6章函数-4 使用函数输出指定范围内Fibonacci数的个数

本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0< m< n≤ 100000 )之间的所有Fibonacci数的数目。 所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列,fib(0)=fib(1)=1。其中函数fib(n)须返回第n项Fibonacci数;函数PrintFN(m,n)用列表返回[m, n]中的所有Fibonacci数。

函数接口定义:

在这里描述函数接口。例如:
fib(n),返回fib(n)的值
PrintFN(m,n),用列表返回[m, n]中的所有Fibonacci数。

裁判测试程序样例:

在这里给出函数被调用进行测试的例子。例如:
/* 请在这里填写答案 */m,n,i=input().split()
n=int(n)
m=int(m)
i=int(i)
b=fib(i)
print("fib({0}) = {1}".format(i,b))
fiblist=PrintFN(m,n)
print(len(fiblist))

输入样例:

在这里给出一组输入。例如:

20 100 6

输出样例:

在这里给出相应的输出。例如:

fib(6) = 13
4

难点:

在实现Fibonacci数的查找时,如果使用if-for循环容易超出题目时间限制,

结合最近学的递归法可以轻易实现。

思路及代码:

def fib(n):if(n==0)or(n==1):return 1else:return fib(n-1)+fib(n-2) # 递归处理
def PrintFN(m,n):a=[]for i in range(25):if m<=fib(i)<=n:a.append(fib(i)) # 以数组方式保存找到的Fibonacci数return a
0

Python练习 4.26 ~ 5.6相关推荐

  1. python学习笔记26(python中__name__的使用)

    python学习笔记26(python中__name__的使用) 在python中,每个py文件都是一个模块,也都是一个可执行文件,即包含main方法.因此,对每个py文件,可以单独运行,也可以imp ...

  2. python如何生成26个英文字母(包括大小和小写)以及附上英文可见(常用)字符的ASCII码表。

    目的:我们想要利用python生成26个英文字母,然后将其存入列表. 方案: 使用chr函数,将一个整数解释成一个字符,这个整数其实就是这个字符的ASCII码.比如字母a对应的ASCII码就是97,那 ...

  3. python hexdump_笨办法学 Python · 续 练习 26:`hexdump`

    练习 26:hexdump 译者:飞龙 自豪地采用谷歌翻译 你已经用xargs完成了热身,现在正在代码/审计的循环中.你现在将尝试以"测试优先"方式完成下一个挑战.这就是,你编写测 ...

  4. python hexdump_练习 26:`hexdump`

    练习 26:hexdump 译者:飞龙 自豪地采用谷歌翻译 你已经用xargs完成了热身,现在正在代码/审计的循环中.你现在将尝试以"测试优先"方式完成下一个挑战.这就是,你编写测 ...

  5. 笨办法学python加分习题26

    python版本:3      若有错误,敬请指出 模块名称:测试.py 我的是版本3,表示很坑爹,需要宝宝把所有的print加上括号 =0= >_< #加分习题26 import 加分习 ...

  6. 学python好不好-26岁了,自学Python怎么样?

    数学与应用数学专业转行Python的话还是很有优势的.首先来了解一下Python的可就业方向有那些,找到方向后.了解重点学习的知识点,是比较有效率的学习方式. 一.Python就业方向 /> 来 ...

  7. 数据结构之图:有向图的拓扑排序,Python代码实现——26

    有向图的拓扑排序 拓扑排序介绍 什么是拓扑排序? 一个有向图的拓扑排序(Topological sort 或 Topological ordering)是根据其有向边从顶点U到顶点V对其所有顶点的一个 ...

  8. 小白学 Python 爬虫(26):为啥上海二手房你都买不起

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  9. [Python] 编码生成26个英文字母

    使用chr函数,将一个整数转成对应的一个字符,这个整数其实就是这个字符的ASCII码 语法格式 chr(i) 参数i可以是十进制或十六进制形式的数字 返回值 返回当前整数数字代表的ASCII字符 # ...

最新文章

  1. 如何使Layouts里的页面应用站点母板页
  2. windows远程连接的几个问题
  3. linux 模式表达式,linux正则表达式和扩展表达式
  4. 不用python爬今日头条_手把手教你从今日头条爬取你想要的任何图片
  5. 从零开始编写深度学习库(四)Eigen::Tensor学习使用及代码重构
  6. python从键盘获取数学表达式字符串_python – 数学表达式中String类型的字符串操作...
  7. CA的建立与证书的颁发
  8. 【C语言例程】输出101~200之间的素数(质数)
  9. 微信支付计算机,微信电脑版怎么支付?怎么开通微信支付?
  10. 杭州最新公交线路一览(41-50)
  11. android 页面回滚焦点位置 解决方案
  12. 小米5升级Linux内核,小米5 刷机LineageOS 14.1的详细教程
  13. 想用C++实现一个软件渲染器
  14. 单片机音频节奏灯_如何用单片机做出用音乐节奏来控制LED灯?
  15. 增值税发票二维码内容字段解析
  16. windows API 第八篇 _tcsicmp _stricmp _wcsicmp _mbsicmp
  17. Outlook Express常见问答
  18. GNSS/INS组合导航笔记
  19. 整流2-单同步坐标锁相原理+算法+代码
  20. 如何套牢ceRNA研究套路

热门文章

  1. 《MLB棒球创造营》:走近棒球运动·明尼苏达双城队
  2. Ubuntu 用GParted调整分区大小
  3. 程序人生 | 大龄的程序员都到哪里去了?
  4. 微信旧版本存在远程代码执行漏洞:小心奇特用户名的聊天对象
  5. 香港的区块链棋局, 十年后, 纽伦港还能主导金融世界吗?
  6. 无能狂怒之@RequestParam、@PathParam、@PathVariable三者有什么区别我都不知道!
  7. 2022 云原生编程挑战赛圆满收官,见证冠军战队的诞生
  8. DGA数据集和算法研究
  9. 多功能计算机十二生肖,十二生肖那是真人实演的危险特技,不是电脑特效!
  10. 新辰:浅谈那些被挑毛病的90后创业者 到底谁错了?