导航:首页 > 编程语言 > python九百道题

python九百道题

发布时间:2022-09-04 09:29:46

‘壹’ python题:

1. 欧几里德算法
欧几里德算法又称辗转相除法, 用于计算两个整数a, b的最大公约数。其计算原理依赖于下面的定理:
定理: gcd(a, b) = gcd(b, a mod b)
证明:
a可以表示成a = kb + r, 则r = a mod b
假设d是a, b的一个公约数, 则有 d|a, d|b, 而r = a - kb, 因此d|r。
因此,d是(b, a mod b)的公约数。
加上d是(b,a mod b)的公约数,则d|b, d|r, 但是a = kb + r,因此d也是(a, b)的公约数。
因此,(a, b) 和(a, a mod b)的公约数是一样的,其最大公约数也必然相等,得证。
欧几里德的Python语言描述为:

1
2
3
4
5
6
7
8
9
10

def gcd(a, b):
if a < b:
a, b = b, a

while b != 0:
temp = a % b
a = b
b = temp

return a

2. Stein算法
欧几里德算法是计算两个数最大公约数的传统算法,无论是理论,还是从效率上都是很好的。但是他有一个致命的缺陷,这个缺陷只有在很大的素数时才会显现出来。
考虑现在的硬件平台,一般整数最多也就是64位, 对于这样的整数,计算两个数值就的模很简单的。对于字长为32位的平台,计算两个不超过32位的整数的模,只需要一个指令周期,而计算64位以下的整数模,也不过几个周期而已。但是对于更大的素数,这样的计算过程就不得不由用户来设计,为了计算两个超过64位的整数的模,用户也许不得不采用类似于多位除法手算过程中的试商法,这个过程不但复杂,而且消耗了很多CPU时间。对于现代密码算法,要求计算128位以上的素数的情况比比皆是,设计这样的程序迫切希望能够抛弃除法和取模。
Stein算法由J.Stein 1961年提出,这个方法也是计算两个数的最大公约数。和欧几里德算法不同的是,Stein算法只有整数的移位和加减法,这对于程序设计者是一个福音。
为了说明Stein算法的正确性,首先必须注意到以下结论:
gcd(a, a) = a, 也就是一个数和他自己的公约数是其自身。
gcd(ka, kb) = k * gcd(a, b),也就是最大公约数运算和倍乘运算可以交换,特殊的,当k=2时,说明两个偶数的最大公约数比如能被2整除。
Stein算法的python实现如下:

1
2
3
4
5
6
7
8
9
10
11
12
13

def gcd_Stein(a, b):
if a < b:
a, b = b, a
if (0 == b):
return a
if a % 2 == 0 and b % 2 == 0:
return 2 * gcd_Stein(a/2, b/2)
if a % 2 == 0:
return gcd_Stein(a / 2, b)
if b % 2 == 0:
return gcd_Stein(a, b / 2)

return gcd_Stein((a + b) / 2, (a - b) / 2)

3. 一般求解实现
核心代码很简单:

1
2
3

def gcd(a, b):
if b == 0:return a
return gcd(b, a % b)

附上一个用Python实现求最大公约数同时判断是否是素数的一般方法:
程序如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

#!/usr/bin/env python

def showMaxFactor(num):
count = num / 2
while count > 1:
if num % count == 0:
print 'largest factor of %d is %d' % (num, count)
break #break跳出时会跳出下面的else语句
count -= 1
else:
print num, "is prime"

for eachNum in range(10,21):
showMaxFactor(eachNum)

输出如下:

1
2
3
4
5
6
7
8
9
10
11

largest factor of 10 is 5
11 is prime
largest factor of 12 is 6
13 is prime
largest factor of 14 is 7
largest factor of 15 is 5
largest factor of 16 is 8
17 is prime
largest factor of 18 is 9
19 is prime
largest factor of 20 is 10

‘贰’ PYthon练习题

inport 关键字写错了,是 import 不是 inport 。

importrandom

‘叁’ Python练习题

1
print("hi, “”“how are you”””, I’m fine and you")

2
a, b= map(int, input().split())
r=a//b
m=a%b

‘肆’ python题目

str1="computer4"
str1.split()[0]*4
Out[175]:''
[str1.split()[0]]*4
Out[176]:['computer','computer','computer','computer']
str2="science#5"
[str2.split('#')[0]]*4
Out[178]:['science','science','science','science']
str2.split('#')[0]*4
Out[179]:'sciencesciencesciencescience'

‘伍’ Python题目

#输出"Hello,world!"
print('hello,world')

#从键盘输入4个整数a,b,c,x计算函数值
a=int(input('请输入a的值:'))
b=int(input('请输入b的值:'))
c=int(input('请输入c的值:'))
x=int(input('请输入x的值:'))
y=(a*x)^2+b*x+c
print('最终的值为:%s'%y)

