day4-作业

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

num = 0
for i in range(1, 101):
    num += i
print(num, num/100)

num1 = 0
i = 0
while True:
    i += 1
    if 0 < i < 101:
        num1 += i
    else:
        break

计算1-100之间能3整除的数的和

num = 0
for i in range(1, 101):
    if i % 3 == 0:
        num += i
print(num)

num1 = 0
i = 0
while True:
    i += 1
    if i < 100 and i % 3 == 0:
        num1 += i
    if i > 100:
        break
print(num1)

计算1-100之间不不能被7整除的数的和

num = 0
for i in range(1, 101):
    if i % 7 == 0:
        continue
    num += i
print(num)

i = 0
num1 = 0
while True:
    i += 1
    if i % 7 == 0:
        continue
    elif i > 100:
        break
    else:
        num1 += i
print(num1)

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

n = 9
a, b = 0, 1
for i in range(n-1):
    a, b = b, a + b
print(b)

判断101-200之间有多少个素数,并输出所有素数。判断素数的⽅方法:⽤用⼀一个数分别除2到sqrt(这个 数),如果能被整除,则表明此数不不是素数,反之是素数

num2 = 0
x = 0
for i in range(101, 201):
    for y in range(2, i+1):
        if i % y == 0:
            x += 1
    if x == 1:
        num2 += 1
    x = 0
print(num2)

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

num3 = 0
for i in range(100, 1000):
    bai = i // 100
    shi = i // 10 % 10
    ge = i % 10
    if i == bai**3 + shi**3 + ge**3:
        num3 += 1
        print(i)

有⼀一分数序列列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列列的第20个分数 分⼦子:上⼀一个分数的分⼦子加分⺟母 分⺟母: 上⼀一个分数的分⼦子 fz = 2 fm = 1 fz+fm / fz

numerator = 1
denominator = 1
for i in range(20):
    numerator, denominator = numerator + denominator, numerator
print(numerator, '/', denominator)

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

a = -1
num4 = input('请输入一个正整数:')
places = len(num4)
print(places, '位数')
for i in range(len(num4)):
    print(num4[a])
    a += -1

计算5的阶乘 5!的结果是

num5 = 5
x = 1
for i in range(1, 6):
    x *= i
print(x)

求1+2!+3!+...+20!的和 1.程序分析:此程序只是把累加变成了累乘。

x = 1
sum1 = 0
for i in range(1, 21):
    x *= y
    sum1 += x
print(sum1)

计算 1+1/2!+1/3!+1/4!+...1/20!=?

a = 1
sum2 = 0
for i in range(1, 21):
    a *= i
    sum2 += 1/a
print(sum2)

循环输入大于0的数字进行累加,直到输入的数字为0,就结束循环,并最后输出累加的结果。

sum3 = 0
while True:
    num = float(input('请输入一个数:'))
    sum3 += num
    print(sum3)
    if num == 0:
        break

求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值。

a = int(input('请输入一个数字:'))
num8 = int(input('请输入几个数相加:'))
s = 0
for i in range(1, num8+1):
    t = 0
    for y in range(i):
        t = t + 10**y
    s = s + (a*t)
print(s)

输入三个整数x,y,z,请把这三个数由小到大输出

x = int(input("请输入整数x:"))
y = int(input("请输入整数y:"))
z = int(input("请输入整数z:"))
if x > y > z:
    print(x, y, z)
elif x > z > y:
    print(x, z, y)
elif y > x > z:
    print(y, x, z)
elif y > z > x:
    print(y, z, x)
elif z > x > y:
    print(z, x, y)
else:
    print(z, y, x)

控制台输出三角形

n = int(input('输入值:'))
for i in range(n, 0, -1):
    print('*'*i)

n = 7
for count in range(1, n+1, 2):
   space = int((n - count)/2)
   print(' '*space, end='')
   print('*'*count)

输出9*9口诀。

for i in range(0, 10):
    for y in range(1, i+1):
        if y < i:
            print('{0}*{1}={2}'.format(y, i, i*y), end='  ')
        else:
            print('{0}*{1}={2}'.format(y, i, i * y))

这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?

for big in range(1, 100//3):
    for mid in range(1, 100//2):
        for small in range(2, 100, 2):
            if big + mid + small == 100 and big*3 + mid*2 + small/2 == 100:
                print('大马:', big, '中马:', mid, '小马:', small)

1.一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?

num = 0.08
count = 0
while True:
    num *= 2
    count += 1
    print(num)
    if num >= 8848130:
        break
print('对折', count, '次')

  1. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
n = int(input('几个月;'))
a, b = 0, 1
for i in range(1, n):
    a, b = b, a+b
print(b)

  1. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
num = 20
print(num, '=', end='')
while num > 1:
    for i in range(2, num+1):
        if num % i == 0:
            num = int(num/i)
            if num == 1:
                print(i)
            else:
                print(i, '*', end='')
            break

  1. 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
m = 20
n = 18
yue = 0
for i in range(2, n+1):
    if n % i == 0 and m % i == 0:
        yue = i
print(yue)
multiple = 0
for i in range(1, m+1):
    for j in range(1, n+1):
        if m * j == n * i:
            if multiple == 0:
                multiple = m * j
                print(multiple)
            if multiple < m * j:
                break

  1. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3. 编程 找出1000以内的所有完数
sum = 0
for i in range(2, 1001):
    for j in range(1, i+1):
        if i % j == 0:
            sum += j
            if sum == i:
                print(i)
    sum = 0

6.输入某年某月某日,判断这一天是这一年的第几天? 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

year = int(input("请输年份:"))
month = int(input('请输入月份:'))
day = int(input('请输入几号:'))
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    days = (month - 1)*30 + ((month+1)//2) + 29 + day
    print(days)
else:
    days = (month - 2) * 30 + ((month - 1) // 2) + 28 + day
    print(days)


  1. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值
pw = int(input('请输入四位数的整数:'))
qian_wei = pw // 1000
bai_wei = pw // 100 % 10
shi_wei = pw // 10 % 10
ge_wei = pw % 10
qian_wei = (qian_wei+5) % 10
bai_wei = (bai_wei+5) % 10
shi_wei = (shi_wei+5) % 10
ge_wei = (ge_wei+5) % 10
qian_wei, bai_wei, shi_wei, ge_wei = ge_wei, shi_wei, bai_wei, qian_wei
pw2 = qian_wei*1000 + bai_wei*100 + shi_wei*10 + ge_wei
print(pw2)

你可能感兴趣的:(day4-作业)