冯天魁了不起的分支和循环-Python算法练习

冯天魁
1.1 分支和循环
说起编程语言,大概大家第一想到的就是C语言了吧。这个不会有什么问题,因为“机器码生汇编,汇编生C,C生万物”。C语言铸造了如今的IT时代,所有的编程语言都是在C语言的基础上生成。世界上根本没有最优秀的语言,只有最合适的语言,面对不同的环境和需求,就会有不同的编程工具去迎合。
既然是编程语言那就应该拥有分支和循环这两种实现,分支也就是我们在编程语言中使用的if条件判断,我们在前面简单说了一下判断,用了多个判断条件,根据不同的条件然后打印不同的信息。例如,根据成绩判断优秀,良好,不及格的时候。循环也简单的只是说了一下for循环和while循环,下面来详细讲解一下。
1.2 分支
简单的分支
if 条件判断:
符合条件
else:
不符合条件
复杂的分支判断我们需要用到elif,在多个判断的时候用多个elif,不过这里注意的是最后一个必须要用到else。下面看一下实例:说一下判断说明,我们把成绩满分一百分,90以上优秀,60到90及格,小于60不及格。
study = int(input("请输入你的成绩:"))
if study >= 90:
print("成绩优秀")
elif 60 <= study < 90:
print("成绩及格")
else:
print("成绩不及格")
这里我们用了两个判断,下面我们用三个以上的判断,输入的数小于等于10打印A,大于10小于等于20打印B,大于20小于等30打印C,这样一直类推到50吧。其他的都打印输入错误,然后好进行区别。看一下怎么写。
study = int(input("请输入你的成绩:"))
if study <= 10:
print("A")
elif 10 < study <= 20:
print("B")
elif 20 < study <= 30:
print("C")
elif 30 < study <= 40:
print("D")
elif 40 < study <= 50:
print("E")
else:
print("输入错误")
注:在判断的时候等候要在大于或者小于后面这就是传说中的分支“悬挂”
2.1 循环
2.2 for循环
我们在for循环的时候总是习惯打印比如列表,字典等,这些我们都还没有说,那么后面会慢慢给大家说,这里用个最简单的方式吧,就打印数字。for循环离不开range。下面说一下for配合range的格式,就是循环打印range的每一个元素。
for i in range(self, start, stop,end):
print(i)
下面我们解释range里的每一个作用,self传入一个整数默认从0开始后面会详细解释,start十开始,stop是结束,end就是间隔。下面我们用例子来一一说明。
比如说我要打印5以内的整数,那么我们直接在range里传入一个5看会打印什么。
for i in range(5):
print(i)
打印结果:
0
1
2
3
4
根据上面的例子我们发现打印的时候是从0开始的,这个是range默认的,后面在讲列表元素的时候会说,这里不做过多的解释,就记着是从0开始的,那么我们不想从0开始怎么办,这里就需要用到start和stop了。看一下下面的例子打印5以内的所有数。
for i in range(1,6):
print(i)
打印的结果:
1
2
3
4
5
这里才发现确实是打印了5以内的整数中的五个元素。有的同学会问为什么没有0呀,还记得我们上面说的start吗?开始我们是从1开始的,所以跳过0了。如果我们想打印所有的偶数不想用分支,直接用for循环可以吗?下面我们试试:
for i in range(0,10,2):
print(i)
打印结果:
0
2
4
6
8
这里说一下最后一个2是间隔,因为最小的偶数是0,那么我们就从0开始,到10结束,没循环一次间隔2,所以从0开始的所有偶数都打印出来了,那么有的说打印奇数呢?可以直接从最小的奇数开始呀,有兴趣的可以试一下。
2.3 while循环
while循环和for循环不同,for循环有一个range,在range里不管如何去循环总有一个限制,但是while不一样,while只要条件成立可以一直循环下去,只要不是手动去停止就会造成一个“死循环”,如果条件不成立直接不循环,这就是while的魅力。
下面我们先写一个简单的例子:
计算100以内所有数的和:
m = 100
sum = 0
n = 1
while n <= m:
sum += n
n += 1
print(sum)
打印结果:
5050
注:首先定义一个三个变量,然后判断相加,后面的"n += 1"是为了不让while造成死循环,如果这里不加"n += 1"就会"n <= m"一直成立一直循环。
我们知道while条件成立就会造成死循环,那么我们如何避免这种情况呢?就需要说到下面的跳出循环
3.1 continue语句
continue是终止本循环并开始下次循环,这里在开始下一轮循环之前,会测试一下循环条件。
for i in range(10):
if i % 2 != 0:
print(i)
continue
这里在循环下加了一个判断,首先我们把判断去掉的话打印的应该是0到9的整数,但是在判断的时候必须是奇数,然后就在打印后跳出本轮循环后继续循环继续判断。如果看的还不是很明白的话,那么我们在写一个例子:
for i in range(10):
if i == 3:
print("1 + 1 = 3")
continue
else:
print(i)
打印结果:
0
1
2
1 + 1 = 3
4
5
6
7
8
9
如果判断的i等于的不是10以内的数,打印的结果应该是0到9。但是判断的等于3,for循环的时候条件成立的打印然后跳出在i等于3的循环,然后继续循环i等于4的循环。这个地方只需要基础跳出的是一次循环。
3.2 break语句
break是跳出的正个循环,终止循环,对比一下上面的例子大家就会明白。
for i in range(10):
if i == 3:
print("1 + 1 = 3")
break
else:
print(i)
打印结果:
0
1
2
1 + 1 = 3
判断成立打印结果,跳出正个循环,用while也是一样的。
m = 100
sum = 0
n = 1
while n <= m:
sum += n
n += 1
if n == 21:
break
print(sum)
这个时候计算的结果就不是100的总和了,而是20的总和因为在n等于20的时候加1判断成立跳出了正个循环。
作业:
下面下一个小程序,随意输入一个整数,打印出输入整数以内的所有素数,素数就是除了1和它本身整数的数都是素数,例如:1,2,3,5,7,11等。