day5-homework
2018-09-29 本文已影响0人
Voyaserfuerte
基础
读程序,总结程序的功能:
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))