郭、王两位大侠同上终南山习武,两人最初的战力值均为100。王大侠骨骼清奇,天赋较高,每练功一天,战力增加2‰,郭大侠比较愚笨,每练功一天,战力增加1‰。如果休假一天不练,两人的战力均减少1‰。相较于王大侠,郭大侠更加勤奋,日日练功,从不休息,而王大侠,则三天打渔,两天晒网,也就是每5天的前三天练功,后两天休假。
知识产权协议允许以教育/培训为目的向学生或受众进行免费引用,展示或者讲述,无须取得作者同意。 不允许以电子/纸质出版为目的进行摘抄或改编。 |
请编写程序,完成下述任务。
- 10年(3650天)之后,郭大侠和王大侠战力分别是多少?
- 将郭王二位大侠每天的战力值存储在两个列表中,然后参考下述代码绘制两位大侠的战力增长曲线并进行比较。绘制出来的战力增长曲线如图1所示。
from matplotlib import pyplot as plt
plt.plot(list(range(365*10)),guoPowers,label="Master GUO")
plt.plot(list(range(365*10)),wangPowers,label="Master WANG")
plt.legend()
plt.show()
图1 战力增长曲线
解题提示
- 使用for循环,逐天计算两位大侠的新战力,并置入各自的战力列表;
- 郭大侠的每日战力 = 前日战力* 1.001;
- 如果打渔日,王大侠的当日战力 = 前日战力 * 1.002;如果是晒网日,王大侠的当日战力 = 前日战力 * 0.999;
- 使用表达式 x % 5 in [0,1,2]来判断第x天是王大侠的打渔日还是晒网日;
- matplotlib模块需要提前安装,安装方法请参考实验18。
完整源代码
guoPowers = [] #天天练的郭大侠
wangPowers = [] #三天打渔、两天晒网的王大侠
guoPower,wangPower = 100,100
for x in range(365*10):
guoPower *= 1.001
if x % 5 in [0,1,2]:
wangPower *= 1.002
else:
wangPower *= 0.999
guoPowers.append(guoPower)
wangPowers.append(wangPower)
print(guoPower,wangPower)
from matplotlib import pyplot as plt
plt.plot(list(range(365*10)),guoPowers,label="Master GUO")
plt.plot(list(range(365*10)),wangPowers,label="Master WANG")
plt.legend()
plt.show()
本案例节选自作者编写的教材及配套实验指导书。
《C 编程基础及应用》(高等教育出版社,出版过程中)
《Python编程基础及应用》,高等教育出版社
《Python编程基础及应用实验教程》,高等教育出版社
高校教师同行如果期望索取样书,教学支持资料,加群,请私信作者,联系时请提供学校及个人姓名为盼,各高校在读学生勿扰为谢。
青少年读者们如果期望系统性地学习Python及C/C 程序设计语言,欢迎尝试下述今日头条(西瓜)免费视频课程。