题目011:古典问题:

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子。假如兔子都不死。问每个月的兔子总数为多少?其实这道题就是斐波那契数列的由来。
【思路】:理清思路是关键,理解成满两个月后,每月都能生兔子,就好办了。

m1=1 # 满月
m2=0 # 满俩月(下个月生兔子)
mm=0 # 可以月月生兔子了
for i in range(1,10):
# 过了1个月后
mm = mm+m2 # 加入新增成年的兔子
m2 = m1 # 满月的变成满俩月
m1 = mm # 这个月新出生兔子
print(i,mm+m1+m2) # 每个月有多少对兔子

题目012:判断101-200之间有多少个素数,并输出所有素数。

【思路】:按照素数不能被之前的素数整除,取200以内所有素数,然后取出101-200之间的部分。

arr = [2,3] # 取200以内所有素数
for i in range(4,201):
for j in arr:
if i%j==0:
break
# else: # 这是一开始我自己的写法,后来发现for可以直接接else子语句
# if j==arr[-1]:
# arr.append(i)
else: # 迭代的对象成功迭代完,位于else的子句将执行;而如果在for循环中含有break时则直接终止循环,并不会执行else子
句。
arr.append(i)
# 取出100-200之间部分
for i in range(len(arr)):
if arr[i]>100:
l = arr[i:] print(len(l),l)
break

题目013:打印出所有的"水仙花数",

所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
【思路】: // 取整,% 求余,**3 三次方。知道取整求余写法的就没问题。

for i in range(100,1000):
b = i//100 # 百位
s = i%100//10 # 十位
g = i%10 # 个位
if b**3+s**3+g**3==i:
print(i)

题目014:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

【思路】:拆到拆不动为止,类似012题。

import math
num = int(input('输入一个整数:'))
arr = [] while num>1:
for i in range(2,int(math.sqrt(num))+1): # 因为题目是一个没写范围正整数,开方可以有效减少该值过大时候的计算量
if num%i==0:
arr.append(i)
num = num//i
break
else:
arr.append(num)
break
print(arr)

题目015:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

【思路】:if-else基本用法,没啥说的。

score = float(input('输入一个成绩:'))
if score>=90:
print('A')
elif score>=60:
print('B')
else:
print('C')