面试题(杂记)

一、公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。

1.按金额循环

g = 5
m = 3
x = 1
for i in range(1, 21):
    for j in range(1, 34):
        for z in range(1, 101):
            if i * g + j * m + z / 3 * x == 100 and i + j + z == 100:
                print('{}只公鸡,{}只母鸡,{}只小鸡,一共{}文钱'.format(i, j, z, i * g + j * m + z / 3 * x))

在这里插入图片描述

2.按个数循环

for i in range(1, 21):
    for j in range(1, 34):
        z = 100 - i - j
        if i * 5 + j * 3 + z / 3 == 100 and z % 3 == 0:
            print('{}只公鸡,{}只母鸡,{}只小鸡,一共{}文钱'.format(i, j, z, i * 5 + j * 3 + z / 3))

在这里插入图片描述

二、打印如下图案

在这里插入图片描述

# 按#循环
# for j in range(4, -1, -1):
#     i = j + 1
#     print(i * '#', end='')
#     print((5 - i) * 2 * '*', end='')
#     print('*')

# 按*循环
for j in range(0,5):
    print((5-j)*'#',end='')
    print(j*2*'*'+'*')

三、九九乘法表

1.左下角

# 左下三角九九乘法表
for row in range(1,10): #打印行
    for col in range(1,row+1): #打印列
        print("{0}*{1}={2:2d}".format(row,col,row*col),end=" ")
#这里是用format函数进行格式化输出控制,{2:2d}是给{2}这个位置两倍的空间,对齐乘法表
#同时end是print函数内置方法,设置end=""print就不会进行换行操作
    print(" ") #这里是用print的特性,进行换行输出
1*1= 1  
2*1= 2 2*2= 4  
3*1= 3 3*2= 6 3*3= 9  
4*1= 4 4*2= 8 4*3=12 4*4=16  
5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25  
6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36  
7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49  
8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64  
9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 

2.左上角

# 左上角九九乘法表
for row1 in range(1,10): #打印行
    for col1 in range(row1,10): #打印列
        print("{0}*{1}={2:2d}".format(row1,col1,row1*col1),end=" ")
# 这里是用format函数进行格式化输出控制,{2:2d}是给{2}这个位置两倍的空间,对齐乘法表
# 同时end是print函数内置方法,设置end=""print就不会进行换行操作
    print(" ")
1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9  
2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18  
3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27  
4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36  
5*5=25 5*6=30 5*7=35 5*8=40 5*9=45  
6*6=36 6*7=42 6*8=48 6*9=54  
7*7=49 7*8=56 7*9=63  
8*8=64 8*9=72  
9*9=81  

3.右上角

#右上角九九乘法表
for row2 in range(9,0,-1): #打印行,使用了倒序9.8.7.6.....
    for block2 in range(9,row2,-1):
        print(end="       ")
    #上面的这个循环for打印出空格,控制乘法表格式。
    # 空格根据9-row2次打印对应空格数
    for col2 in range(row2,0,-1): #打印列
        print("{0}*{1}={2:2d}".format(row2,col2,row2*col2),end=" ")
# 这里是用format函数进行格式化输出控制,{2:2d}是给{2}这个位置两倍的空间,对齐乘法表
# 同时end是print函数内置方法,设置end=""print就不会进行换行操作
    print(" ")
9*9=81 9*8=72 9*7=63 9*6=54 9*5=45 9*4=36 9*3=27 9*2=18 9*1= 9  
       8*8=64 8*7=56 8*6=48 8*5=40 8*4=32 8*3=24 8*2=16 8*1= 8  
              7*7=49 7*6=42 7*5=35 7*4=28 7*3=21 7*2=14 7*1= 7  
                     6*6=36 6*5=30 6*4=24 6*3=18 6*2=12 6*1= 6  
                            5*5=25 5*4=20 5*3=15 5*2=10 5*1= 5  
                                   4*4=16 4*3=12 4*2= 8 4*1= 4  
                                          3*3= 9 3*2= 6 3*1= 3  
                                                 2*2= 4 2*1= 2  
                                                        1*1= 1 

4.右下角

for row3 in range(9,0,-1): #打印行,使用了倒序9.8.7.6.....
    for block3 in range(0,row3-1):
        print(end="       ")
    #上面的这个循环for打印出空格,控制乘法表格式。
    # row3循环到第几行打印第row3-1个空格。
    for col3 in range(9,row3-1,-1): #打印列
        print("{0}*{1}={2:2d}".format(row3,col3,row3*col3),end=" ")
# 这里是用format函数进行格式化输出控制,{2:2d}是给{2}这个位置两倍的空间,对齐乘法表
# 同时end是print函数内置方法,设置end=""print就不会进行换行操作
    print(" ")
                                                        9*9=81  
                                                 8*9=72 8*8=64  
                                          7*9=63 7*8=56 7*7=49  
                                   6*9=54 6*8=48 6*7=42 6*6=36  
                            5*9=45 5*8=40 5*7=35 5*6=30 5*5=25  
                     4*9=36 4*8=32 4*7=28 4*6=24 4*5=20 4*4=16  
              3*9=27 3*8=24 3*7=21 3*6=18 3*5=15 3*4=12 3*3= 9  
       2*9=18 2*8=16 2*7=14 2*6=12 2*5=10 2*4= 8 2*3= 6 2*2= 4  
1*9= 9 1*8= 8 1*7= 7 1*6= 6 1*5= 5 1*4= 4 1*3= 3 1*2= 2 1*1= 1  

5.一行代码搞定

print('\n'.join(['\t'.join(["%2s*%2s=%2s"%(j,i,i*j) for j in range(1,i+1)]) for i in range(1,10)]))

6.普通两种方法

# 第一种
for i in range(1, 10):
    for j in range(1, i+1):
        print('{}x{}={}\t'.format(j, i, i*j), end='')
    print()


# 第二种
row = 1
while row <10:
    col = 1
    while col <= row:
        print('{}*{}={}'.format(col, row, col * row), end = '\t')#见for循环的分析
        col += 1
    print()   #换行
    row += 1  #内循环结束,外循环加一

四、用Python去除字符串中空格、冒号、句号

a='1  2 jai:。nih你好!@#$%^&*()_+'
# 第一种使用replace替换
print(a.replace(':','').replace(' ','').replace('。',''))

# 第二种使用正则表达式
rule = re.compile(r"[^a-zA-Z0-9\u4e00-\u9fa5]")
line = rule.sub('', a)
print(line)
12jainih你好!@#$%^&*()_+
12jainih你好
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值