基础
一、读程序,总结程序功能
numbers = 1
for i in range (0,20):
numbers *= 2
print(numbers)
答:打印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)
答:打印100以内能被3或7整除,但是不能被21整除的数的个数
编程实现(for和while各写一遍):
- 求1到100之间所有数的和、平均值
(1)for循环
sum = 0
average = 0
for x in range(1,101):
sum += x
average = sum / 100
print('1-100的所有数的和是:%d'%sum)
print('1-100的所有数的平均值是:%.1f'%average)
1-100的所有数的和是:5050
1-100的所有数的平均值是:50.5
[Finished in 0.5s]
(2)while循环
num=1
sum = 0
average = 0
while num <= 100:
sum += num
num += 1
average = sum / 100
print('1-100的所有数的和是:%d'%sum)
print('1-100的所有数的平均值是:%.1f'%average)
1-100的所有数的和是:5050
1-100的所有数的平均值是:50.5
[Finished in 0.5s]
- 计算1-100之间能3整除的数的和
(1).for循环
sum = 0
for num in range(1,101):
if not num % 3:
sum += num
print('1~计算1-100之间能被3整除的数的和为:%d'%sum)
1~计算1-100之间能被3整除的数的和为:1683
[Finished in 0.4s]
(2).while循环
num = 1
sum = 0
while num <= 100:
if not num % 3:
sum += num
num += 1
print('1~计算1-100之间能被3整除的数的和为:%d'%sum)
1~计算1-100之间能被3整除的数的和为:1683
[Finished in 0.4s]
- 计算1-100之间不能被7整除的数的和
(1).for循环
sum = 0
for n in range(1,101):
if n % 7:
sum += n
print('1-100之间不能被7整除的数的和是:%d'%sum)
1-100之间不能被7整除的数的和是:4315
[Finished in 0.5s]
(2).while循环
sum = 0
num = 1
while num <= 100:
if num % 7 :
sum += num
num += 1
print('1-100之间不能被7整除的数的和是:%d'%sum)
1-100之间不能被7整除的数的和是:4315
[Finished in 0.5s]
二、稍微困难
1、求斐波那契数列中第n个数的值:1,1,2,3,5,8,13,21,34....
方法一
while True:
num1 = 1
num2 = 1
i = 1 #计数
n = int(input('请输入所求斐波那契数列的序号:'))
if n == 1 or n == 2:
print('第%d个斐波那契数列值是:1'%n)
else:
while n > 1:
num1,num2 = num2, num1+num2
n -= 1
i += 1
print('第%d个斐波那契数列值是:%s'%(i,num1))
效果:
请输入所求斐波那契数列的序号:1
第1个斐波那契数列值是:1
请输入所求斐波那契数列的序号:5
第5个斐波那契数列值是:5
请输入所求斐波那契数列的序号:8
第8个斐波那契数列值是:21
方法二
def fib(num):
if num <= 2:
return 1
else:
return fib(num-1) + fib(num-2)
num = int(input('请输入斐波那契数列的序列:'))
print('第%d个斐波那契数列值是:%d'%(num,fib(num)))
结果:
请输入斐波那契数列的序列:8
第8个斐波那契数列值是:21
2、判断101-200之间有多少个素数,并输出所有素数。判断素数的方法:用一个数分别除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数
for prime in range(101,201):
num = 2
while num < prime:
if not prime % num:
break
elif prime % num :
num += 1
if num + 1 == prime:
print(prime,end=' ')
结果:
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 [Finished in 0.5s]
3、打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153 = 1^3 + 5^3 + 3^3
n1 = 0
n2 = 0
n3 = 0
for n in range(100,1000):
n1 = n // 100
n2 = n % 100 // 10
n3 = n % 10
if n == n1**3+n2**3+n3**3:
print(n,end=' ')
结果:
153 370 371 407 [Finished in 0.5s]
4、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的第20个分数
分子:上一个分数的分子加分母 分母: 上一个分数的分子 fz = 2 fm = 1 fz+fm / fz
fz = 2
fm = 1
for n in range(1,21):
if n == 20:
print('第%d个分数为:%d/%d'%(n,fz,fm))
fz,fm = fz+fm,fz
结果:
第20个分数为:17711/10946
[Finished in 0.3s]
5、给一个正整数,要求:1、求它是几位数 2.逆序打印出各位数字
n = int(input('请输入一个正整数:'))
n = str(n)
len = len(n)
n_new = n[-1::-1] #存储逆序的字符串
print('这个数的长度为%d'%len)
print('逆序为%s'%n_new)
结果:
请输入一个正整数:12345
这个数的长度为5
逆序为54321