python例题(while、for循环的典型例题⼀)⼀、先了解⼀些python内部模块:
1、⽣成随机数(随机参数):
(1)利⽤集合set可变的的性质转化为随机的列表。
set1 = {1,2,3,4,'a'}
list1 = list(set1) # set是可迭代的,每次for遍历结果顺序不⼀样。
print(list1[0]) # 随机参数产⽣。
(2)利⽤random模块来⽣成:
详情见 while 语句⽂章。
⼆、⽐较典⾏的例题:
1、程序判断四个数的最⼤值:
# ⼀定要搞清楚 if elif else 语句(满⾜⼀个,退出条件,不执⾏其他所有条件代码)与同级并列 if 的区别。
a = int(input('请输⼊数字1:'))
b = int(input('请输⼊数字1:'))
c = int(input('请输⼊数字1:'))
d = int(input('请输⼊数字1:'))
max = 0
if a > b:
max = a
else:
max = b
if c > max:
max = c
if d > max :
print('输出最⼤值是:',d)
else:
print(max)
2、打印图形:
1、⽅法:⼀层⼀层分析,先⾥后外,寻循环次数与打印图形的关系。
略
i = 5
for j in range(1, 14, 2): # 设置步长为2
if j <= 7:
print(('*' * j).center(20)) # 利⽤⽅法居中
else:
print(('*' * i).center(20))
if i == 1: # 这个位置可以整合为双for循环
break
i -= 2
2、绝对值的妙⽤:
代码:
for i in range(-6,7):
for j in range(-6,7):
if abs(i) + abs(j) == 6: #
print('*',end='')
else:
python生成1到100之间随机数print(' ', end='')
print()
提⽰ : 双重循环的变种。
3、与电脑的猜拳游戏(⽤到random模块):
(1)第⼀种:穷举法(多层循环嵌套):即 (玩家 3 * 电脑 3): (2)分类解决:
# 第⼀种:
import random
list1 = ['⽯头','剪⼑','布']
tag = 1
while tag : # 标签,⽐break,continue灵活。
people = input('请输⼊⽯头、剪⼑、布:\n')
computer = random.choice(list1) # ⽣成随机参数
if people == computer:
print('平局,再来!')
# 这种相等的多个逻辑判断可以⽤: in 列表的⽅式,如第⼆种⽅法:
elif (people == '⽯头' and computer == '剪⼑') or (people == '剪⼑' and computer == '布') or \(people == '布' and computer == '⽯头') :
print('你赢了,恭喜')
tag = 0
else:
print('你输了,哈哈哈哈!')
# 第⼆种⽅法:
import random
list1 = ['⽯头','剪⼑','布']
tag = 1
while tag :
people = input('请输⼊⽯头、剪⼑、布:\n')
computer = random.choice(list1)
list2 = [['⽯头','剪⼑'],['剪⼑','布'],['布','⽯头']] # 定义了判断列表
if people == computer:
print('平局,再来!')
elif [people,computer] in list2: # in 的⽅式简单判断。
print('%s赢了%s' %(people,computer))
print('你赢了,恭喜')
tag = 0
else:
print('你输了,哈哈哈哈!')
4、100元买鸡的问题
(1)穷举法的典型例题(穷举法往往使⽤多层循环):
# 买⼩鸡问题(穷举法⽤的是多层循环!)
x = 0
while x <= 100: # 穷举公鸡的数量
y = 0
while y <= 100: # 穷举母鸡的数量
z = 0
while z <= 100: # 穷举⼩鸡的数量
if (x + y + z == 100) and (5*x + 3*y + z/3 == 100): # python3 除法有余数,所以不⽤考虑⼩数点。 print(x,y,z)
z += 1
y += 1
x += 1
#⽅法⼆: for
for x in range(0,21):
for y in range(0,34):
z = 100 - x - y # 减少重复项
if 5*x+3*y+z/3==100:
print(x,y,z)
五、 for循环、换⾏、print( , end=' ')⽤法:
题⽬: 输⼊⼀个数值,输出从1到这个数的所有奇数,并且每隔10个数换⼀⾏
num = input('请输⼊数字:\n')
m = 0
for i in range(1,int(num) + 1,2):
if m % 10 != 0 or m == 0:
print(i,end=' ')
m += 1
else:
m += 1 # 易错点,m变化不要忘记 i 会⾃动加1
print()
六、双for循环出规律:
题⽬: 使⽤for循环如何实现99乘法表
# 第⼀种
for i in range(1,10):
for j in range(1,11):
if i >= j:
if j <= 9:
print('%d X %d = %d' %(i,j,i*j),end=' ')
elif j == 9:
print()
else:
print()
break
#第⼆种:
#2. 使⽤for循环如何实现99乘法表
for i in range(1,10):
for j in range(1,i+1):
print('%d*%d=%d'%(i,j,i*j),end=' ')
print()
七、n*n 列表矩阵问题:
题⽬1:
代码:
m = [[1,2,3],
[4,5,6],
[7,8,9]]
n = [[2,2,2],
[3,3,3],
[4,4,4]]
# 列表解析:
list1 = [m[i][j]*n[i][j] for i in range(0,3) for j in range(0,3)] # for 循环
for i in range(0,3):
for j in range(0,3):
print(m[i][j]*n[i][j])
题⽬2:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论