2019-04-18--循环结构作业

作业一:

读程序,总结程序的功能:

1.将数字从1开始进行20次乘2操作,即求2的20次方。

numbers=1 
for i in range(0,20): 
 numbers*=2 
print(numbers)

2.统计在1--100的数字中的仅能被3整除或者仅能被7整除的数字的个数,并输出个数。

summation=0
num=1
while num<=100:
    if (num%3==0 or num%7==0) and num%21!=0:
        summation += 1
    num+=1
print(summation)

编程实现(for和while各写⼀遍):

  1. 求1到100之间所有数的和、平均值
  2. 计算1-100之间能3整除的数的和
  3. 计算1-100之间不能被7整除的数的和

1、
for循环实现过程:

sum1 = 0
for n in range(101):
    sum1 += n
print('总和:',sum1,'平均值:',sum1/100)

while循环实现过程:

sum2 = 0
n = 0
while n < 100:
    n += 1
    sum2 += n
print('总和:',sum2,'平均值:',sum2/100)

2、
for循环实现过程:

sum3 = 0
n = 0
for n in range(101):
    if n % 3 == 0:
        sum3 += n
print('和是:\n',sum3)

while循环实现过程:

sum4 = 0
n = 1
while n <= 100:
    if n % 3 == 0:
        sum4 += n
         n +=1
print('和是:\n',sum4)

3、
for循环实现过程

sum5 = 0
for n in range(100):
    if n % 7 == 0:
        continue
    sum5 += n
print(sum5)

while循环实现过程:

sum6 = 0 
n = 1 
while n <= 100:
    if n % 7 == 0 :
        continue
    sum6 += n
print(sum6)

作业二、

1、求斐波那契数列中第n个数的值

规律:从第二个数开始,后面的数的值就是前两个数的值的和。

current = 1 #当前的数字,即为斐波那切数列第一位数1.
pre_1 = 1   #前一个数的变量表示和赋值
pre_2 = 0   #前面第二个数的变量表示和赋值
n = int(input())
for x in range(n-1):   
#n-1的原因是从第一个数字开始算起,到第n个数字,只需要进行右移n-1的操作。
#而循环体内的语句描述的就是右移一次的操作
    current = pre_1 + pre_2
    pre_2 = pre_1
    pre_1 = pre_1 + pre_2
print('第',n,'个数是',current)

2、 判断101-200之间有多少个素数,并输出所有素数。

思路:
1)、先取出101--200的每一个数字
2)、看从2~N-1之间有没有一个数能够被N整除,只要有一个就不是素数,一个都没有就说明是素数

正确答案1:

for num in range(101,201):      #首先要提取出所有101--200之间的数字.
    for i in range(2,num):      #取出2~N-1的数用于素数判断
        if num % i == 0:        #素数判断操作
            #print(num,'不是素数')
            break               
#取余为0即非素数,立即break可节省算力,避免进行(i+1)~(num-1)范围内的素数判断
    else:
        print(num,'是素数')        #取i~(num-1)计算取余都不为0,那就是素数。

正确答案2(新的程思想):

for num in range(101,201):      #首先要提取出所有101--200之间的数字.
    is_prime = True         #先假设这个数字是素数。
    for i in range(2,num):      #取出2~N-1的数用于素数判断
        if num % i == 0:        #如果能整除,说明不是素数
            is_prime = False    #若非素数,就对is_prime值进行修改。
            break               #避免不必要的(i+1)~(num-1)的运算,节约算力。
    if is_prime:                #此时可以根据is_prime的值,进行素数判断并输出。
        print(num,'是素数')

下面是自己的错误代码和代码出现的问题:

for num in range(101,201): 
    for i range(2,num):      #for _ in range(n)语法错误,少个in
        if num % i != 0:     #从这里开始素数判断条件都错误。所以整个程序错误

3、有分数序列:1/1,2/1 ,3/2 ,5/3 ,8/5 ,13/8 ,21/13...求出这个数列的第20个分数。

思路分析:
分子:前一个分数的 分子+分母 的和
分母:前一个分数的 分子
思路:用两个变量保存前一个分数的分子和分母,然后不断更新分子分母。

fen_z = 1
fen_m = 1
n = 20
for x in range(n):
    fen_z,fen_m = fen_m+fen_z,fen_z   #这种连续赋值写法仅在Python语法中才成立。
print(fen_z,'/',fen_m)
#像如下这样的写法会有错误的计算,因为在如下第一行,已经改变了分母的值,
#第二行分子获得的值中分母的值是改变后的分母的值。
    #fen_m = fen_z
    #fen_z = fen_m + fen_z

4、给1个正整数,要求:1)、求它是几位数 2).逆序打印出各位数字

while True:
    n = int(input('请输入一个需要判断的数字:'))
    i = 0
    while n != 0:
        n //= 10
        i += 1
    print('是',i,'位数字')’’
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 8月22日-----字符串相关 2-3 个性化消息: 将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消...
    future_d180阅读 4,553评论 0 1
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 9,046评论 0 2
  • 第一章数和数的运算 一概念 (一)整数 1整数的意义 自然数和0都是整数。 2自然数 我们在数物体的时候,用来表示...
    meychang阅读 7,678评论 0 5
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    开心的锣鼓阅读 8,580评论 0 9
  • 一.day5作业 读程序,总结程序的功能: 1. numbers=1 for i in range(0,20): ...
    魅影_0d2e阅读 4,709评论 0 0

友情链接更多精彩内容