day5-homework

基础

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

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的倍数但不是21的倍数的数的总个数

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

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

sum = 0
for i in range(1,101):
    sum += i
print("1到100之间所有数的和为:" + str(sum))
print("1到100之间所有数的平均值为:" + str(sum / 100))

sum = 0
i = 1
while i <= 100:
    sum += i
    i += 1
print("1到100之间所有数的和为:" + str(sum))
print("1到100之间所有数的平均值为:" + str(sum / 100))

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

sum = 0
for i in range(1,101):
    if i % 3 == 0:
        sum += i
print("1到100之间能3整除的数的和为:" + str(sum))

sum = 0
i = 0
while i <= 100:
    if i % 3 == 0:
        sum += i
    i += 1
print("1到100之间能3整除的数的和为:" + str(sum))

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

sum = 0
for i in range(1,101):
    if i % 7 != 0:
        sum += i
print("1-100之间不能被7整除的数的和为:" + str(sum))

sum = 0
i = 0
while i <= 100:
    if i % 7 != 0:
        sum += i
    i += 1
print("1-100之间不能被7整除的数的和为:" + str(sum))

稍微困难

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

n = int(input("请输入想知道斐波那契数列中哪个数的值:"))
while True:
    if n < 1:
        print("输入有误!")
    elif n < 3:
        print("值为1")
        break
    else:
        left = 1
        mid = 1
        for _ in range(0,n-2):
            right = left + mid
            left = mid
            mid = right
        print("值为" + str(right))
        break
    n = int(input("请输入想知道斐波那契数列中哪个数的值:"))

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

num = 0
for i in range(101,201):
    flag = 1
    temp = int(i**0.5) + 1
    while temp > 1:
        if i % temp == 0:
            flag = 0
            break
        temp -= 1
    if flag:
        print(str(i) + "是素数!")
        num += 1
print("101-200之间有" + str(num) + "个素数")

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

for i in range(100,1000):
    if i == (i % 10)**3 + (int(i/10) % 10)**3 + (int(i/100))**3:
        print(str(i)+"是水仙花数!")

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

n = 20
m = 1
z = 2
for i in range(0,20-1):
    temp = m
    m = z
    z = m + temp
print(str(z)+"/"+str(m))

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

num = int(input("请输入一个正整数:"))
bit = 1
n = num
while True:
    n = int(n / 10)
    if n != 0:
        bit += 1
    else:
        print(str(num) + "是" + str(bit) + "位数!")
        break

提高

1.控制台输入年龄,根据年龄输出不同的提示(例如:老年人,青壮年,成年人,未成年,儿童)

while True:
    age = int(input("请输入你的年龄:"))
    if age <= 0:
        print("输入的年龄有误,请重新输入...")
    elif age <= 6:
        print("当前年龄属于儿童!")
        break
    elif age <= 17:
        print("当前年龄属于未成年!")
        break
    elif age <= 40:
        print("当前年龄属于青年!")
        break
    elif age <= 65:
        print("当前年龄属于中年!")
        break
    elif age <= 130 :
        print("当前年龄属于老年!")
        break
    else:
        print("输入的年龄有误,请重新输入...")

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

product = 1
for i in range(2,6):
    product *= i
print("乘 5!的结果是" + str(product))

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

sum=0
product = 1
for i in range(1,21):
    product *= i
    sum += product
print("1+2!+3!+...+20!的和为" + str(sum))

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

sum=0
product = 1
for i in range(1,21):
    product *= i
    sum += 1/product
print("1+1/2!+1/3!+1/4!+...1/20!为" + str(sum))

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

sum = 0
while True:
    num = int(input("请输入须相加的数:"))
    if num == 0:
        print("所输数字和为" + str(sum))
        break
    else:
        sum += num

6.例如2+22+222+2222+22222(此时共有5个数相加),a = 2,就计算2+22的和。a = 5, 计算5+55+555+5555+5555。a只能是1-9

a = input("请输入n:")
sum=0
num=a
for i in range(1,int(a)+1):
    sum += int(num)
    num += a
print(sum)

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

num = []
for i in range(0,3):
    num.append(int(input("请输入一个数:")))
num.sort()
print("这三个数由小到大排序是",num[0],num[1],num[2])

8.控制台输出三角形

a.根据n的值的不同,输出相应的形状
n = 5时             n = 4
*****               ****
****                ***
***                 **
**                  *
*
n = int(input("请输入n值:"))
while n:
    i = n
    while i:
        print("*", end="")
        i -= 1
    n -= 1
    print("\n", end="")
b.根据n的值的不同,输出相应的形状(n为奇数)
n = 5               n = 7
    *                    *
   ***                  ***
  *****                *****
                      *******
n = int(input("请输入n值:"))
i=1
str1 = '*'
print(str1.center(50))
while i <= n-2:
    str1 += '**'
    print(str1.center(50))
    i += 2

9.输出9*9口诀。 1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

乘法口诀表

for i in range(1,10):
    for j in range(1,10):
        print("%dx%d=%d" % (i,j,i*j),end=' ')
    print('\n')

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

for small in range(0,101,2):
    for mid in range(0,101):
        big = 100 - small - mid
        if big < 0:
            break
        sum = big * 3 + mid * 2 + small * 0.5
        if sum == 100:
            print("大马有:%d只,中马有:%d只,小马有:%d只" % (big, mid, small))
            break

11.我国古代数学家张邱建在《算经》中出了一道“百钱买百鸡”的问题,题意是这样的: 5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只雏鸡。现在用100文钱买100只鸡,那么各有公鸡、母鸡、雏鸡多少只?请编写程序实现。

for small in range(0,101,3):
    for hen in range(0,101):
        cock = 100 - small - hen
        if cock < 0:
            break
        sum = cock * 5 + hen * 3 + small / 3
        if sum == 100:
            print("公鸡有:%d只,母鸡有:%d只,雏鸡有:%d只" % (cock, hen, small))
            break

12.小明单位发了100元的购物卡,小明到超市买三类洗化用品,洗发水(15元),香皂(2元),牙刷(5元)。要把100元整好花掉,可如有哪些购买结合?

for shampoo in range(0,7,1):
    for soap in range(0,51):
        toothbrushMoney = 100 - shampoo * 15 - soap * 2
        if toothbrushMoney < 0:
            break
        if toothbrushMoney % 5 == 0:
            toothbrush = toothbrushMoney / 5
            print("洗发水有:%d瓶,香皂有:%d个,牙刷有:%d只" % (shampoo, soap, toothbrush))

你可能感兴趣的:(day5-homework)