python3的判断和循环

avatar 2020年4月2日18:03:56 评论 994 次浏览

在判断之前,我们需要用到一些运算,根据运算的结果进行判断是否正确。运算分为布尔运算、比较运算、逻辑运算

python3判断

python3中的判断只有一种if判断,分别为判断值,判断范围。举个例子我们判断一下输入的用户名,只有两种可能要么输入的用户名正确,要么输入的错误,如果判断学生成绩等级哪就应该是得A,还是得B,还是得C。这就需要一个范围了。那么我们就根据这两种例子诠释一下。

if判断格式

if 条件:
	满足条件
else;
	不符合条件

这里用到一个新的知识点就是输入,输出。输出是使用的print(),2.*版本的输出是print。输入就不一样了,在python3.*版本中对python2.*的raw_input()和input()进行了整合,去掉了raw_input(),只保留了input(),不过python3.*中input()输入的变量都会转成字符串,然后可以根据需要进行转换,不过2.*中输入字符串会报错。

下面我们判断一下我们输入的值满足不满足条件,如果满足条件就返回"yes",不满足就返回"NO"

#!/usr/bin/python3
#coding:utf-8
#吴老二个人博客~~~www.wulaoer.org
#判断和循环
name = input("输入你的名字:") #先输入变量
if name == "wulaoer":   #判断相等成立条件
	print("YES")		#条件成立打印yes
else:					#不相等的条件
	print("NO")			#打印NO

输出结果

输入你的名字:wulaoer
YES

使用到范围就需要一个比较,大于小于或等于,三种可能。不同的范围成绩等级是不一样的。下面我们看一下例子:

#!/usr/bin/python3
#coding:utf-8
#吴老二个人博客~~~www.wulaoer.org
num = int(input("输入你的成绩:"))
if num >= 90:
	print("A")
elif num <90 and num >= 60:
	print("B")
else:
	print("C")

输出结果

输入你的成绩:33
C

这里主要注意elif的用法,如果有多个判断增加elif即可,记住最后一个判断一定要使用else结尾。这个if判断的知识点就这么多,多练多记。

python3循环

python3的循环分两种,一种是for循环,一种是while循环,这里注意while循环用不好容易出现死循环,会导致系统崩溃,谨慎使用。下面针对两种循环分别诠释。

for循环

for循环就是循环对象中的所有元素一个一个的打印出来,可以结合if判断进行筛选,找出适合自己的然后在处理一下。下面看一下for循环的格式:

for 元素 in object:
	print("元素")

我们举个例子:循环一个列表,列表自己随意定义。

#!/usr/bin/python3
#coding:utf-8
#吴老二个人博客~~~www.wulaoer.org
wulaoer = ["python","运维服务","自动化开发"]
for i in wulaoer:
	print(i)

输出结果:

python
运维服务
自动化开发

这是循环的对象,如果循环整数的范围呢?这就需要使用新的知识点,range(),下面看一下range的用法:

#!/usr/bin/python3
#coding:utf-8
#吴老二个人博客~~~www.wulaoer.org
for i in range(4):
	print(i)

输出结果:

0
1
2
3

输出的整数是从0开始,如果range(a,b)有两个参数就是打印a到b的范围,如果再增加一个参数呢?看下面的例子:

#!/usr/bin/python3
#coding:utf-8
#吴老二个人博客~~~www.wulaoer.org
for i in range(1,10,3):
	print(i)

输出结果:

1
4
7

是否有什么发现,我们先看一下range的参数,首先打印的范围是1到10,后面还有一个参数3,就是间隔。可以理解为间隔数是3减1。好好琢磨一下,这个不难。下面看一个for嵌套if的例子:

#!/usr/bin/python3
#coding:utf-8
#吴老二个人博客~~~www.wulaoer.org
num1 = []
num2 = []
for i in range(11):
	if i%2 == 0:
		num1.append(i)
	else:
		num2.append(i)
print(num1,num2)

输出结果:

[0, 2, 4, 6, 8, 10] [1, 3, 5, 7, 9]

先申明两个列表,然后使用for循环循环一遍11(也就是0到10,为何到10参考一下索引),然后进行判断能够整除的追加到列表num1中,不能整除的追加到列表num2中。

for循环的扩展,我们在写脚本的时候如何生成一个平方列表,这个时候就直接像上面的格式有点low了,我们可以在列表中写一个循环,直接创建即可,看看下面的雷子:

#!/usr/bin/python3
#coding:utf-8
#吴老二个人博客~~~www.wulaoer.org
wulaoer=[i*i for i in range(10)]
print(wulaoer)

输出结果:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

这种方式直接生成一个平方列表,不过在程序中建议少用。一是这种方式用的少,二是不太符合逻辑。

遗留作业1:使用for循环生成一个列表,列表的元素必须为偶数,范围自己定义。

wulaoer = [i for i in range(11) if i%2 == 0]

遗留作业2:使用for循环修改列表的某一个元素,修改字符串中的一个字符,删除字符串中的一个字符,修改字典中的一个value

循环的break和continue

