首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python入门(13)

Python入门(13/18)

第十三节 应用案例(一)

大家好!经过前一阶段的紧张学习,我们终于迎来了见证奇迹的时刻。

今天我们将要通过6个应用案例的设计编程,来领略python带给我们的惊喜,并以此巩固我们第一阶段的学习成果。

  • 编写九九乘法口诀表
  • 寻找一个符合条件的整数
  • 实现无重复数字的排列组合
  • 根据销售额计算奖金
  • 编写一个python语法的冒泡排序法
  • 根据一组数据实现按任意列排序

6个案例中,有3个数学问题,有3个程序算法问题,可以帮助我们更好地理解python的编程思想和方法。 本节课,我们先介绍前面3个案例。

案例1、编写九九乘法口诀表

需求:

1、至少你得知道啥是乘法口诀表吧。

2、请把算式和结果都列出来。

3、按乘数1~9,分9行排列显示。

分析:

1、定义两个变量作为乘法计算的两个乘数:i,取值1-9;j,取值1-9。

2、两次遍历:遍历i中1-9个数(这是第一层的循环),每取一个数,它们都将分别与j中1-9个数相乘。这是第二次遍历,也是位于第一层循环里面的第二层循环。因此,它们有一个嵌套循环的运算过程。

3、列出算式,并且分9行排列,就只是显示格式的问题了。解决办法很简单:只需要对i的遍历时,将其与j的所有数字相乘的算式和结果都排列在同一行显示即可。

PS:如何将多个算式及计算结果显示在同一行呢?方法很简单:每个算式及计算结果都可以用一个字符串表达式来呈现,对吧?那就把这些所有的一次迭代的字符串连接(相加)起来不就得到一个长字符串了吗?然后显示出来,ok!

九九乘法口诀表源代码

代码解析:

1、第一行的循环语句,定义了一个1-9的i值,不明白的回顾下for和range的概念。

2、定义y变量,用于显示i的一个取值与j中1-9相乘的算式和结果拼接成的字符串。

3、第三行,第二个循环语句定义了1-9的j值。

4、第四行,用格式化(占位符)的方法,定义一个独立算式和计算结果的字符串x。

5、运用字符串的“加法”,将x累计拼接到y中。

6、显示y字符串,注意看它的代码缩进,位于i的for循环中,因此,会分9行显示。

案例2、寻找一个符合条件的整数

需求:

设有整数i,i+100是一个完全平方数,再加168又是一个完全平方数,请找出i的值。

分析:

1、完全平方数意味着可以开平方,且结果仍然是整数。

2、要求:i+100是一个完全平方数,且i+100+168也是一个完全平方数。

寻求解决方案:

1、既然i+100是一个完全平方数,那么它开平方的结果假设为整数x,反过来,x的平方也应该等于i+100;同理,如果i+100+168开平方的结果是整数y,则y的平方也等于i+100+168。

2、直观来看,符合上述条件的i值我们猜不出来。但是,编程的好处就是可以在一个较大的数据范围内试错,来寻找符合条件的i值。

3、可以考虑在10万以内试错,先将i+100后开方,取整数,再赋值给x,再将i+268后再开方取整后,赋值给y。然后,尝试判断x和y的平方是否等于i+100和i+268,如果成立,则该i值即是正解。

寻找一个符合条件的整数的源代码

代码解析:

1、第一行通过import导入数学模块math,用于数学计算(开平方)需要。

2、定义i变量,在0-100000中取值。

3、第4、5行开方并取整后赋值给x、y。

4、第6行,条件判断。

5、如果条件成立,则终止循环(试错),输出(显示)当前i值。

案例3、实现无重复数字的排列组合

需求:请将4个数字(比如1-4)可能组成的、所有互不相同且无重复数字的排列、组合,全部列示出来。(借鉴网络案例)

分析:

1、首先要列举4个数,例如:range(1,5)。

2、计算它们的排列组合,并赋值给一个可显示的变量。

3、去除重复的数字。

实现无重复数字的排列组合源代码

代码解析:

1、首先,创建一个名为myset的空集合。(集合可以帮我们去重)

2、分别创建4个for循环,定义了4个变量i、j、k、m,它们都能从1-4中取值,分别代表4位数中的一个数。

3、请注意,代码的缩进,i的取值会与j的所有取值对应,同样j的取值会与k的所有取值对应,k的取值会与m的所有取值对应。

4、在全部获得每一轮取值后,再添加到myset中去重。

5、最后,全部迭代完毕,获取到的最终myset就是我们想要的结果。读取和显示一个集合的数据同样适用for循环迭代的方法。

小结

这一节,我们分享了三个Python应用案例,看起来,相对偏重于数学类应用,但是,实际上对于加深对python的基本语法和数据结构的理解是有好处的。还有三个应用留在下节课一起分享。

在后面的三个应用里,我们会侧重于探讨和体验数据结构和算法的实践,这将是程序员更重要的一种修炼。

下一篇
举报
领券