侧边栏壁纸
博主头像
张种恩的技术小栈博主等级

行动起来,活在当下

  • 累计撰写 748 篇文章
  • 累计创建 65 个标签
  • 累计收到 39 条评论

目 录CONTENT

文章目录

Python基础(6)之循环

zze
zze
2019-02-09 / 0 评论 / 0 点赞 / 585 阅读 / 5363 字

不定期更新相关视频,抖音点击左上角加号后扫一扫右方侧边栏二维码关注我~正在更新《Shell其实很简单》系列

while 循环

语法:

while <condition>:
    <code1>
[else:]
    [code2]

# 其中 condition 可以是表达式,其结果可转为布尔值;
# 当 condition 的结果为真时 code1 将会重复执行;
# 只有在 while 条件判断是假的时候才会执行这个 else,仅执行一次,如果循环是通过 break 退出的. 那么 while 后面的 else 将不会被执行。

例 1:输出 1 - 10。

i = 1
while i <= 10:
    print(i)
    i += 1

例 2:计算 1 - 100 的累加和。

sum = 0
i = 1
while i < 101:
    sum += i
    i += 1
print(sum)

例 3:打印一行十个小星星,奇数个打印 ★,偶数个打印 ☆。

i = 10
str = ''
while i > 0:
    i -= 1
    str += '★' if i % 2 == 1 else '☆'

print(str)

例 4:用一个循环,打印十行十列小星星。

i = 100
while i > 0:
    i -= 1
    print('★', end='')
    if i % 10 == 0:
        print()

例 5:一个循环,打印十行十列隔列变色小星星。

i = 100
while i > 0:
    i -= 1
    print('☆' if i % 2 == 0 else '★', end='')
    if i % 10 == 0:
        print()

例 6:一个循环,打印十行十列隔行变色小星星

i = 100
while i > 0:
    i -= 1
    print('☆' if i // 10 % 2 == 0 else '★', end='')
    if i % 10 == 0:
        print()

例 7:双层循环,打印十行十列隔列变色小星星。

j = 10
while j > 0:
    i = 10
    while i > 0:
        i -= 1
        print('★' if i % 2 == 1 else '☆', end='')
    print()
    j -= 1

例 8:双层循环,打印十行十列隔行换色小星星。

j = 10
while j > 0:
    i = 10
    while i > 0:
        i -= 1
        print('★' if j % 2 == 0 else '☆', end='')
    j -= 1
    print()

例 9:四个方向的九九乘法表。

**# a、正三角居左从上到下升序
i = 1
while i <= 9:
    j = 1
    while j <= i:
        print('{} * {} = {}'.format(j, i, i * j), end='\t')
        j += 1
    i += 1
    print()

print('-' * 100)
# b、正三角居右从上到下升序
i = 1
while i <= 9:
    j = 1
    print('        \t' * (9 - i), end='')
    while j <= i:
        print('{} * {} = {}'.format(j, i, i * j), end='\t')
        j += 1
    i += 1
    print()

print('-' * 100)
# c、倒三角居左从上到下降序
i = 9
while i >= 1:
    j = 1
    while j <= i:
        print('{} * {} = {}'.format(i, j, i * j), end='\t')
        j += 1
    print()
    i -= 1

print('-' * 100)
# d、倒三角居右从上到下倒序
i = 9
while i >= 1:
    j = 1
    print('        \t' * (9 - i), end='')
    while j <= i:
        print('{} * {} = {}'.format(i, j, i * j), end='\t')
        j += 1
    print()
    i -= 1**

例 10:100 ~ 999 中找吉利数字,如 111 222 123 321 888 ...

# 方法一:
i = 100
while i < 1000:
    first_num = i % 10
    second_num = i // 10 % 10
    third_num = i // 100
    if first_num == second_num == third_num \
            or first_num == second_num - 1 == third_num - 2 \
            or first_num - 2 == second_num - 1 == third_num:
        print(i)
    i += 1

print('-' * 100)
# 方法二:
i = 100
while i < 1000:
    first_num, second_num, third_num = [int(char) for char in str(i)]
    if first_num == second_num == third_num \
            or first_num == second_num - 1 == third_num - 2 \
            or first_num - 2 == second_num - 1 == third_num:
        print(i)
    i += 1

for 循环

语法:

for <item> in <iter>:
    code

其中 iter 是一个可迭代的对象,可以是字符串,也可以是元组、列表、集合、字典;
item 是可迭代对象中的元素;

例 1:遍历字符串,转大写输出。

for i in 'hello':
    print(i.upper(),end='')
'''
HELLO
'''

例 2:遍历列表。

lst = [1, 2, 3]
for i in lst:
    print(i)
‘’‘
1
2
3
’‘’

例 3:遍历元组。

tup = (1, 2, 3)
for i in tup:
    print(i)
‘’‘
1
2
3
’‘’

例 4:遍历集合。

set_val = {1, 2, 2, 3, 3}
for i in set_val:
    print(i)
‘’‘
1
2
3
’‘’

例 6:遍历字典。

dic_val = {'tom': '张三', 'jerry': '李四'}
for k, v in dic_val.items():
    print(k, v)
'''
tom 张三
jerry 李四
'''

例 7:现有 100 元,需要买 100 只鸡,公鸡 5 元一只,母鸡 3 元一只,小鸡 1 元三只,有多少种买法。

# 一共一百块
total_money = 100
# 需要买 100 只鸡
need_count = 100
# 公鸡 5 元一只
cock_price = 5
# 母鸡 3 元一只
hen_price = 3
# 小鸡 1 元三只
chick_price = 1 / 3

# 公鸡最多买的只数
cock_max_count = total_money // cock_price
# 母鸡最多买的只数
hen_max_count = total_money // hen_price
# 小鸡最多买的只数
chick_max_count = int(total_money // chick_price)

several_count = 0

for cock_count in range(cock_max_count + 1):
    for hen_count in range(hen_max_count + 1):
        for chick_count in range(chick_max_count + 1):
            if cock_count * cock_price + hen_count * hen_price + chick_count * chick_price <= total_money \
                    and cock_count + hen_count + chick_count == need_count:
                print('公鸡 {} 只,母鸡 {} 只,小鸡 {} 只'.format(cock_count, hen_count, chick_count))
                several_count += 1

print('共 {} 种'.format(several_count))

补充

range 函数

range 函数可以帮我们生成包含指定范围数字的可迭代对象,使用方法如下:

range(start, stop[, step])
    start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
    stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4] 没有5
    step:步长,默认为 1。例如:range(0, 5) 等价于 range(0, 5, 1)

例 1:求 1 - 100 之间所有数的和。

sum = 0
for i in range(1,101):
    sum += i

print(sum)

例 2:求 1-2+3-4+5 ... 99 的和。

sum = 0
for i in range(1,100):
    sum += i if i % 2 == 1 else -i

print(sum)
0

评论区