先说结束循环,再说while循环,因为到while循环的时候不结束循环,循环就会一直执行容易出现死循环,服务器出现死机。结束循环有两个一个是break一个地continue,两者的区别就是一个结束整个循环,一个结束这一次的循环。还使用上面的例子,只是在第一次判断下增加一个continue打印一下,然后换成break在打印一下你就会了解:

#!/usr/bin/python3
#coding:utf-8
#吴老二个人博客~~~www.wulaoer.org
num1 = []
num2 = []
for i in range(11):
	if i%2 == 0:
		break
		num1.append(i)
	else:
		num2.append(i)
print(num1,num2)

输出结果:

[] []

这说明第一次循环的时候已经结束了整个循环,把break替换成continue在打印你会发现两个申明的空列表一个有值一个空的,这说明能够整除2的循环都结束了,导致没有整数追加到列表num1中,所以是空的。两者的对比一目了然。

while循环

while循环也可以有两个条件,while判断后面跟一个else,也可以不跟,这里需要注意条件可以使用括号括起来也可以不实用括号。跳出循环可以for循环一样也是使用break和continue,如果满足条件就会持续的执行条件下的任务,不满足这结束。我们先看看while的格式:

while 条件:
	任务1
else:
	任务2

我们先写个例子,不过为了达到解释的目的,我会在后面做个解释,先看代码:

#!/usr/bin/python3
#coding:utf-8
#吴老二个人博客~~~www.wulaoer.org
wulaoer = 1
num = 1
while wulaoer < 8 and num > 0:
	wulaoer += 1
	print("第 %d 次打印"%num,wulaoer)
	num += 1

申明了两个变量,wulaoer是为了测试while的执行条件,num是为了记录执行次数,判断条件就是两个都要满足,使用and(这个在数据类型里有说)。wulaoer加1是为了下次判断,打印一下是为了记录条件成立后的第一次循环,第二次循环wulaoer的值从原来的1变成了2(上次循环的时候加了1),持续循环到wulaoer大于8不成立循环结束。看一下打印结果:

第 1 次打印 2
第 2 次打印 3
第 3 次打印 4
第 4 次打印 5
第 5 次打印 6
第 6 次打印 7
第 7 次打印 8

如果在上面的基础上去掉wulaoer小于8的条件,循环就会一直下去,不手动结束循环,while就不会停止,这就是我们说的死循环。

下面看看几个练习循环的例子:

1、有50枚硬币,可能包括4种类型:1元,5角,1角,5分。已知总价值为20元。求各种硬币的数量,比如:2,34,6,8 就是一种答案。而 2,33,15,0 是另一个可能的答案,显然答案不唯一。
你的任务是确定类似这样的不同的方案一共有多少个(包括已经给出的2个)?
可以看出这里的硬币数量和存在着 1元×20+5角×10+1角×2+5分=400   这样的关系的分类才符合题目的要求

#!/usr/bin/python3
#coding:utf-8
#吴老二个人博客~~~www.wulaoer.org
yuan1 = 100;jiao5 = 50;jiao1 = 10;fen5 = 5
yuan1_count = jiao5_count = jiao1_count = fen5_count = wulaoer = 0
for yuan1_count in range(0,51):
	for jiao5_count in range(0,51):
		for jiao1_count in range(0,51):
			for fen5_count in range(0,51):
				if (yuan1_count+jiao5_count+jiao1_count+fen5_count==50) and (yuan1*yuan1_count+ jiao5*jiao5_count+jiao1_count* jiao1+fen5_count* fen5==2000):
					print(yuan1_count,jiao5_count,jiao1_count,fen5_count)
					wulaoer += 1
print(wulaoer)

2、四平方和的定理又称拉格朗日定理:每个正整数都可以表示至多4个正整数的平方和。如果把0包括进去,就可以表示为4个数的平方和。
比如:

5=0^2+0^2+1^2+2^2         7=1^2+1^2+1^2+2^2

对于一个给定的正整数,可能存在多种平方和的表示法。要求你4个数排序:

0<=a<=b<=c<=d

并对所有的可能表示法按 a,b,c,d为联合主键升序排列,最后输出第一个表示法。程序输入为一个正整数N(N<5000000),要求输出4个非负整数,按从小到大排序,中间用空格分开,如,输入
5

3、古时候有个国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第1个棋盘格放1粒麦子,在第2个棋盘格放2粒麦子,在第3个棋盘格放4粒麦子,在第4个棋盘格放8粒麦子,......后一格的数字是前一格的两倍,直到放完所有棋盘格(国际象棋共有64格)。国王以为他只是想要一袋麦子而已,哈哈大笑。

#!/usr/bin/python3
#coding:utf-8
#吴老二个人博客~~~www.wulaoer.org
import math
wulaoer = 0
for i in range(1,65):
	sumn = math.pow(2,i-1)
	wulaoer += sumn
print(wulaoer)

以上是针对python3的for循环和while循环的用法以及,使用if判断。这里虽然知识点不多,但是用的时候比较常用,所以需要多多练习。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: