3.1 重量计算。月球上物体的体重是在地球上的16.5%,假如你在地球上每年增长0.5kg,编写程序输出未来10年你在地球和月球上的体重情况
不是很懂题意是只要十年后的体重变化,还是要每一年的体重变化。就写了每一年的体重变化,若只想要十年后的体重变化就把两个输出语句放在最后(for循环的外面)

weight = 51.00     #初始化在地球上的体重
weight1 = 0        #暂定月球上体重为0.仅仅只是为了声明变量
yearfactor = 0.5   #每年体重增加值
for j in range(1,11,1):
        weight = weight + yearfactor          #地球上每一年的体重
        print("第{}年在地球上的体重为{:.2f}kg".format(j,weight))
        weight1 = weight * 0.165             #月球上每一年的体重
        print("第{}年在月球上的体重为{:.2f}kg".format(j,weight1))

运行结果:
在这里插入图片描述
3.2 天天向上续。尽管每天坚持,但人的能力发展并不是无限的,它符合特定模型。假设能力符合如下带有平台期的模型:以七天为周期,连续学习3天能力值不变,从第4天开始至第7天每天能力增长为前一天的1%,如果七天中有一天间断学习,则周期从头计算。请编写程序回答,如果初始能力值为1,连续学习365天后能力值是多少?
因为是连续学习365天后,就没有加判断是否间断学习的情况,把3.4(P76)的代码稍微改动了一下

dayup = 1.00     #初始水平值
for i in range(1,365):
    if i%7 in [4,5,6,0]:
        dayup = dayup * (1+0.01)
    else:
        dayup = dayup
print("年终值:{:.2f}".format(dayup))
#运行结果:
#年终值:7.92

3.3 天天向上续。采用程序练习题3.2的能力增长模型,如果初始能力值为1,固定每10天休息1天,365天后能力值是多少?如果每15天休息1天呢?

躲不过啊躲不过,这个模型是非建不可了

def stay (x):   #模型函数
    dayup = 1.00     #初始水平值
    day = 0    #10天休息一天
    cycle = 0  #周期
    for i in range(365):
        if day==x or cycle ==7:    #10天休息一天,重新开始计算天数,7天为一周期
            day = 0
            cycle = 0
        else:
            if day%7 in [3,4,5,6]:     #后四天能力增长
                dayup = dayup * (1+0.01)
                day = day +1
            else:
                day = day + 1
    cycle = cycle + 1
    print("每{}天休息一天365天后能力值:{:.2f}".format(x,dayup))
stay(10) #调用模型函数
stay(15)

运行结果:
在这里插入图片描述
3.4 回文数判断。设n是一任意自然数,如果n的个位数字反向排列所得自然数与n相等,则n被称为回文数。从键盘输入一个5位数,请编写程序判断这个数字是不是回文数。

n = input("请输入一个五位数:")
if not (int(n)>9999 and int(n) <99999):  #判断是否是五位数,否则输入无效
    print("输入无效")
else:
    if (n == n[::-1]):   #[::-1]代表字符串倒序,在上一篇已经介绍过
        print("{}是回文数".format(n))
    else:
        print("{}不是回文数".format(n))

3.5 田字格的输出。使用print()函数输出如图所示样式的田字格。

for i in range(11): #一行一行打印,一共十一行
    if i % 5 ==0: #每四行有一横行
        print("+"+"+".center(9,"-")+"+")   #center(width[, fillchar]):返回长度为 width 的字符串,原字符串在其正中。 使用指定的 fillchar 填充两边的空位(默认使用 ASCII 空格符)。 如果 width 小于等于 len(s) 则返回原字符串的副本。
    else:  #中间的|
        print("|"+"|".center(9)+"|")

运行结果:
在这里插入图片描述
另外,能用print解决的问题,绝不用复杂的写法,毕竟再简便在可读性上也比不了print简单粗暴。(运行结果就不贴了,看代码就能看出来)

print("+----+----+")
print("|    |    |")
print("|    |    |")
print("|    |    |")
print("|    |    |")
print("+----+----+")
print("|    |    |")
print("|    |    |")
print("|    |    |")
print("|    |    |")
print("+----+----+")

3.6 文本进度条。仿照实例4,打印如下形式的进度条。
看不懂的看书,P89 4.1基本没怎么改动。

import time
scale = 3    #进度条精度,简单看就是中间小圆点的个数
print("--------执行开始---------")
for i in range(scale + 1):
    a, b = '.' * i, ' ' * (scale - i)
    print("\rStarting {}{} Done!".format(a, b),end = '')
    time.sleep(0.1)  #增大挂起时间,看着有模拟效果
print()
print("--------执行结束----------")

运行结果:
在这里插入图片描述
3.7 文本风格。将如下程序段存成文件,在控制终端(如Windows的cmd.exe)。运行该程序,观察输出结果。更改print()函数的参数,例如去掉end的赋值,再观察运行结果。
运行结果就不贴了,就是无限循环,但不去掉end的话,视觉上看不出来是无限循环,去掉就可以看出来。(while True就是无限循环)
3.8 小巧儿精致的第三方进度条工具库。tqdm是一个快速、扩展性强的进度条工具库。tqdm是一个第三方库,首先需要安装,然后才能使用。本书8.6节将详细介绍第三方库的安装方法。请读者提前阅读。运行如下程序,观察运行结果。

import time
from tqdm import tqdm
for i in tqdm(range(1,100)):
    time.sleep(0.1)

运行结果:
在这里插入图片描述

这里附上tpdm包的pip安装方法:pip install tqdm
直接cmd进入命令安装即可
在这里插入图片描述

加个把py文件打包成exe文件的方法。
学习这个方法的初心只是为了恶搞 /哈哈哈/😄
1.首先需要安装PyInstaller。用pip安装,安装命令:
pip install pyinstaller
在这里插入图片描述

2.可能安装会出现问题,出现一大堆红色的。这种情况下,先安装wheel,安装命令:pip install wheel。安装完wheel再安装PyInstaller
3,开始打包:进入文件所在的盘符,可以再命令窗口切换盘符,也可以从文件直接进入命令。我习惯性从文件进入命令,这里只介绍这一种方法,找到文件所在的位置,然后如下图所示。
在这里插入图片描述

3.进入命令后输入命令:pyinstaller -F xxx.py(xxx.py,打包的文件名),接下来就等系统自动打包结束。
4.打包成功后项目中新增dist文件,点开dist文件就可以看到打包好的exe文件。

注:写博客只是为了当笔记看,有任何问题可以评论说,一起互相交流学习

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