本次所涉及到的知识有:判断语句、循环语句、字符格式化、转义符、条件判断语句。
实战题目
(一)输入三个整数,按照从小到大的顺序输出它们的值。
(二)编写一个程序,用户输入整数a,a的取值范围为2~20,自动打印一个边长为a的正方形。例如,用户输入a为5,则输出一个以5个*为边长且中间为空的正方形。
1 | * * * * * |
(三)编写程序,输出九九乘法表。
题目一
首先分析一下题目,输入三个整数的前提是随机的,所以我会使用input作为输出的条件并使用最为基础的判断语句和循环语句去实现该题目的结果。
一、输入数值
定义三个整数为a、b、c,并给它们进行包装成用户可以使用的变量。
1 | a = int(input("请输入第一个数")) |
二、存入数值
如果我们使用基础的判断和循环,就需要一个列表来存储数据并对它进行遍历。
1 | number = [a,b,c] |
三、判断最小值
我的思路是对随机的三个整数进行判断,判断它们之间谁是最小的数值,获得最小值之后就不需要对它进行任何操作,并且还可以减少判断的条件,只对不是最小值的两个数进行判断。
1 | for i in number: |
四、建立临时变量
因为最小值被找出来,但是它还是存在这个程序当中,所以我将建立临时变量来对最小值进行排除,并对最后的判断做铺垫。
1 | d = i |
初始化所有的临时变量为0。
五、判断数值大小
这时我们需要对哪一个临时变量为0(最小值)进行判断,如果某个临时变量为0时,其中两个临时变量可以相互判断谁是midden,并从小到大输出从原有变量的数值。
1 | if number1 == 0: |
完整代码
1 | #输入数字 |
题目二
这个题目我将分为3个部分的代码进行编写:上边长、中间部分、下边长。
一、上边长
通过用户所输入的数据,并将所需边长的正方形进行打印。
1 | a = int(input("请输入你所需要的边长的正方形:")) |
之后通过for循环打印所需*的上边长。
1 | for i in range(a): |
print()是阻止之后所打印的*和上面的相连。
二、中间部分
因为中间部分所打印的*是减去2的用户所输入数值(a-2),所以在使用循环语句时,需要对a进行减2数值的判断。
1 | j = 1 |
这样就可以打印中间所需几列*的多少;在这之后需要对星号进行打印和打印空格,保证中间是空的,所以通过for循环对if进行遍历和判断。
1 | for i in range(a): |
如果i为0时就打印这一行的第一个的星号,之后打印空格作为下面的空格的补充并连接下面所输出的空格;如果i不为0且i不等于用户所输入的数值减一时就打印空格,比如a为5时,i在循环到1~3时就打印两个空格,总共合起来就是6个空格,加上之前所打印的空格刚好满足5所需要的7个空格的距离;最后当i为用户所输入的数值减一的数值时,就打印最后一个空格,和上面的条件相反。
三、下边长
下边长和上边长一样就不做过多赘述。
1 | for i in range(a): |
完整代码
1 | #输入值 |
题目三
作为题目三我以为是最难的一个,但是没想到的是,做完题目一和题目二发现题目三是最简单的一个,但是它是一个有很多可能性的题目,下面我将描述我自己做的(范例一)和我在其他教学视频所学到的方法(范例二)。
范例一
我的想法是通过定义一个固定的变量,之后使用题目二所用到循环的方法去循环每一个数值所得乘机的大小,并使用转义符\t对齐打印出来。
完整代码
1 | number = 10 |
范例二
范例二所使用的是while循环的方法,但是它直接先定义了一个简单的公式i * j = (i * j),之后通过数值去套用这个公式并打印输出,最后使用字符格式化的形式让公式可以直接赋值和转义符\t来对每一个打印出来的公式进行对齐。
完整代码
1 | j = 1 |