Python日报0416

原日报0412,然而摸到了现在_(:3」∠)_

分支与循环

"""
replace()方法语法:

    str.replace(old, new[, max])

    old -- 将被替换的子字符串。
    new -- 新字符串,用于替换old子字符串。
    max -- 可选字符串, 替换不超过 max 次

count()方法语法:

    str.count(sub, start= 0,end=len(string))

    sub -- 搜索的子字符串
    start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
    end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。

杨辉三角:

    第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。

    每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。
    即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即 C(n+1,i)=C(n,i)+C(n,i-1)。
"""
from typing import Optional
import numpy as np


class Str(str):
    def replace(self, __old: str, __new: str, __count: int = ...) -> str:
       ## if isinstance(self,str):
            var = [self]
            __max = self.count(__old)
            if self.find(__old) == -1:
                return self
            if __count == ... or __count > __max:
                __count = __max
            for i in range(__count):
                label = var[i].find(__old)
                var += [var[i][:label] + __new + var[i][label + 1:]]

            return var[-1]

       ## else : print(type(self))

    def count(self, x: str, __start: Optional[int] = ..., __end: Optional[int] = ...) -> int:
        if __start == ... or __start >= len(self):
            __start = 0
        if __end == ... or __end >= len(self):
            __end = len(self)
        arg = [self]
        __max = len(self)
        for i in range(__max):
            label = arg[i].find(x)
            if label == -1:
                return len(arg) - 1
            arg += [arg[i][:label] + arg[i][label + 1:]]


def yanghui_triangle(x):
    x += 1
    print('1'.center(48))

    __list = [[... for _ in range(x)]for _ in range(x)]
    __str = ['' for _ in range(x)]

    for i in range(2,x):
        __list[i][0] = 1
        for j in range(1, i-1):
            __list[i][j] = __list[i-1][j-1] + __list[i-1][j]
        __list[i][i - 1] = 1

        for j in range(i):
            __str[i] += str(__list[i][j])
            __str[i] += '   '
        print(__str[i].center(50), end='\t')

        print()

    print()



a = Str('sdsdsdsdsdsdsd')
## b = Str(254)
print(a.replace('d', 'r', 3))
print(a.replace('d', 'r'))
print(a.replace('f', 'r'))
print(a.replace('d', 'r', 10))
## print(b.replace('d', 'r', 10))

print('-'*20)

for i in range(3):
    yanghui_triangle(np.random.randint(1, 11))
C:\Users\user\AppData\Local\Programs\Python\Python38\python.exe C:/Users/user/AppData/Roaming/JetBrains/PyCharmCE2020.3/scratches/scratch.py
srsrsrsdsdsdsd
srsrsrsrsrsrsr
sdsdsdsdsdsdsd
srsrsrsrsrsrsr
--------------------
                       1                        
                     1   1                        	
                   1   2   1                      	
                 1   3   3   1                    	

                       1                        
                     1   1                        	
                   1   2   1                      	
                 1   3   3   1                    	
               1   4   6   4   1                  	
            1   5   10   10   5   1               	
         1   6   15   20   15   6   1             	
       1   7   21   35   35   21   7   1          	

                       1                        
                     1   1                        	
                   1   2   1                      	
                 1   3   3   1                    	
               1   4   6   4   1                  	
            1   5   10   10   5   1               	
         1   6   15   20   15   6   1             	
       1   7   21   35   35   21   7   1          	
    1   8   28   56   70   56   28   8   1        	


进程已结束,退出代码0

问题1:replace不知道怎么判断类型。if isinstance 和 else 的组合判断无法做到类型不符的时候打印输入的数据类型,而是直接把254打印了出来(见注释)。判断条件换成type(self) is not str 情况也一样。
高情商:深刻地复习了列表与字符串的函数和方法
低情商:被基础数据结构暴打_(:3」∠)_
要说学到了什么东西,也没有。都是旧知识,但是太零碎了,只能多打,不然各种原来如此,早就知道。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值