美文网首页
day05.作业 2018-12-28

day05.作业 2018-12-28

作者: 绝世小丑 | 来源:发表于2018-12-28 21:48 被阅读0次

一、基础题

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

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

功能:算出 number 乘以 2 的 20 次方等于多少。

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 和 7 整除。

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

1. 求1到100之间所有数的和、平均值

用 for 来实现:

sum1 = 0
for num in range(101):
    sum1 = sum1 + num
print('1到100之间所有数的和为:', sum1)
print('1到100之间所有数和的平均值为:', sum1 / 100)
# 运行结果为:1到100之间所有数的和为: 5050
#           1到100之间所有数和的平均值为: 50.5

用 while 来实现:

sum1 = 0
num = 0
while num < 100:
    num += 1
    sum1 = sum1 + num
print('1到100之间所有数的和为:', sum1)
print('1到100之间所有数和的平均值为:', sum1 / 100)
# 运行结果为:1到100之间所有数的和为: 5050
#           1到100之间所有数和的平均值为: 50.5
2. 计算1-100之间能被3整除的数的和

用 for 来实现:

sum1 = 0
for num in range(101):
    if num % 3 == 0:
        sum1 = sum1 + num
print('1-100之间能被3整除的数的和为:', sum1)
# 运行结果为:1-100之间能被3整除的数的和为:1683

用 while 来实现:

sum1 = 0
num = 1
while num <= 100:
    num += 1
    if num % 3 == 0:
        sum1 = sum1 + num
print('1-100之间能被3整除的数的和为:', sum1)
# 运行结果为:1-100之间能被3整除的数的和为:1683
3. 计算1-100之间不不能被7整除的数的和

用 for 来实现:

sum1 = 0
for num in range(101):
    if num % 7 != 0:
        sum1 = sum1 + num
print('1-100之间不能被7整除的数的和为:', sum1)
# 运行结果为:1-100之间不能被7整除的数的和为: 4315

用 while 来实现:

sum1 = 0
num = 0
while num < 100:
    num += 1
    if num % 7 != 0:
        sum1 = sum1 + num
print('1-100之间不能被7整除的数的和为:', sum1)
# 运行结果为:1-100之间不能被7整除的数的和为: 4315

二、稍微困难题

1. 求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34....

n = int(input('请输入斐波那契数列第n个数的序号 n:'))
i = 1
num1 = 1
num2 = 1
zhi = 1
while i < n - 1:
    i += 1
    zhi = num1 + num2
    num1 = num2
    num2 = zhi
print('斐波那契数列第n个数的值为:', zhi)
# 运行结果为:请输入斐波那契数列第n个数的序号 n:7
#           斐波那契数列第n个数的值为: 13

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

判断素数的方法:用一个数分别除2到sqrt(这个数),如果能被整除,则表明此数不不是素数,反之是素数
用 for 循环:

for x in range(101, 201):
    for a in range(2, x):
        if x % a == 0:
            break
    else:
        print('%d是素数!' % x)

用 while 循环:

for x in range(101, 201):
    a = 2
    while a < x:
        if x % a == 0:
            break
        else:
            a += 1
    if a == x:
        print('%d是素数!' % x)
# 运行结果:
# 101是素数!
# 103是素数!
# 107是素数!
# 109是素数!
# 113是素数!
# 127是素数!
# 131是素数!
# 137是素数!
# 139是素数!
# 149是素数!
# 151是素数!
# 157是素数!
# 163是素数!
# 167是素数!
# 173是素数!
# 179是素数!
# 181是素数!
# 191是素数!
# 193是素数!
# 197是素数!
# 199是素数!

3. 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153 = 1^3 + 5^3 + 3^3

print('水仙花数有:')
for x in range(101, 1000):
    gewei = x % 10
    shiwei = x // 10 % 10
    baiwei = x // 100 % 10
    if x == gewei ** 3 + shiwei ** 3 + baiwei ** 3:
        print(x)
# 运行结果:
# 水仙花数有:
# 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

i = 1
fz = 2
fm = 1
n = int(input('请输入一个 n 值:'))
while i < n:
    fs = fz / fm
    x = fz
    fz = fz + fm
    fm = x
    i += 1
print('分数序列的第n个数为:', fz, '/', fm)
# 运行结果:
# 请输入一个 n 值:20
# 分数序列的第n个数为: 17711 / 10946

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

num1 = int(input('请输入一个正整数:'))
ws = 0
i = 1
while num1 // i % 10 != 0:
    ws += 1
    i *= 10
print('该数为 %d 位数。' % ws)
nx = 0
i = 10 ** ws
j = 0
while ws >= 0:
    nx = nx + num1 // i % 10 * 10 ** j
    i /= 10
    j += 1
    ws -= 1
print('该数的逆序输出为:', int(nx / 10))
# 请输入一个正整数:123456789
# 该数为 9 位数。
# 该数的逆序输出为: 987654321

相关文章

网友评论

      本文标题:day05.作业 2018-12-28

      本文链接:https://www.haomeiwen.com/subject/xcgelqtx.html