1:存折中现有1000块钱,银行的年利息为3.5%,问在银行里放多少年后,连本带利可以翻倍?
思路:连本带利转换为相应的代码
#定义现有金额
cash = 1000
#定义目标金额
total = 2000
#开始年份
year = 0
#循环
while cash < total:
cash*=(1+0.035)
year+=1
print(‘在银行里放{0}年后,连本带利可以翻倍’.format(year))
2:统计100~999之间的水仙花数并计算有多少个?
规则:以三位数为例,数字的值 = (百位上的数字 *百位上的数字 *百位上的数字) + (十位上的数字 *十位上的数字 *十位上的数字) + (个位上的数字 * 个位上的数字 * 个位上的数字)
#:153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3
思路:关键是规则的数学公式转换成程序代码,体现在百位数字、十位数字、个位数字的获取,理解十进制的含义
#定义数字变量
number=100
#定义统计个数的变量
count=0
#循环
while number<999
i = number // 1 %10 #获取个位数
j =number // 10 %10 #获取十位数
k =number //100 %10 #获取百位数
#判断是否满足条件
if number = k * k * k + j * j * j + i * i *i
print(number)
count+=1
number + =1
print(‘100~999中有{0}水仙花个数’.format(count))
3.# 山上有一段台阶,级数不知道,但是知道:
如果两个台阶一起跨,还剩1个台阶,
如果三个台阶一起跨,还剩2个台阶,
如果四个台阶一起跨,还剩3个台阶,
如果五个台阶一起跨,还剩4个台阶,
如果六个台阶一起跨,还剩5个台阶,
如果七个台阶一起跨,还好1个台阶都不剩。
问:这段台阶最少有多少级?
思路:运用穷举的思想,从1开始,一个数字一个数字进行尝试,看看是否满足规则
#定义台阶级数的变量
step = 1
#写法1、在循环条件中编写表达式,运用 逻辑非 和 逻辑与进行处理
循环条件:不满足规则时,继续做穷举
while not (step % 2 == 1 and step % 3 == 2 and step % 4 == 3 and step % 5 == 4 and step % 6 == 5 and step % 7 == 0):
step += 1
print(‘这段台阶最少有 {0} 级’.format(step)) # 这段台阶最少有 119 级
写法2、因为不知道级数有多少,考虑构造一个死循环,进行穷举,直到有满足规则的数字
flag = True
while flag:
if (step % 2 == 1 and step % 3 == 2 and step % 4 == 3 and step % 5 == 4 and step % 6 == 5 and step % 7 == 0):
print(‘这段台阶最少有 {0} 级’.format(step)) # 这段台阶最少有 119 级
# 找到满足规则的台阶数时,修改循环条件的变量,结束死循环
flag = False
step += 1
4:编写程序输出如下图形
#思路:因为前三行的变化规律和后两行的变化规律不一致,所以分为上下两部分分别进行处理
#写法1、while循环结合字符串的*运算符(字符串的复制)
i = 1
先打印上半部分
while i <= 3:
每行中都做输出规则星号的动作
print(’ ’ * (3 - i), ‘*’ * (2 * i - 1))
i += 1
重置循环变量i
i = 1
再打印下半部分
#while i <= 2:
#每行中都做输出规则星号的动作
print(’ ’ * i, ’ * ’ * (5 - 2 * i))
i += 1
#写法2、在一行中做若干次输出星号的动作,这样的操作在多行中都这样操作,即循环的循环(循环的嵌套)
i = 1
j = 1
#先打印上半部分
#在三行中都如此操作
while i <= 3:
# 在一行中按规则输出空格
while j <= 3 - i:
print(’ ‘, end=’’)
j += 1
# 内层循环变量需要重置
j = 1
# 在一行中按规则输出星号
while j < i * 2:
print('*', end='')
j += 1
# 换行
print()
# 内层循环变量需要重置
j = 1
i += 1
#重置循环变量i
i = 1
#再打印下半部分
在两行中都如此操作
while i <= 2:
# 在一行中按规则输出空格
while j <= i:
print(’ ‘, end=’’)
j += 1
# 内层循环变量需要重置
j = 1
# 在一行中按规则输出星号
while j <= 5 - i * 2:
print('*', end='')
j += 1
# 换行
print()
# 内层循环变量需要重置
j = 1
i += 1