Python基础入门 | Day2 条件与循环
用法查询
在此,总结条件语句与循环语句一些常见的使用方法,希望这可以使一些记不住它们两脚兽(比如笔者本人)更高效地脱发
条件语句
条件语句 if 作为大多数语言的本土物种,允许使用者进行判断并执行相应的代码块。除此之外,
if '用户愿意使用bool运算等逻辑方法' is True:
print('if将会支持更复杂的判断')
1. 最基础的if判断
#说实话,我觉得没人想看这条
和大多数语言一样,python中的if支持了>,<,==,<=,>=,and,or,not等逻辑。当然,如果用户对自己的逻辑有自信,可以在这里随意使用bool值
if 2 > 1 and not 2 > 3:
print('Correct Judgement!')
# Correct Judgement!
A = [1,2,3]
if 3 in A:
if 2 in A:
if 0 not in A:
if 1:
if not '':
print('Correct Judgement!')
# Correct Judgement!
2. if…elif…else
elif 语句即为 else if,用来检查多个表达式是为真,并在为真时执行特定代码块中的代码
有研究指出这种用法会在一定程度侵占if嵌套的生存空间,但笔者认为应该具体问题具体分析
temp = input('请输入成绩:')
source = int(temp)
if 100 >= source >= 90:
print('A')
elif 90 > source >= 80:
print('B')
elif 80 > source >= 60:
print('C')
elif 60 > source >= 0:
print('D')
else:
print('输入错误!')
#请输入成绩:99
#A
3. assert(断言)
assert断言不同于两脚兽在数学证明中使用的概念
事实上,assert可以伴随等于True或者False的bool值
当且仅当assert False,程序自动崩溃并AssertionError
A = [1,2,3]
assert 1 in A
print('Correct Judgement!')
#Correct Judgement!
my_list = ['lsgogroup']
my_list.pop(0)
assert len(my_list) > 0
# AssertionError
循环语句
一般的,Python目循环科有for和whlie两个属
在此,分别介绍循环和一些在使用循环时能保护用户头发的方法
循环
1. while循环
while语句最基本的形式包括一个位于顶部的bool表达式,一个或多个属于while代码块的缩进语句。
笔者希望用户填写的bool表达式有等于False的可能
嘿,朋友,我用我奶奶泡的蜜桃茶发誓,无论如何,你真的应该试试while Ture:
#无聊的时候可以玩一下这个游戏
#当然,笔者更希望用户无聊的时候来给笔者点个赞
count = 0
while count < 3:
temp = input("猜一猜小姐姐想的是哪个数字?")
guess = int(temp)
if guess > 8:
print("大了,大了")
else:
if guess == 8:
print("你太了解小姐姐的心思了!")
print("哼,猜对也没有奖励!")
count = 3
else:
print("小了,小了")
count = count + 1
print("游戏结束,不玩儿啦!")
while True:
learn()
while False:
laze()
2. while - else 循环
当while循环圆满完成使命,执行else输出
如果while循环中执行了跳出循环的语句,比如 break,else的代码块将被忽略
#哦我的天啊,明明额外声明一个bool值,用判断语句可以实现更复杂的功能的,这个用法一点也不符合我的审美
count = 0
while count < 5:
print("%d is less than 5" % count)
count = count + 1
else:
print("%d is not less than 5" % count)
# 0 is less than 5
# 1 is less than 5
# 2 is less than 5
# 3 is less than 5
# 4 is less than 5
# 5 is not less than 5
#建议用户自己运行几遍
i = 0
while i < 2:
coin = input('是否白嫖(请输入是或否):')
if coin == '是':
print('下次一定')
break
elif coin == '否':
print('感谢观众老爷的三连')
break
else:
pass
i += 1
else:
print('感谢使用')
3. for 循环
从定义上讲: for循环是迭代循环,在Python中相当于一个通用的序列迭代器,可以遍历任何有序序列,如str、list、tuple等,也可以遍历任何可迭代对象,如dict。每次循环,迭代变量被设置为可迭代对象的当前元素,提供给代码块使用。
用两脚兽语,用户只需要给for一个可以遍历的对象,for语句就会遍历这个对象并用得到的值来执行跟随的代码块
#好吧我承认,用定义更好
for i in 'ILoveLSGO':
print(i, end=' ') # 不换行输出
# I L o v e L S G O
4. for - else 循环
当for循环正常执行完的情况下,执行else输出,如果for循环中执行了跳出循环的语句,比如 break,将不执行else代码块的内容
用户可能会发现这好像与while - else语句一样,这里笔者澄清一下:
没错,就是一样
for num in range(10, 20): # 迭代 10 到 20 之间的数字
for i in range(2, num): # 根据因子迭代
if num % i == 0: # 确定第一个因子
j = num / i # 计算第二个因子
print('%d 等于 %d * %d' % (num, i, j))
break # 跳出当前循环
else: # 循环的 else 部分
print(num, '是一个质数')
# 10 等于 2 * 5
# 11 是一个质数
# 12 等于 2 * 6
# 13 是一个质数
# 14 等于 2 * 7
# 15 等于 3 * 5
# 16 等于 2 * 8
# 17 是一个质数
# 18 等于 2 * 9
# 19 是一个质数
方法
for Genus in [‘for’,‘while’]:
print(’{}往往会伴随一些函数或语句出现,这里笔者不负责任地将他们统一称为方法’.format(Genus))
1.range() 函数
range([start,] stop[, step=1])
3个参数,中括号中参数可选
step=1,参数step的默认值是1
range 生成了一个从start到stop的数字序列,
该序列包含start但不包含stop
for i in range(1, 10, 2):
print(i)
# 1
# 3
# 5
# 7
# 9
2.enumerate()函数
enumerate(sequence, [start=0])
sequence:一个序列、迭代器或其他支持迭代对象。
start:下标起始位置。
返回 enumerate(枚举) 对象
注意第一个例子
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
lst = list(enumerate(seasons))
print(lst)
# [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
for i, language in enumerate(languages, 2):
print(i, 'I love', language)
print('Done!')
# 2 I love Python
# 3 I love R
# 4 I love Matlab
# 5 I love C++
# Done!
#我打赌有人想到了笛卡尔积或者不交并,我打赌这个人就是我
3.break/continue 语句
break语句可以跳出当前所在层的循环
相对的,continue终止本轮循环并开始下一轮循环
import random
secret = random.randint(1, 10) #[1,10]之间的随机数
while True:
temp = input("猜一猜小姐姐想的是哪个数字?")
guess = int(temp)
if guess > secret:
print("大了,大了")
else:
if guess == secret:
print("你太了解小姐姐的心思了!")
print("哼,猜对也没有奖励!")
break
else:
print("小了,小了")
print("游戏结束,不玩儿啦!")
#猜一猜小姐姐想的是哪个数字?8
#你太了解小姐姐的心思了!
#哼,猜对也没有奖励!
#游戏结束,不玩儿啦
#这只是一个例子,这只是一个例子!
for i in range(10):
if i % 2 != 0:
print(i)
continue
i += 2
print(i)
# 2
# 1
# 4
# 3
# 6
# 5
# 8
# 7
# 10
# 9
4.pass 语句
Python不会像慷慨的笔者一样允许用户在必须填写代码块的位置留下空白
def a_func():
# SyntaxError: unexpected EOF while parsing
pass语句就是用来解决这个问题的
事实上,它的意思是“什么都不做”
def a_func():
pass
a_func()
#
#你在期待什么?
推导式
推导式描述了已知可遍历对象繁殖新可遍历对象的过程
对推导式的描述被认为是有必要的,因为浅尝辄止则不会思考这种事,而笔者希望尊贵的用户能用这一工具保护自己的头发
研究表明,掌握了这种繁殖方式的用户可以对可遍历对象进行大规模养殖
1.列表推导式
[ expr for value in collection [if condition] ]
a = [(i, j) for i in range(0, 3) if i < 2 for j in range(0, 3) if j >= 0]
print(a)
# [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)]
2.元组推导式
( expr for value in collection [if condition] )
a = (x for x in range(10))
print(a)
# <generator object <genexpr> at 0x0000025BE511CC48>
print(tuple(a))
# (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
3.字典推导式
{ key_expr: value_expr for value in collection [if condition] }
b = {i: i % 2 == 0 for i in range(10) if i % 3 == 0}
print(b)
# {0: True, 3: False, 6: True, 9: False}
4.集合推导式
{ expr for value in collection [if condition] }
c = {i for i in [1, 2, 3, 4, 5, 5, 6, 4, 3, 2, 1]}
print(c)
# {1, 2, 3, 4, 5, 6}
笔者理解
判断语句
- 需要进行判断时使用
- 本质在判断bool值为True还是False
循环语句
- for进行遍历
- 循环…else结构与额外bool值
- range()的“包括性”:左包右不包
- enumerate()返回 enumerate(枚举) 对象
- 推导式可以理解为一种“构造方法”
没有别的指南了,你现在要靠自己了。
祝你好运。