作业一:
读程序,总结程序的功能:
1.将数字从1开始进行20次乘2操作,即求2的20次方。
numbers=1
for i in range(0,20):
numbers*=2
print(numbers)
2.统计在1--100的数字中的仅能被3整除或者仅能被7整除的数字的个数,并输出个数。
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)
编程实现(for和while各写⼀遍):
- 求1到100之间所有数的和、平均值
- 计算1-100之间能3整除的数的和
- 计算1-100之间不能被7整除的数的和
1、
for循环实现过程:
sum1 = 0
for n in range(101):
sum1 += n
print('总和:',sum1,'平均值:',sum1/100)
while循环实现过程:
sum2 = 0
n = 0
while n < 100:
n += 1
sum2 += n
print('总和:',sum2,'平均值:',sum2/100)
2、
for循环实现过程:
sum3 = 0
n = 0
for n in range(101):
if n % 3 == 0:
sum3 += n
print('和是:\n',sum3)
while循环实现过程:
sum4 = 0
n = 1
while n <= 100:
if n % 3 == 0:
sum4 += n
n +=1
print('和是:\n',sum4)
3、
for循环实现过程
sum5 = 0
for n in range(100):
if n % 7 == 0:
continue
sum5 += n
print(sum5)
while循环实现过程:
sum6 = 0
n = 1
while n <= 100:
if n % 7 == 0 :
continue
sum6 += n
print(sum6)
作业二、
1、求斐波那契数列中第n个数的值
规律:从第二个数开始,后面的数的值就是前两个数的值的和。
current = 1 #当前的数字,即为斐波那切数列第一位数1.
pre_1 = 1 #前一个数的变量表示和赋值
pre_2 = 0 #前面第二个数的变量表示和赋值
n = int(input())
for x in range(n-1):
#n-1的原因是从第一个数字开始算起,到第n个数字,只需要进行右移n-1的操作。
#而循环体内的语句描述的就是右移一次的操作
current = pre_1 + pre_2
pre_2 = pre_1
pre_1 = pre_1 + pre_2
print('第',n,'个数是',current)
2、 判断101-200之间有多少个素数,并输出所有素数。
思路:
1)、先取出101--200的每一个数字
2)、看从2~N-1之间有没有一个数能够被N整除,只要有一个就不是素数,一个都没有就说明是素数
正确答案1:
for num in range(101,201): #首先要提取出所有101--200之间的数字.
for i in range(2,num): #取出2~N-1的数用于素数判断
if num % i == 0: #素数判断操作
#print(num,'不是素数')
break
#取余为0即非素数,立即break可节省算力,避免进行(i+1)~(num-1)范围内的素数判断
else:
print(num,'是素数') #取i~(num-1)计算取余都不为0,那就是素数。
正确答案2(新的程思想):
for num in range(101,201): #首先要提取出所有101--200之间的数字.
is_prime = True #先假设这个数字是素数。
for i in range(2,num): #取出2~N-1的数用于素数判断
if num % i == 0: #如果能整除,说明不是素数
is_prime = False #若非素数,就对is_prime值进行修改。
break #避免不必要的(i+1)~(num-1)的运算,节约算力。
if is_prime: #此时可以根据is_prime的值,进行素数判断并输出。
print(num,'是素数')
下面是自己的错误代码和代码出现的问题:
for num in range(101,201):
for i range(2,num): #for _ in range(n)语法错误,少个in
if num % i != 0: #从这里开始素数判断条件都错误。所以整个程序错误
3、有分数序列:1/1,2/1 ,3/2 ,5/3 ,8/5 ,13/8 ,21/13...求出这个数列的第20个分数。
思路分析:
分子:前一个分数的 分子+分母 的和
分母:前一个分数的 分子
思路:用两个变量保存前一个分数的分子和分母,然后不断更新分子分母。
fen_z = 1
fen_m = 1
n = 20
for x in range(n):
fen_z,fen_m = fen_m+fen_z,fen_z #这种连续赋值写法仅在Python语法中才成立。
print(fen_z,'/',fen_m)
#像如下这样的写法会有错误的计算,因为在如下第一行,已经改变了分母的值,
#第二行分子获得的值中分母的值是改变后的分母的值。
#fen_m = fen_z
#fen_z = fen_m + fen_z
4、给1个正整数,要求:1)、求它是几位数 2).逆序打印出各位数字
while True:
n = int(input('请输入一个需要判断的数字:'))
i = 0
while n != 0:
n //= 10
i += 1
print('是',i,'位数字')’’