Python 实验5 循环结构

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五 循环结构(续)

【实验目的】

1.掌握range()函数的使用

2. 掌握For 语句的使用。

3.掌握循环嵌套的使用。

4.掌握一些常用的算法(求素数、穷举法、求和与乘积、递推法)。

【实验内容】 000000000

1、 填空

(1) 在命令行中显示1 到10的数字 range(1,11) 。 (2) 在命令行中显示 1到10的所有偶数 range(2,11,2) 。

(3) 显示所有的大写字符。

for i in range(65,91) :

print chr(i)

(4) 显示1--100能被3整除的数,并且每5个数打印一行。

i=0 ‘记录能被3整除的个数

for j in range(1,101):

if j%3==0:

print j,

i+=1

if i%5==0:

print

2、输出斐波那契级数1、1、2、

3、5、8、13……,此级数项的规律是:前两项的值各为1,从第3项起,每一项是前2项的和。(要求一行输出6项)。

(1) 当某项的数值大于或等于30000时结束。

(2) 求前100项之和。

(1)1 1 2 3 5 8

13 21 34 55 89 144

233 377 610 987 1597 2584

4181 6765 10946 17711 28657

(2)927372692193078999175

(1) a=1 b=1 print a,b, i=2 #计数 while True: i+=1 #计数:第i 次 c=a+b a=b b=c if c>==30000: break print c, if i%6==0: print (2) a=1 b=1 sum=2 i=2 #计数 while True: i+=1 #计数:第i 次 c=a+b a=b b=c sum+=c if i==100: #完成第100次求和后退出循环 break print sum

3、编写程序,输入一个数,判断该数是否为完数。例如6是一个完数,因为6=1+2+3。x=input("Enter an integer:")

i=1

while True:

x=x-i

i+=1

if x==i:

print "A perfect number."

break

if x

print "Not a perfect number."

break

4、完成程序,使之能在窗体上显示有规律的图形。

for i in range(1,10):

print (format((2*i-1)*str(i),"^17"))

x="*"

for i in range(1,8):

if i<=4:

print (format((2*i-1)*x,"^7"))

if i>4:

print (format((15-2*i)*x,"^7"))

*号题变式:

x=raw_input("Enter a character:")

c=input("Enter the linage(an odd number):")

d=str(c+1)

for i in range(1,c+1):

if i<=c/2+1:

print (format((2*i-1)*x,"^"+d))

if i>c/2+1:

print (format((2*c+1-2*i)*x,"^"+d))

5、编写程序,显示所有的水仙花数。(难点,嵌套循环)

(1)最优法:

for i in range(100,1000):

c=i%10 #个位数

b=i//10%10 #十位数

a=i//10//10 #百位数

if i==a**3+b**3+c**3:

print i

(2)

for i in range(1,10):

for j in range(0,10):

for k in range(0,10):

if 100*i+10*j+k==i**3+j**3+k**3:

print i**3+j**3+k**3

(3)

for i in range(100,1000):

a=i/100

b=(i-100*a)/10

c=i-100*a-10*b

if i==a**3+b**3+c**3:

print i

6、编程实现求1—1000中所有的素数并打印,要求每行打印10个元素。c=0

for x in range(1,1000):

if x==1:

continue

for i in range(2,x):

if x%i==0:

break

else:

print x,

c+=1

if c%10==0:

print

7、输入一系列数字,并求和与求平均数.

要求:(1)可以进行多次输入,并以“.“作为输入结束的标志。

(2)有容错功能,当输入非数字时,提示错误,并可以等待进行下一次的输入

(3)输入完成后可以进行求和与求平均数,并打印。

c=0

sum=0

while True:

x=raw_input("Enter:")

while str.isdigit(x)==False and x!=".":

x=raw_input("Error.Please enter a number:")

if x==".":

break

sum=sum+float(x)

c+=1

ave=sum/c

print "sum=%d"%sum,"average=%d"%ave

8、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

程序分析:采取逆向思维的方法,从后往前推断。

i=0

y=1

while True:

i=i+1

y=(y+1)*2

if i==10:

flag=False

break

print y

附加:兔子问题——古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

sum=2

m=input("Enter the month:")

if m==1 or m==2:

print sum

else:

temp=2

for i in range(3,m+1):

sum=sum+2*temp

temp=sum-2*temp

print sum

相关文档
最新文档