day4-循环-homework

2018-08-23  本文已影响0人  rzlong
1.读程序
numbers=1  
for i in range(0,20):  
    numbers*=2  
print(numbers)  

2^20

2.读程序
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)

找出 1-100之间能整除3或7但是又不能被这两者整除的数 的个数

3.求1到100之间所有数的和、平均值
# for
sum1 = 0
mean1 = 0
for n in range(1,101):
    sum1 += n
mean1 = sum1/100 
print('for: 1-100之间所有数的和:%d,平均值:%d' % (sum1,mean1))
# while
sum11 = 0
mean11 = 0
numa = 1
while numa <= 100:
    sum11 += numa
    numa +=1
mean11 = sum11/100
print('while: 1-100之间所有数的和:%d,平均值:%.2f' % (sum11,mean11))

结果:
for: 1-100之间所有数的和:5050,平均值:50.50
while: 1-100之间所有数的和:5050,平均值:50.50
4.计算1-100之间能3整除的数的和
# for
sum2 = 0
for n in range(1,101):
    if not n%3:
        sum2 += n
print('for: 1-100之间能3整除的数的和:%d' % sum2)
# while
sum21 = 0
num21 = 1
while num21 <= 100:
    if not num21%3:
        sum21 += num21
    num21 += 1
print('while: 1-100之间能3整除的数的和:%d' % sum21)

结果:
for: 1-100之间能3整除的数的和:1683
while: 1-100之间能3整除的数的和:1683
5.计算1-100之间不能被7整除的数的和
# for
sum3 = 0
for n in range(1,101):
    if n%7:
        sum3 += n
print('for: 1-100之间不能被7整除的数的和:%d' % sum3)
# while
sum31 = 0
num31 = 1
while num31 <= 100:
    if num31%7:
        sum31 += num31
    num31 += 1
print('while: 1-100之间不能被7整除的数的和:%d' % sum31)

结果:
for: 1-100之间不能被7整除的数的和:4315
while: 1-100之间不能被7整除的数的和:4315


1.求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34......
def fibonacci(n):
    fibonacci_list=[]
    if n == 1:
        fibonacci_list = [1]
    elif n == 2:
        fibonacci_list = [1,1]
    else:
        fibonacci_list = [1,1]
        for num in range(3,n+1):
            fibonacci_list.append(fibonacci_list[num-2]+fibonacci_list[num-3])
    print('斐波那契数列为:%s, 第%d个数的值: %d' % (str(fibonacci_list),n,fibonacci_list[n-1]))

if __name__ == '__main__':
    fibonacci(8)

结果:
斐波那契数列为:[1, 1, 2, 3, 5, 8, 13, 21], 第8个数的值: 21
2.判断101-200之间有多少个素数,并输出所有素数。判断素数的方法:用一个数分别除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数
def prime_number(start,end):    
    prime_number_count = []
    for num in range(start,end+1):
        mark = 1 # mark = 1 是素数
        for n in range(2,num):
            if not num%n:
                mark = 0
                break
        if mark:
            prime_number_count.append(num)
    print('%d-%d之间的素数:%s, 共%d 个'%(start,end,str(prime_number_count),len(prime_number_count)))

if __name__ == '__main__':
    prime_number(101,200)

结果:
101-200之间的素数:[101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199], 共21 个
3.打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153 = 1^3 + 5^3 + 3^3
def Narcissistic_number():
    Narcissistic_number_list = []
    for num in range(100,1000):
        one = num % 10 #个位
        decade = num // 10 % 10 #十位
        hundred = num // 100 #百位
        num_s = one**3 + decade**3 + hundred**3
        if num_s == num:
            Narcissistic_number_list.append(num_s)
    print('所有水仙花数:%s'% Narcissistic_number_list )

if __name__ == '__main__':
    Narcissistic_number()

结果:
所有水仙花数:[153, 370, 371, 407]
4.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的第20个分数分子:上一个分数的分子加分母 分母: 上一个分数的分子 fz = 2 fm = 1 fz+fm / fz
def fractional_sequence(n):
    fz = 2
    fm = 1
    fractional = 0
    fractional_list = [2]
    for num in range(2,n+1):
            fractional = (fz + fm)/fz
            fractional_list.append(fractional)
            (fz, fm) = (fz+fm, fz) 
    print('分数序列:%s, 第%d个分数的值: %s'%(fractional_list,n,fractional_list[-1]))

if __name__ == '__main__':
    fractional_sequence(20) # n > 1

结果:
分数序列:[2, 1.5, 1.6666666666666667, 1.6, 1.625, 1.6153846153846154, 1.619047619047619, 1.6176470588235294, 1.6181818181818182, 1.6179775280898876, 1.6180555555555556, 1.6180257510729614, 1.6180371352785146, 1.618032786885246, 1.618034447821682, 1.6180338134001253, 1.618034055727554, 1.6180339631667064, 1.6180339985218033, 1.618033985017358], 第20个分数的值: 1.618033985017358

5.给一个正整数,要求:1、求它是几位数 2.逆序打印出各位数字
def positive_integer(num):
    num_str = str(num)
    num_list = list(num_str)
    print('正整数是%d位数, 逆序打印: %s 或 %s' % (len(num_str),num_list[::-1],num_str[::-1]))

if __name__ == '__main__':
    positive_integer(2589)

结果:
正整数是4位数, 逆序打印: ['9', '8', '5', '2'] 或 9852
上一篇 下一篇

猜你喜欢

热点阅读