零基础python入门教程:python666.cn
大家好,欢迎来到 Crossin的编程教室 !
今天给大家来一个我比较喜欢的话题之一:信息加密
当然,这道题算是信息加密的皮毛的皮毛了。
请听题:
阿圆和奇奇在上课的时候传递小抄,但又不想小抄的内容被其他人发现。于是他俩就约定了一种加密方式:
- 只对信息内容中的英语或者拼音(也就是字母)进行加密,其他符号保留原样
- 每个字母向后移动5位,成为密文,比如 a->f,k->p
- 如果向后5位超过了z,就折回字母开头,比如 x->c
请用一段代码完成此规则的加密和解密。
参考示例:
【加密】
输入:there is a vegetable in your teeth
输出:ymjwj nx f ajljyfgqj ns dtzw yjjym
【解密】
输入:onz sn mzf izt
输出:jiu ni hua duo
附加题
你能否解密出这段文字:
ild gdpsh sxktgvts xc p ldds, pcs x-- x iddz iwt dct athh igpktats qn, pcs iwpi wph bpst paa iwt sxuutgtcrt.
详细解答和参考代码将在下期栏目中给出,也可以参考其他同学在留言中的代码。
期待各位同学提交解答,更期待你能完成整个系列。
简单代码可直接在留言中提交,较长代码推荐使用 paste.ubuntu.com 或
codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。
往期问题可点击文章开头的合集“每周一坑”进入查看。
【解答】正整数分解质因数
本题的一种思路是:
- 从2开始尝试去整除原数N
- 如果可以整除,原数更新为 N//i,并输出 i;不能整除就继续试,直到N被自身整除
- 如果之前已经有质因数,最后剩下的 i 就是最后一个质因数;如果没有,说明原数就是质数
这里之所以不用判断除数 i 是不是质数,是因为 i 是从 2 开始逐个试过来的,如果它可以被更小的数整除,那么之前就已经被处理过了。因此能够被计算到的 i 一定就是质因数。
另外这里有个可以小小优化的点:每次尝试不一定要从2开始,而可以从上一个质因数开始。
参考代码:
n = input('输入待分解的正整数:') start = 2 is_prime = True while n > 1: # 不断分解n,直到分解为1 for index in range(start, n + 1) : if n % index == 0: # n能被index整除 n //= index # n=n//index if n == 1: if is_prime: print(f'{index}是质数') else: print(index) else: # index 一定是素数 print(f'{index} * ', end='') is_prime = False break start = index
_往期文章推荐_