Python经典编程30例文档格式.docx
- 文档编号:18094725
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:29
- 大小:245.52KB
Python经典编程30例文档格式.docx
《Python经典编程30例文档格式.docx》由会员分享,可在线阅读,更多相关《Python经典编程30例文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
{}="
.format(n),end='
whilen!
=1:
x+=1
whilen%x==0:
n/=x
ifflag:
flag=False
print(x,end='
else:
*{}"
.format(x),end='
elifn==1:
1=1"
elifn==0:
0=0"
4、编写程序,验证100以整数的哥德巴赫的猜想:
任何一个充分大的偶数(大于等于6)总可以表示成两个素数之和。
如10=5+5,12=5+7
defisprime(x):
ifx==2:
ifx%2==0:
n=3
whilen*n<
=x:
ifx%n==0:
n+=2
defgedb(x):
ifx<
4orx%2!
=0:
输入的数据不正确,应该是大于或等于4的偶数"
return
ifx==4:
print('
4=2+2'
forninrange(3,x,2):
ifisprime(n)andisprime(x-n):
print(x,'
='
n,'
+'
x-n)
defmain():
x=int(input("
输入大于或等于4的偶数"
gedb(x)
main()
5、编写程序,输出所有由1、2、3、4这4个数字组成的素数,并且在每个素数中每个数字只使用一次。
defexercise3_5():
s=0
foriinrange(1,5):
forjinrange(1,5):
forkinrange(1,5):
forlinrange(1,5):
if(i!
=j)and(i!
=k)and(i!
=l)and(j!
=k)and(j!
=l)and(k!
=l):
s=i*1000+j*100+k*10+l
ifisprime(s)==True:
print(s)
exercise3_5()
6、编写程序,求所有水仙花数。
水仙花数是指一个三位数,其个位、十位、百位3个数字的立方和等于这个数本身。
并断定有没有四位数的水仙花数?
t=0
s=0#统计水仙花数的个数
foriinrange(100,1000):
j=int(i/100)
k=int((i-100*j)/10)
l=i-j*100-k*10
ifi==j*j*j+k*k*k+l*l*l:
print(i)
s+=1
print(s)
foriinrange(1000,10000):
j=int(i/1000)
k=int((i-1000*j)/100)
l=int((i-j*1000-k*100)/10)
m=i-1000*j-100*k-10*l
ifi==j*j*j+k*k*k+l*l*l+m*m*m:
t+=1
ift==0:
Nosuchnumber"
7、编写程序,生成一个包含100个随机数的列表,然后运用切片方法对其中偶数下标的元素进行降序排列,奇数下标的元素不变。
解法一:
list_1=[]
#生成随机整数列表
foriinrange(20):
list_1.append(random.randint(0,100))
生成的列表为:
list_1)
#从首位开始索引下标为偶数位元素
foriinrange(0,len(list_1),2):
#从上一个偶数位的下一个偶数位元素开始索引
foruinrange((i+2),len(list_1),2):
#防止索引超出围
ifi<
len(list_1)-2:
#比较索引元素大小
iflist_1[i]<
=list_1[u]:
#互换元素位置
list_t=list_1[i]
list_1[i]=list_1[u]
list_1[u]=list_t
print('
排序后列表为:
解法2:
random.seed()
lst=[random.randint(0,101)foriinrange(20)]
print(lst)
defbubble_sort(lst):
n=len(lst)
foriinrange(n//2):
forjinrange(0,n-i-2,2):
iflst[j]<
lst[j+2]:
lst[j],lst[j+2]=lst[j+2],lst[j]
bubble_sort(lst)
8、编写程序,输入行数,输出一个如下图所示的由“*”构成的等腰三角形(提示:
用setw()函数)。
foriinrange(6):
forkinrange(5-i):
end="
forjinrange(2*i+1):
*"
end="
print()
9、编写程序,A、B、C、D、E共5人夜里去捕鱼,很晚才各自找地方休息。
日上三竿,A第1个醒来,他将鱼均分成5份,把多余的一条扔掉,拿走自己的一份。
B第2个醒来,他也将鱼均分成5份,将多余的1条扔掉,拿走自己的一份。
C、D、E如此类推。
问他们合伙至少捕了多少条鱼?
解法一
设总共捕了x条鱼,每个人看到的鱼共有Xn条,则:
X1=x
X2=(X1-1)/5*4
X3=(X2-1)/5*4
X4=(X3-1)/5*4
X5=(X4-1)/5*4
其中,(Xn-1)%5=0必定成立,即题中所提到的,扔掉一条,取五分之一。
那么就有x,使得递推所得到的项满足(Xn-1)%5=0即可。
deffish(n,x):
if(x-1)%5==0:
ifn==1:
return1
returnfish(n-1,(x-1)/5*4)
return0
x=6
whileTrue:
x+=5
iffish(5,x)==1:
print(x)
foriinrange(1,6):
第{0}人看到的鱼有{1}条"
.format(i,x))
x=int((x-1)/5*4)
解法二反向递推法:
解决E和D的问题(规模为2),就可以解决D和C的问题,也就是E、D、C的问题(规模为3),最后解决所有问题。
由X(n+1)=(Xn-1)/5*4得,Xn=X(n+1)*5/4+1
fish=[0,0,0,0,1]
i=0
fish[4]+=5
foriinrange(3,-2,-1):
iffish[i+1]%4!
=0:
fish[i]=int(fish[i+1]*5/4+1)
iffish[i]%5!
ifi==-1:
总共捕了"
fish[0],"
条鱼"
foriinrange(0,5):
第{0}人看到{1}条鱼"
.format(i+1,fish[i]))
10、编写程序,计算斐波拉契数列的后项与前项的比:
1/1,2/1,3/2,5/3,8/5,13/8,......第n项的值,并观察随着n的增加,比值趋向什么值?
deffblq(x):
ifx==1orx==2:
returnfblq(x-1)+fblq(x-2)
forkinrange(1,30):
print(fblq(k+1)/fblq(k))
11、编写程序,计算卢卡斯数列的后项与前项的比:
1/2,3/1,4/3,7/4,11/7,18/11,......第n项的值,并观察随着n的增加,比值趋向什么值?
卢卡斯数列的定义为:
L
(1)=2,L
(2)=1,L(n)=L(n-1)+L(n-2)(n>
=2),前9个数为:
2、1、3、4、7、11、18、29、47
defLKS(x):
ifx==1:
return2
elifx==2:
returnLKS(x-1)+LKS(x-2)
print(LKS(k+1),"
/"
LKS(k),"
="
LKS(k+1)/LKS(k))
12、编写函数,用于判断输入的字符串是否由字母和数字构成,并统计字符个数。
importstring
defchartype(ch):
字符类型判断"
ifchinstring.ascii_letters:
return'
ascii_letters'
elifchinstring.digits:
digits'
elifchinstring.whitespace:
whitespace'
other'
defchtypecount(s):
字符串类型计数器"
counter={}
forctinmap(chartype,s):
counter.setdefault(ct,0)
counter[ct]+=1
returncounter
forchtype,tsinchtypecount(input("
Enterastring:
)).items():
print(chtype,ts)
解法二
sum_d=0
sum_alpha=0
sum_other=0
sum_chinese=0
#s="
123abcdef中klGD国abcde伟大"
s=input("
请输入字符串:
foriinrange(0,len(s)):
if'
0'
<
=s[i]<
9'
:
sum_d+=1
elif'
a'
z'
sum_alpha+=1
\u4e00'
<
=s[i]<
='
\u9fff'
sum_chinese+=1
sum_other+=1
数字:
sum_d,"
个"
字母:
sum_alpha,"
其他符号:
sum_other,"
汉字:
sum_chinese,"
13、编写程序,计算字符串中单词的个数。
str=input("
请您输入一串字符串:
str1=str.strip()#去掉字符串前后空格
index=0
count=0
whileindex<
len(str1):
whilestr1[index]!
="
#当不是空格是,下标加1
index+=1
ifindex==len(str1):
#当下标大小跟字符串长度一样时结束当前循环
count+=1#遇到空格加1
whilestr1[index]=="
#当有两个空格时,下标加1,防止以一个空格算一个单词
输入的字符串中一共有count=%d个单词"
%count)
14、编写程序,用户输入一个字符串,将偶数下标位的字符提出来合成一个串A,再将奇数下标位置的字符提取出来合成串B,再将A和B连接起来输出。
c=input("
请输入字符"
);
A="
B="
forainc[:
2]:
A=A+a
forbinc[1:
len(c):
B=B+b
n=A+B
print(n)
15、编写程序,统计字符串中出现的每个字母出现次数,并输出成一个字典,如{‘a’:
3,’A’:
5,’b’:
2}
#a="
aAsmr3idd4bgs7Dlsf9eAF"
a=input("
请输入字符串:
deffun1_2(x):
#1&
2
#x=x.lower()#大小写转换
num=[]
dic={}
foriinx:
ifi.isdigit():
#判断如果为数字,请将a字符串的数字取出,并输出一个新的字符串
num.append(i)
#2请统计a字符串出现每个字母的出现次数(忽视大小写),并输出一个字典。
例:
{'
3,'
b'
1}
ifiindic:
continue
dic[i]=x.count(i)
new='
.join(num)
print("
thenewnumbersstringis:
+new)
thedictionaryis:
%s"
%dic)
fun1_2(a)
deffun3(x):
x=x.lower()
new3=[]
ifiinnew3:
new3.append(i)
print('
.join(new3))
fun3(a)
16、编写程序,统计字符串中出现的每个单词出现次数,并输出成一个字典。
str1="
tomorrowisagooddaytomorrowisabaddaytomorrowisasunnyday"
list1=str1.split("
dict1={}
forelementinlist1:
ifelementnotindict1:
dict1[element]=1
dict1[element]+=1
print(dict1)
value=dict1.get(element)#如果不存在则返回None
ifvalue==None:
17、编写程序,将输入的一串字符从前到后每个字符向后移动一位,最后一个字符存放到第一个位置,并输出结果。
arr=[]
r="
m=input("
请输入"
forstringinm:
arr.append(string)
last=arr[-1]
arr.insert(0,last)
arr.pop()
forstrinarr:
r=r+str
print(r)
18、编写程序,把一段英文中字母“a”改写成“A”
#输入一串字符,将大写字母转换成小写字母,小写字母转换为大写字母
defLtoU():
a=input("
请输入字符:
b=[]
fornina:
if"
a"
=n<
z"
b.append(n.upper())
elif"
A"
Z"
:
b.append(n.lower())
b.append(n)
.join(b))
defaToA():
ifn=="
aToA()
19、编写程序,把一段英文中每句话的首个单词的第一个字母改为大写。
defconvert_initial(old:
str)->
str:
new="
i=0
whilei<
len(old):
if(i==0)or(old[i-1]=="
):
new+=old[i].upper()
new+=old[i]
i+=1
returnnew
#print(convert_initial("
Iamateacher,andyouarestudent."
请输入一个英文句子:
print(convert_initial(s))
20、编写程序,将一段英文中有连续重复的单词只保留一个。
l=[]
s="
helloworldhellopython"
foriins.split("
ifinotinl:
l.append(i)
result="
.join(l)
print(result)
print()
defonlyOne(x):
m=[]
forjinx.split("
ifjnotinm:
m.append(j)
result="
.join(m)
returnresult
t=input("
请输入一个英文句子:
print(onlyOne(t))
21、编写程序,输入一段英文,输出英文中所有长度为3个字母的单词。
importre
x=input('
Pleaseinputastring:
pattern=pile(r'
\b[a-zA-Z]{3}\b'
print(pattern.findall(x))
22、编写程序,输入一段英文,输出字符数最多的单词。
words=input("
Inputthewords:
l=re.split('
[\.]+'
words)#使用空格分隔词语,得到各个单词
print(l)
i=0#这里我设置的是计数器
s="
foriinl:
iflen(i)>
len(s):
#如果单词的长度为3输出
s=i
23、编写程序,要求输入一段英文,以及此段中的一个单词和另外一个单词,然后显示用第二个单词替换第一个单词后的句子。
str='
Theweathertodayisreallygood.'
fword=input('
请输入要查找的单词'
rword=input('
请输入要替换的单词'
c=str.count(fword)
ifc>
0:
str=str.replace(fword,rword)
替换后的句子为:
str)
else:
句子中没有要查找的单词'
24、编写自定义函数,实现从屏幕输入3个数,并求出其中最大值。
defmyfun():
s=[]
foriinrange(0,3):
t=int(input("
请输入一个数:
s.append(t)
print(max(s))
myfun()
25、编写函数,模仿置函数sort()
s=[1,-3,2,6,8,11,-5,28,88]
defmysort(x):
foriinrange(0,len(x)):
t.append(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 经典 编程 30