Python入门之经典练习题

第 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)

猜你喜欢

转载自blog.csdn.net/weixin_43720619/article/details/89891235