第 1 题,输出九九乘法表
分析思路:
1. for 循环机制,先取第一个for循环i的第1个值,跟j遍历完来组合。11 12 13 ... 21 22 23...
得出结论,此处的 i 无需做限制。
2. 找规律
第1行: j = 1 i = 1
第2行: j = 1,2 i = 2
第3行: j = 1,2,3 i = 3
得出结论:j 的最大取值不可大于 i ,只能小于等于,故限制 j 取值范围(1, i+1) => range 函数左闭右开
3. 注意点:
必须使用格式化输出,\t制表符排版,j 遍历完一次就必须换行。
for i in range(1, 10):
for j in range(1, i+1):
print("%d*%d=%d" % (j, i, i*j), end="\t")
print()
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
第 2 题,有 1 2 3 4 这四个数字,能组成多少个互相不同且无重复数字的 3 位数,分别是什么。
思路:要组成几位数,就用几个for循环,无论给了几个数字,全部放进列表,都不用改代码。
count = 0
m = [1, 2, 3, 4]
for a in m:
for b in m:
for c in m:
if a != b and b != c and a != c:
count += 1
print(a, b, c)
print()
print("能组成%d 个不相同且无重复的3位数" % count)
第 3 题,跟电脑玩剪刀石头布游戏,一直循环玩,可手动退出,不玩了就计算玩家胜率
def play_game():
# 总把数
count = 0
# 胜率把数
player_win = 0
while True:
import random
computer = random.randint(1, 3)
player = int(input("请输入数字,1剪刀,2石头,3布,0手动退出:"))
# 手动退出游戏
if player == 0:
# 判断一次没玩就退出游戏
if count == 0:
print("您还没开始游戏!!!")
break
print("游戏结束!!!")
print("玩家玩了:%d把,赢了:%d把,胜率:%.2f%%" % (count, player_win, player_win/count * 100))
break
# elif player < 1 or player > 3:
elif player not in (1, 2, 3):
print("请输入1-3之间的数字")
# 增加换行,美化显示效果
print()
continue
# 把数计数
count += 1
print("电脑出拳为:%d" % computer)
if player == computer - 1 or player == computer + 2:
print("玩家胜利!")
# 玩家胜利计数
player_win += 1
elif player == computer:
print("平局!")
else:
print("电脑胜利")
print()
play_game()
第 4 题,寻找15到20岁的女孩子当拉拉队员,询问,符合要求输出加入成功,询问10次后,输出满足条件总人数
member = {}
count = 0
met_count = 0
def laladui(num):
global met_count
if num["gender"] == "女" and 15 <= num["age"] <= 20:
print("可以加入球队!")
met_count += 1
else:
return
while True:
gender, age = eval(input("请输入性别(加引号),年龄:"))
member["gender"] = gender
member["age"] = age
laladui(member)
count += 1
if count > 5:
print()
print("已经询问过%d个人" % count)
print("符合条件的人数是:%d" % met_count)
break
第 5 题,利用 for 循环给列表 ls = [1,7,4,89,34,2,100,0] 从小到大排序,==>冒泡排序法
思路:先取列表的第一个数字,依次跟后面的数字比较大小,如果第一个数字比后面的大,则交换位置。
利用下标来取值,第一个数字a依次从 第一位取到倒数第一位(把最后一位留给第二个数字b来取,好做比较)
第二个数字b依次从第二位取到最后一位。以此类推,当把列表中数字取完,结果就出来了。
a = [1, 7, 4, 89, 34, 2, 100, 0]
for i in range(0, len(a)-1):
for j in range(i+1, len(a)):
if a[i] > a[j]:
a[i], a[j] = a[j], a[i]
print(a)