Python3入门基础(05)循环语句

Python3 循环语句

Python 中的循环语句有 for 和 while。没有 do…while 循环。

  • 无限循环可以通过设置条件表达式永远 为真 来实现无限循环。
  • break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
  • continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环。

1. for 循环

Python for 循环可以遍历任何可迭代对象,如一个列表或者一个字符串。

sites = ["BaiDu", "Google", "WiKi", "TaoBao"]
for i in range(len(sites)):
    print(i, sites[i])

2. while 循环

while 语句的一般形式:

import random

# 该实例演示了数字猜谜游戏(无限循环)
luckNumber = 9
print("数字猜谜游戏!(输入-1可结束游戏)")
while True:
    inputNumber = int(input("请输入你猜的数字:"))
    if luckNumber == inputNumber:
        print("恭喜,你猜对了!")
        luckNumber = random.choice(range(10))
        print(luckNumber)
        print("再来一局吧 ~ ~ ~")
    elif inputNumber == -1:
        print("游戏结束!")
        break
    elif luckNumber > inputNumber:
        print("猜的数字小了...")
    else:
        print("猜的数字大了...")

break 和 continue 语句及循环中的 else 子句:
循环语句可以有 else 子句,它在穷尽列表(以for循环)或条件变为 false (以while循环)导致循环终止时被执行,但循环被 break 终止时不执行。

print("找找质数游戏!")
inputX = int(input("请输入一个数字:"))
zhiShuArr = []
for x in range(0, inputX):
    for y in range(2, x):
        if x % y == 0:
            print(x, '等于', y, '*', x//y)
            break
    else:
        # 循环中没有找到元素
        print(x, ' 是质数')
        zhiShuArr.append(x)
print("找到了!%s以内的所有质数是:%s" % (inputX, zhiShuArr))

3. 推导式

Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。

3.1. 列表(list)推导式

"""
列表推导式
[表达式 for 变量 in 列表] 
或
[表达式 for 变量 in 列表 if 条件]
"""
names = ['Google', 'Taobao', 'WeiXin', 'Facebook', 'Zhihu', 'Baidu']
new_names = [name.upper() for name in names if len(name) > 5]  # 过滤掉长度小于或等于5的字符串列表,并将剩下的转换成大写字母
print(new_names)

multiples = [i for i in range(30) if i % 3 == 0]
print(multiples)

'''
['GOOGLE', 'TAOBAO', 'WEIXIN', 'FACEBOOK']
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
'''

3.2. 字典(dict)推导式

"""
字典推导式
{key_expr: value_expr for value in collection}
或
{key_expr: value_expr for value in collection if condition}
"""
listDemo = ['Google', 'Taobao', 'WeiXin', 'Facebook', 'Zhihu', 'Baidu']
newDict = {key: len(key) for key in listDemo if len(key) > 5}  # 将列表中各字符串值为键,各字符串的长度为值,组成键值对
newDict2 = {key for key in listDemo}
print(newDict)
print(newDict2)

'''
{'Google': 6, 'Taobao': 6, 'WeiXin': 6, 'Facebook': 8}
{'Google', 'Zhihu', 'Baidu', 'Taobao', 'WeiXin', 'Facebook'}
'''

3.3. 集合(set)推导式

"""
集合推导式
{expression for item in Sequence}
或
{expression for item in Sequence if conditional}
"""
listDemo = ['Google', 'Taobao', 'WeiXin', 'Facebook', 'Zhihu', 'Baidu']
newSet = {value.upper() for value in listDemo if len(value) > 5}
print(newSet)
listDemo = {x for x in 'abracadabra' if x not in 'abc'}  # 判断不是 abc 的字母并输出
print(listDemo)

'''
{'WEIXIN', 'FACEBOOK', 'GOOGLE', 'TAOBAO'}
{'r', 'd'}
'''

3.4. 元组(tuple)推导式

"""
元组推导式(生成器表达式)
元组推导式可以利用 range 区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的元组。
元组推导式和列表推导式的用法也完全相同,只是元组推导式是用 () 圆括号将各部分括起来,而列表推导式用的是中括号 [],另外元组推导式返回的结果是一个生成器对象。

(expression for item in Sequence)
或
(expression for item in Sequence if conditional)
"""
listDemo = ['Google', 'Taobao', 'WeiXin', 'Facebook', 'Zhihu', 'Baidu']
newTuple = (value.upper() for value in listDemo if len(value) > 5)
print(newTuple)
print(tuple(newTuple))

listDemo = (x for x in range(1, 10))
print(listDemo)
print(tuple(listDemo))

'''
 at 0x00F9A108>
('GOOGLE', 'TAOBAO', 'WEIXIN', 'FACEBOOK')
 at 0x02EDEB18>
(1, 2, 3, 4, 5, 6, 7, 8, 9)
'''

你可能感兴趣的:(Python,python,numpy,Python3,开发语言)