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)
评论区