#计算费波纳契数列的第n项的递归程序
deffibonacci(n):
ifn==0orn==1:
returnn
else:
returnfibonacci(n-1)+fibonacci(n-2)
print(fibonacci(3))

#从键盘输入若干个用空格分开的单词,按字典序排序后输出
inputWords=input('请输入几个单词,用空格分开 ')
word=sorted(inputWords.split(''))
print(word)

‘陆’ 求python题目解答(初学阶段)

  1. 列表lst中有4个元素,看有几个元素,就看逗号就好了,即便是嵌套列表,在两个逗号之间,也算一个元素,你可以使用len(lst)得到结果。

  2. lst[3]的数据类型为列表,列表用[]表示。

  3. lst[3][1][2]=10

  4. lst[-1][-1][1]=9;

    lst[-1][-1][3]=12;

    lst[-1][-1][-3:]=[9, 10, 12];

    lst[-1][-1][-3:][::-1]=[12, 10, 9] #::-1表示列表反转

‘柒’ python练习题

#!/usr/bin/env/python
#coding:utf-8
#


deffibonacci(n):
"""
.Foryourinformation,:
0,1,1,2,3,5,8,13,21,34,55,89,144,233,...

Thatis,,
twonumbersthatprecedeit.Forexample,
secondnumber,,andsoon...

,thenyourprogramshouldprint/outputinone
linetheFibonaccisequenceupton.
Forexample,ifnis100,yourprogramshouldoutput0,1,1,2,3,5,8,13,21,34,55,89,
Ifnis8,yourprogramshouldoutput0,1,1,2,3,5,8,
"""
def__iter__(n):
a,b=0,1

yielda
ifn==0:
return

yieldb
ifn==1:
return

whilea+b<=n:
a,b=b,a+b
yieldb

returnlist(__iter__(n))if__name__=="__main__":
printfibonacci(35)

‘捌’ python基础题 真心求解

sep="|",字符串中间用"|"隔开
end="#",字符串末尾加上"#"
所以第一个显示Hello|100#,第二个显示您好,所以是
D.Hello|100#您好

‘玖’ python基础题

(1)count = 0
(2)while count < 3:
(3) name = input()
(4) password = input()
(5) if name == 'Kate' and password == '666666':
(6) print("登录成功!")
(7) break
(8) else:
(9) count += 1
(10) if count == 3:
(11) print("3次用户名或者密码均有误!退出程序!")
程序开始执行:
(1):定义int类型变量count并为其赋初始值0,执行语句(2)。
(2):循环语句,若变量count>=3则跳出循环,程序结束。若count<3则进入循环,执行语句(3)。
(3):定义str类型变量name并调用python内置输入函数input(),控制台等待输入,假设输入"Kate",执行语句(4)。
(4):定义str类型变量password并调用python内置输入函数input(),控制台等待输入,假设输入"666666"。执行语句(5)
(5):判断语句,若name变量的__str__()函数的返回值等于字符串'Kate'的__str__()函数的返回值且password变量__str__()函数的返回值等于字符串'666666'的__str__()函数的返回值则执行语句(6),否则执行语句(9),因假设中name变量的值为"Kate",password变量的值为"666666",故执行语句(6)

(6):调用内置输出函数print(self, *args, sep=' ', end='\n', file=None),其中*args对应实参为“登录成功!”,故输出“登录成功”。执行语句(7)

(7):break关键字,跳出循环,程序无后续代码,程序结束。
(9):count变量的值等于count变量的值加1。执行语句(10)
(10):判断count变量的值是否等于3,如果是执行语句(11),否则执行语句(2)
(11):调用内置输出函数print(self, *args, sep=' ', end='\n', file=None),其中*args对应实参为“3次用户名或密码均有误!退出程序”,故输出“3次用户名或密码均有误!退出程序”。执行语句(2),因count>=3,故执行完(2)后程序结束。

阅读全文

与python九百道题相关的资料

热点内容
pdf如何把文字去掉 浏览:591
秦昊的癌症的电影 浏览:294
电脑课上python装代码 浏览:486
可以看那种视频的在线网页 浏览:160
算式1256x56的简便算法 浏览:472
西安家电维修用什么app 浏览:245
服务器如何邀请好友进去 浏览:947
java栈队列区别 浏览:99
公共电影什么意思 浏览:347
港澳电影大胸美女古装剧 浏览:396
王牌战争怎么玩别的服务器 浏览:994
stata画散点图命令 浏览:123
伊波拉病毒全部女演员 浏览:873
华为20升级方舟编译器 浏览:370
android代码中设置图片 浏览:790
pdfmidi 浏览:870
云服务器实例规格有哪些 浏览:529
视觉原理pdf 浏览:923
文件夹应该保存在哪里 浏览:778
汽车app行业怎么样 浏览:454