"""author = Zard""
一般:
编程实现(for和while各写一遍):
- 求1到100之间所有数的和、平均值
- 计算1-100之间能3整除的数的和
- 计算1-100之间不能被7整除的数的和
编程实现1
sum1 = 0
for i in range(1,101):
sum1 += i
avg = sum1 / 100
print(sum1,avg)
编程实现2
sum2 = 0
for x in range(1,101):
if x % 3 == 0:
sum2 += x
print(sum2)
老师优解:
sum2 = 0
for x in range(0,101,3):
sum2 += x
print(sum2)
编程实现3
sum3 = 0
for y in range(1,101):
if y % 7 != 0:
sum3 += y
print(sum3)
稍微困难:
2. 判断101-200之间有多少个素数,并输出所有素数。判断素数的方法:⽤一个数分别除2到sqrt(这个 数),如果能被整除,则表明此数不不是素数,反之是素数
count = 0
for m in range(101,201):
for j in range(2,int(sqrt(m)+1)):
if m % j == 0:
break
else:
print(m)
count += 1
print(count)
老师解法:
count = 0
for m in range(101,201):
flag = True # 假设取出来的都是素数
for j in range(2,int(sqrt(m)+1)):
if m % j == 0:
flag = False # 如果在2~m-1之间有一个数能被m整除,假设不成立
break
if flag:
count += 1
print(m,'是素数')
print('101-200之间素数的个数:',count)
3. 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153 = 1^3 + 5^3 + 3^3
for water in range(100,1000):
a = water // 100
b = water // 10 % 10
c = water % 10
if water == a**3 +b**3+c**3:
print(water)
4. 有一分数序列:(1/1),2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的第20个分数
分⼦子:上⼀一个分数的分⼦子加分⺟母 分⺟母: 上⼀一个分数的分⼦子
fz = 2 fm = 1 fz+fm / fz
fenzi = 1
fenmu = 1
for _ in range(20):
fenzi,fenmu = fenzi+fenmu,fenzi
print(fenzi,'/',fenmu)
1. 求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34....
pre_1 = 1 # 前第一个数
pre_2 = 1 # 前第二个数
n = 6 # 求第几个数
# 不满足规则循环的前两个数
current = pre_1 + pre_2
if n == 1 or n ==2:
current = 1
for _ in range(n-2):
# 求和
current = pre_1+pre_2
# 交换位置
pre_2 = pre_1
pre_1 = current
print(current)
5. 给⼀一个正整数,要求:1、求它是几位数 2.逆序打印出各位数字
方法1:
count = 0
n = int(input('请输入一个正整数:'))
while 1:
print(n%10,end='')
n //= 10
count +=1
if n == 0:
break
print()
print(count)
方法2:
num = 788123
print(len(str(num))) # 位数
print(str(num)[::-1]) # 逆序
扩展
1.控制台输入年龄,根据年龄输出不同的提示(例如:老年人,青壮年,成年人,未成年,儿童)
略(if,elif,elif,elif,else)
2.计算5的阶乘 5!的结果是
sum = 1
for i in range(1,6):
sum *= i
print(sum)
求1+2!+3!+...+20!的和 1.程序分析:此程序只是把累加变成了累乘。
num = 1
sum = 0
for i in range(1,21):
num *= i
sum += num
print(sum)
4.计算 1+1/2!+1/3!+1/4!+...1/20!=?
num4 = 1
sum4 = 0
for i in range(1,20):
num4 *= (1/i)
sum4 += num4
print(sum4)
5.循环输入大于0的数字进行累加,直到输入的数字为0,就结束循环,并最后输出累加的结果。
sum = 0
while 1:
num5 = int(input('输入一个数字:'))
if num5 == 0:
break
sum += num5
print(sum)
6.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值。
numa = int(input('输入一个数字:'))
num6 = int(input('请输入相加的个数:'))
sum6 = 0
sumhe = 0
while num6:
for i in range(num6):
sum6 += numa*10**i
sumhe += sum6
sum6 = 0
num6 -= 1
print(sumhe)
或者(老师做法)
num = 4
n = 6
sum1 = 0
num1 = num
for x in range(n):
print(num)
sum1 += num
num = num*10+num1
print('和',sum1)
扩展:求1+12+123+...+123456789
sum = 0
sumhe = 0
for x in range(1,10):
sum = sum*10+x
print(sum)
sumhe += sum
print(sumhe)
7.输入三个整数x,y,z,请把这三个数由小到大输出。
numx = int(input('输入一个数字x:'))
numy = int(input('输入一个数字y:'))
numz = int(input('输入一个数字z:'))
if numx > numy:
numx,numy = numy,numx
if numx > numz:
numx,numz = numz,numx
if numy > numz:
numy,numz = numz,numy
print(numx,numy,numz)
8a
n = int(input('输入一个数字:'))
for i in range(n, 0, -1):
print('*' * i)
老师做法:
n = int(input('输入一个数字:'))
# 控制行数
for x in range(n):
# 控制一行*的个数
for y in range(n-x):
print('*',end='')
print() #换行
8b
n8 = int(input('输入一个数字(奇数):'))
for i in range(0,n8,2):
print(' ' * int(n8/2-1/2),'*'*(i+1),' ' * int(n8/2-1/2) )
n8 -= 2
n8 = int(input('输入一个数字(奇数):'))
# count:*的个数 , space:空格的个数
for count in range(1,n8+1,2):
space = int((n8-count)/2)
print(''*space)
print('*'*count)
99乘法表
for i in range(1,10):
for j in range(1,i+1):
print('%d * %d = %d' % (j,i,i*j),end=' ')
print(' ')
10.经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?
for x10 in range(34):
for y10 in range(50):
for z10 in range(2,100,2):
if x10*3+y10*2+float(z10/2) == 100 and x10+y10+z10 == 100:
print(x10,y10,z10)
11.我国古代数学家张邱建在《算经》中出了一道“百钱买百鸡”的问题,题意是这样的: 5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只雏鸡。现在用100文钱买100只鸡,那么各有公鸡、母鸡、雏鸡多少只?请编写程序实现。
for x10 in range(20):
for y10 in range(34):
for z10 in range(100):
if x10*5+y10*3+float(z10/3) == 100 and x10+y10+z10 == 100:
print(x10,y10,z10)
12.小明单位发了100元的购物卡,小明到超市买三类洗化用品,洗发水(15元),香皂(2元),牙刷(5元)。要把100元整好花掉,可如有哪些购买结合?
for x10 in range(7):
for y10 in range(51):
for z10 in range(21):
if x10*15+y10*2+z10*5 == 100:
print(x10,y10,z10)