那些最好的程序员不是为了得到更高的薪水或者得到公众的仰慕而编程,他们只是觉得这是一件有趣的事情!
hello!大家好,我是小y同学,一个程序的结构就包括顺序结构、选择(判断)结构、循环结构,这一期,小y将为大家介绍一些简单的python循环与判断知识!
一、逻辑控制与循环
-
逻辑判断
-
逻辑判断一个复杂程序或功能必不可少的,if——else结构就是常见的逻辑控制手段,它可以告诉计算机什么时候该做什么,什么时候不用做什么。
-
逻辑判断的最基本准则——布尔类型(bool),布尔类型的数据只有True和False(注意要严格区分大小写),在计算机世界里1代表真,0代表假。
-
我们可以打开命令行或者终端进入python环境,或者直接在pycharm中选择python console(python控制台),或者进入python安装时自带的IDLE shell,输入下面代码:(小y使用的是IDLE shell)
-
我们每输入一行代码就会立刻得到结果,虽然他们的表达方式不同,但是结果只有True和False这两种类型,因此我们称但凡能够产生一个布尔值的表达式为布尔表达式。接下来我们一起看一下这些运算符号的意义和用法。
-
-
比较运算
-
顾名思义,如果比较式成立返回True,不成立返回False。
-
一些常见的比较运算符就是我们数学上常见的:==、!=、>、<、>=、<=等。
-
但是比较运算符的比较不仅仅局限于数字和数字之间比较
-
多条件比较,先给变量赋值,并在多条件下比较大小:
-
变量的比较,将两个运算结果储存到不同的变量中,再进行比较:
-
字符串的比较就是严格对比左右两边的字符串是否完全一致,注意:python中严格区分大小写,也就是大写和小写是不一样的东西:
-
两个函数产生的结果进行比较,比较运算符两边会先进行调用函数后再进行比较。
abs()是一个会返回输入参数绝对值的函数,len()是一个会返回输入字符串长度的函数。
-
-
比较运算的一些小细节
-
不同类型的对象不可以使用“<,>,<=,>=”进行比较,却可以使用‘==’和‘!=’,例如数字和字符串:
-
浮点数和整数虽然是不同类型,但是不影响比较运算:
-
布尔类型的比较实际上是对应的0和1比较:
实际上等价于:
-
-
成员运算符与身份运算符
-
成员运算符和身份运算符的关键词是in和is。把in放在两个对象中间的含义是前者是否存在于in后面的集合中,说到集合,这里简单给大家介绍一下列表(简单易懂的集合类型)。
-
字符串、浮点、整数、布尔类型、变量甚至是另外一个列表都可以存储在列表中,它是非常实用的数据结构。
-
创建列表如同创建变量:
album=[] # 创建了一个空列表
album = ["Black Star", "David Bowie", 25, True] # 创建一个非空列表 album.append("new song") print(album[0], album[-1])
-
我们可以使用in来检测字符串
"Black Star"“B”
是否在列表中,in和not in表示的是归属关系的运算符
-
is 和 is not,他们是身份鉴别的布尔运算符,python中任何一个对象都要满足身份、类型、值这三个点,缺一不可。
-
可以试着在IDLE shell中输入一下代码
当两个变量一致时,经过is对比之后会返回True
-
python中任何对象都可以判断其布尔值,除了0、None和所有的空的序列与集合(列表、字典、集合)布尔值是False之外,剩余的都是True,可以使用bool函数来判断:
-
-
布尔运算
-
and、or用于布尔值之间的运算
运算符 描述 not x 如果x是True,则返回False,否则返回True x and y and表示并且,只有x和y同时为True时才返回True,否则就返回False x or y or表示或者,只有x和y同时为False时才返回False,否则返回True -
and 和 or 经常用来处理符合条件,类似1<n<3
-
二、条件控制
-
if…else结构
-
基本结构
if condition:
缩进 do something
else:
缩进 do something
if和else是关键字,condition是成立的条件,注意冒号不要弄丢了,以及语句的缩进
-
用一句话来概括if…else结构的作用就是:如果…条件成立,就做…,反之,就做…
-
所谓的条件成立就是返回值为True的布尔表达式。
-
我们可以看一下以下代码(简单的用户登录密码判断过程)
def account_login(): password = input('Password:') if '12345' == password: print('Login success!') else: print('Wrong password or invalid input!') account_login() account_login()
第1行:定义函数,并不需要参数
第2行:使用input获取用户输入的字符串并存储在变量password中
第3、4行:设置条件,如果用户输入的字符串和预设的密码12345相等,执行打印文本’Login success!’
第5、6、7行:反之,如果用户输入的字符串和预设的密码12345不相等,会打印’Wrong password or invalid input!',并且会再次调用函数,让用户输入密码
第8行:调用函数
-
如果if后面布尔表达式过长或者难以理解,可以采取给变量赋值的办法来存储布尔表达式返回的布尔值
def account_login(): password = input('Password:') password_correct = '12345' == password if password_correct: print('Login success!') else: print('Wrong password or invalid input!') account_login() account_login()
-
-
if…elif…else结构
-
一般设计程序需要考虑到逻辑的完备性,并且对用户可能产生困扰的情况进行预防性设计,这个时候就需要多条件判断。
-
多条件判断只要在if和else之间加上elif即可,而且其判断的顺序也是依次进行的。
if condition:
缩进 do something
elif condition:
缩进 do something
else:
缩进 do something
-
我们可以给之前函数增加一个重置密码的功能
password_list = ['*#*#', '12345'] def account_login(): password = input('Password:') password_correct = password == password_list[-1] password_reset = password_list[0] if password_correct: print('Login success') elif password_reset: new_password = input('Enter a new password:') password_list.append(new_password) print('Your password has changed successfully!') account_login() else: print('Wrong password or invalid input') account_login() account_login()
第1行:创建一个列表,用于存储用户的密码,初始化密码和其他数据
第2行:定义函数
第3行:使用input获取用户输入的字符串,并存储到变量password中
第4行:当用户输入的密码等于的列表中最后一个元素时(即用户新设定的密码),登录成功
第5~12行:当用户输入的密码等于密码列表中的第一个元素时(即重置密码的口令),触发密码变更,并将新密码存储到列表的最后一个元素中,成为新的密码
第13~15行:反之,如果用户输入的字符串和预设的密码12345不相等,会打印’Wrong password or invalid input!',并且会再次调用函数,让用户输入密码
第16行:调用函数
-
三、循环
-
for循环
-
先看一个简单的例子:(使用for循环打印出字符串“Hello word”中每一个字符)
for every_letter in 'Hello word': print(every_letter)
-
-
将for循环所做的事情概括就是:于…其中的每一个元素,做…事情
for item in iterable:
缩进 do somethingfor是关键字,紧跟着后面的是一个可以容纳“每一元素”的变量名称,在关键字in后面所对应的一定是具有可迭代的或者说是像列表那样的集合形态的对象,即可以连续的提供其中每一个元素的对象
-
我们可以使用一个内置函数,range函数,来完成以下操作
for num in range(1, 11):# 不包含11,实际范围是1~10 print(str(num) + '+1= ' + str(num + 1)) print(str(num) + '+1=', num + 1)
-
嵌套循环
-
嵌套循环就是两个或者多个循环嵌套在一起使用。
-
我们可以使用for循环打印乘法口诀
for i in range(1, 10): for j in range(i, 10): print(f"{i} * {j} = {i * j}", end='\t') # 给默认换行改为制表符 print("") # 每一种后面换行
-
-
while循环
-
python中还有另外一种循环是while循环,它与for循环的相同点都是可以重复一件事,但是不同点是for循环会在可迭代是序列被穷尽时停止,但是while循环只要条件成立就会一直做下去(因此我们在写程序时要注意while循环的条件,避免进入死循环)
-
while循环概括成一句话:只要…条件成立,就一直做…
while condition:
缩进 do something
-
我们可以看一个死循环的例子(注意及时停止运行代码)
while 1: print('这是一个死循环')
-
-
我们可以在循环中制造某种可以使循环停下来的条件
count=0 while True: print('Repeat this line!') count=count+1 if count==5: break
第1行:创建了一个count变量,值为0,目的是计数
第2~4行:循环打印’Repeat this line!',并且每打印一次给计数变量count加1
第5~6行:如果计数变量的值等于5,跳出循环
-
以上代码还可以改成这样
count = 0 while count < 5: print('Repeat this line!') count = count + 1
至此,小y已经向你介绍了简单的python循环与判断知识啦!
不足之处,希望友友们可以留言多多指教!另外,码字不易,希望友友们可以给个点赞、收藏+关注,给小y更多的创作动力!😜😜😜