基础
读程序,总结程序的功能:
1.
numbers=1
for i in range(0,20):
numbers*=2
print(numbers)
numbers=1 i=0 numbers=numbers2=1*2=2=2^1
numbers=2^1 i=1 numbers=numbers2=2*2=4=2^2
numbers=2^2 i=2 numbers=numbers2=4*2=8=2^3
numbers=2^3 i=3 numbers=numbers2=8*2=16=2^4
..........
numbers=2^19 i=19 numbers=numbers*2=2^20
求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)
summation=0 num=1 num+=1+1=2
summation=0 num = 2 num +=2+1= 3
summation = 0 num = 3 满足if语句 summation+=1=1 num+= 3+1 =4
summation =1 num = 4 num+=4+1 = 5
···
求100以内包括100满足被3或者7整除且不能被21整除的数字个数
功能:求1~100中满足被3或者7整除,但是不能被3,7同时整除
编程实现(for和while各写⼀一遍):
1. 求1到100之间所有数的和、平均值
# for语句
sum1 = 0
for x in range(1,101):
sum1+=x
average = sum1/x
print(sum1,average) #5050 50.5
# while语句
sum1=0
x=1
while x<=100:
sum1+=x
x += 1
average =sum1/(x-1)
print(sum1,average) #5050 50.5
2. 计算1-100之间能3整除的数的和
# for语句
sum1 = 0
for x in range(1, 101):
if x % 3 == 0:
sum1 += x
print(sum1)#1683
# while语句
sum1 = 0
x = 1
while x <= 100:
if x % 3 == 0:
sum1 += x
x += 1
print(sum1)#1683
3. 计算1-100之间不不能被7整除的数的和
# for语句
sum1 = 0
for x in range(1, 101):
if not (x % 7 == 0):
sum1 += x
print(sum1) # 4315
# while语句
sum1 = 0
x = 1
while x <= 100:
if not (x % 7 == 0):
sum1 += x
x += 1
print(sum1) # 4315
稍微困难
(多写)1. 求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34....
"""
规律:当前数是前两个数的和;第n个数 = 第n-1数+第n-2个数
n_2 = 1 第n-2个数
n_1 = 1 第n-1数
"""
n = 5
n_2 = 0 # 当前数前两个数
n_1 = 1 # 当前数的前一个数
current = 1 # 当前数
for x in range(2, n + 1):
current = n_2 + n_1
n_2 = n_1
n_1 = current
print('第%d个数的值是%d' % (n, current))
(多看)2. 判断101-200之间有多少个素数,并输出所有素数。判断素数的⽅方法:⽤用⼀一个数分别除2到sqrt(这个数),如果能被整除,则表明此数不不是素数,反之是素数
count = 0
for x in range(101, 201, 2): # 偶数能被二整除所以我们不取奇数
for y in range(2, int(x ** 0.5) + 1):
if x % y == 0:
break
else:
print(x, '素数')
count += 1
print('素数的个数是%d' % count)
方法2
count = 0 # 个数
for num in range(101, 201):
# 判断是否是素数,x 范围是2~num-1
for x in range(2, num):
# 如果2~num-1之间有一个数能被num整除,说明这个数不是素数
if num % x == 0:
# print(num, '不是素数')
break
else:
print(num, '是素数')
count += 1
print('101-200之间素数有:%d个' % count)
101 素数
103 素数
107 素数
109 素数
113 素数
127 素数
131 素数
137 素数
139 素数
149 素数
151 素数
157 素数
163 素数
167 素数
173 素数
179 素数
181 素数
191 素数
193 素数
197 素数
199 素数
素数的个数是21
(多看)3. 打印出所有的⽔水仙花数,所谓⽔水仙花数是指⼀一个三位数,其各位数字⽴立⽅方和等于该数本身。例例如:153是
⼀一个⽔水仙花数,因为153 = 1^3 + 5^3 + 3^3
for x in range(100, 1000):
ge_wei = x % 10
shi_wei = x // 10 % 10
bai_wei = x // 100
if x == bai_wei ** 3 + shi_wei ** 3 + ge_wei ** 3:
print('%d是水仙花数' % x)
(多看)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 x in range(1, 21):
print('第%d是%d/%d' % (x, fz, fm))
temp = fz + fm
fm = fz
fz = temp
方法2
# 规律:当前分数的分子 = 前一个分数的分子 + 前一个分数的分母;
# 当前分数的分母 = 前一个分数
fen_zi = 1
fen_mu = 1
n = 20
for x in range(n+1): # 再循环中没用过的变量,就用下划线表示
# print('第%d位是%d/%d'%(x,fen_zi,fen_mu))
# temp = fen_zi
# fen_zi = fen_zi + fen_mu
# fen_mu = temp
fen_zi ,fen_mu = fen_zi+fen_mu , fen_zi # fen_zi,fen_mu = 2+1,2
print('第%d位是%d/%d'%(x,fen_zi,fen_mu))
第1是2/1
第2是3/2
第3是5/3
第4是8/5
第5是13/8
第6是21/13
第7是34/21
第8是55/34
第9是89/55
第10是144/89
第11是233/144
第12是377/233
第13是610/377
第14是987/610
第15是1597/987
第16是2584/1597
第17是4181/2584
第18是6765/4181
第19是10946/6765
第20是17711/10946
(一点点)5. 给⼀一个正整数,要求:1、求它是⼏几位数 2.逆序打印出各位数字
str1 = input('请输入正整数:')
str2 = len(str1)
print('%s是%d位数'% (str1,str2))
print(str1[::-1])
# 请输入正整数:521232132
# 521232132是9位数
# 231232125
网友评论