一、基础题
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