python知识点(五)循环结构对应练习2

while循环

例题1:将5万元存入银行,选择一年定期自动转存的存款方式,均为1.25%,
问:要使得总存款达6万元,至少需要存款多少年?

rate = 0.0125  # 给利率变量赋初值
money = 50000  # 给存款总额变量赋初值(单位:元)
year = 0  # 给存款需要的年头赋初值
while ①:
    money = ② *(1+rate)  # 计算每年新的存款总额
    ③  # 存款年数加1
print("存款总额为6万元至少需要", year, "年")  # 输出结果

分析:

第一空:while后面跟条件。当条件的值为True(即为真)的时候,执行循环体语句。在本题中,循环体的语句为下一年本金=本金*(1+rate)即每存一年后,本息和的值。所以循环条件应为存款未达到6万元的语句。

第二空:新本金=旧本金*(1+rate)原因:变量money的值是可以不断发生改变的,利用money求出的本息和可以赋给money作为下一年的本金初始值。

第三空:新year=旧year+1   原因:同上

答案:

1.money<60000          2.money          3.year=year+1 或者 year+=1

例题2:骰子六个面上分别是数字1~6。设计模拟掷骰子游戏。反复掷,掷到6为止,统计掷骰子次数。

import random
res = 0     #骰子的数字
i = ①       #投掷的次数
while ②:
    res=random.randint(1,6)
    print(res)
    ③       #投掷的次数加1
print("一共掷了",i,"次")

分析:

第一空:次数的初始值

第二空:当投掷的点数不为6时要进入循环体继续投掷。

扫描二维码关注公众号,回复: 17234923 查看本文章

第三空:新次数=旧次数+1  每投掷一次,就要向次数变量中加1

答案:

1.0          2.res!=6          3.i=i+1

例题3:以下是一个猜数字游戏:系统随机生成一个1~100的数字,用户共有5次机会猜,
如果用户猜测数字大于系统给出的数字,显示“大了”,
如果用户猜测数字小于系统给出的数字,显示“小了”,
如果用户猜测的数字等于系统给出的数字,显示“恭喜猜中”,并退出循环。

import random
num = ①.randint(1, 100)
i = 1
while i <= 5:
    ans = int(input("请猜数:"))
    if ②:
        print("大了,还剩", 5-i, "次机会")
    elif ans < num:
        print("小了,还剩", 5-i, "次机会")
    else:
        print("恭喜猜中!!!")
        break
    i = i + ③
print("正确答案是:", num)

分析:

第一空:import 模块名 ——将模块导入,使用该模块里的任意函数仍然需要指明使用了某个模块的某个函数:模块名.函数名()

第二空:猜的数ans>要猜的正确数num

第三空:每猜一次向猜测次数变量i中增加1

答案:

1.random          2.ans>num          3.1

例题4:2005年10月9日,国家测绘局正式宣布珠穆朗玛峰的高度是8844.43米,并停用之前的数据。现有一张白纸的厚度大约是0.08毫米,对折一次,厚度变0.16毫米,再对折一次,厚度变为0.32毫米,……,每对折一次,其厚度均变为对折前的两倍。假设这张纸有足够大,可对折任意次,那么这张纸至少对折多少次后,其厚度将超过珠穆朗玛峰的高度。

height = 8844430        #珠穆朗玛峰高884430毫米
h = 0.08
cnt = 0  # 记录对折次数
while h <= ①:
   cnt = cnt + ②        #对折次数加1
   h *= ③
print(cnt)

分析:

第一空:当纸的厚度<珠穆朗玛峰的高度height的时候,纸仍然要继续对折

第二空:每对折一次,次数变量cnt就要加上1

第三空:每对这一次,纸的厚度的变量h就要变成2倍

答案:

1.height          2.1          3.2

例题5:考拉兹猜想又称为3×n+1猜想,指的是对于给定的每一个正整数n,经过下列有限次变换后,最终都能变为1。如果它是偶数,则对它除以2;如果它是奇数,则对它乘3再加1;……如此循环,直到得到1为止。
例如n=6,根据上述规则需要8次变换后得到1,变换过程:6→3→10→5→16→8→4→2→1。
任意输入一个正整数,验证考拉兹猜想,并输出变换次数。

n = int(input("n="))  # 输入正整数n
cnt = 0  # 记录变换次数
while n > ①:
    cnt = cnt+1  # 变换次数cnt累加
    if n % 2 == 0:
        n //= ②
    else:
        n = 3*n+1
print(③)  # 输出变换次数

分析:

第一空:当n比1大的时候,这个数还需要继续变换

第二空:n为偶数时,n变为之前的一半

第三空:将变换次数变量的值输出

答案:

1.1          2.2          3.cnt

例题6:统计一个整数的所有数位上数字“3”出现的次数,例如:3201中3的个数为1,-303173中3的个数为3。

n = abs(int(input()))  # 输入一个整数
s = ①  # s表示“3”的个数
while n > 0:
    a = n  ②  10  # 取个位数
    if a == 3:
        ③
    n = n//10
print(s)

分析:

第一空:3的个数初始值为0

第二空:求一个数的个位数(即最低位)通用方法:这个数%10

第三空:当取出的个位上的数字为3时,3的个数 这个变量的值就要加1

答案:

1.0          2.%          3.s=s+1

例题7:一种放射性物质不断发生衰变,每经过一年剩余的质量约为上一年的84%,编写程序求最快经过多少年,剩余的质量低于原来的一半?

w = float(input("输入放射性物质的质量:"))
n = ① / 2  # n为该物质质量的一半
cnt = 0  # 年数
while w >= n:
    w *= ②
    cnt += ③
print(cnt)

分析:

第一空:n的值等于质量w/2

第二空:新质量=原质量*0.84。  在python中,%是取余符号,因此百分之48需要改成小数形式

第三空:每衰败一年,年数加1

猜你喜欢

转载自blog.csdn.net/qq_28782419/article/details/127525909
今日推荐