首页 > 其他分享 >周末小结

周末小结

时间:2022-10-07 17:37:05浏览次数:43  
标签:11 jason name 周末 dict l1 print 小结

数据类型与内置方法

  • 字符串操作与内置方法
(1).类型转换
str(其他数据类型)
ps:可以转任意数据类型(只需要在前后加引号即可)
1. 移除字符串首位的指定字符,可以选择方向  strip rstrip lstrip

s1 = '$$$jason$$$'
print(s1.strip('$'))# 去除首尾空格,移除字符串中首位指定字符jason
print(s1.rstrip('$')) # 移除左边指定的字符$$$jason
print(s1.lstrip('$'))#移除右边指定的字符jason$$$


2.大小写相关操作  lower
s2 = 'JaSoN666Sb'
print(s2.lower())# 将所有的英文字母变为小写
print(s2.upper())#将所有的英文字母变为大写
print(s2.islower())#判断字符串中所有的英文字母是否是纯小写
print(s2.isupper())#判断字符串中所有的英文字母是否为大写

3.判断字符串的开头或者结尾是否是指定的字符  startswith endwith
s3 = 'jason kevin jason tong 666'
print(s3.startswith('j')) #判断开头是否是j开头,答案True
print(s3.endswith('6'))#判断结尾是否6结尾,答案True

4.格式化输出  format
# 方式1:占位符:%s %d
# 方式2: format 方法的四种玩法
# 玩法1:跟占位符一样,使用{}占位
print('my name is {} my age is {}'.format('mm',18))
#玩法2:根据索引取值 可以反复使用
print('my name is {0} my age is {1} '.format('jason',20))
#玩法3 根据指名道姓的方法取值
print('my name is {name} my age is {age}'.format(name='jason',age = 18))
#玩法4:直接使用已经出现过的变量******
name = 'jason'
age = 12
print(f'my name is {name}c,my sge is {age}')


5.拼接字符串  join
s1 = '三月不努力 四月变垃圾'
s2= '年少不努力 妄为少年人'
#print(s1+s2) #如果字符串很大 ,加号效率较低
# print (s1 * 10)#重复次数
print('|'.join(s1))
#三|月|不|努|力| |四|月|变|垃|圾
print('$'.join(['jason','kevin','justin','tony']))
#jason$kevin$justin$tony
# join的元素必须都是字符串才可以,不然会报错 *****


6.替换字符串中指定的字符 replace
s4 = ' jason tong  beat jason age'
print(s4.replace('age','18'))  #必须是字符串才可以,数字也得加引号,不然报错
print(s4.replace( 'jason','18' ,2))
# 还可以通过数字控制替换的个数,从左往右***   没有从右往左的

7. 判断字符串中是否是纯数字  isdigitt
s5 = 'jason666.666'
print(s5.isdigit()) #里面是纯数字就True,带小数点就False

 8.判断数据的值有多少? len 数数*****
print(len(s5))
# 所有的数据类型都可以使用

  • 整型操作与内置方法
1.类型转换(将其他数据类型转换成整型)
int(其他数据类型)
ps:浮点型可以直接转,字符串必须满足内部是纯数字才可以


2.进制数转换
 十进制转其他进制
 print(bin(100)) # 0b1100100
 print (oct(100))#0o144
 print(hex(100))#0x64
 
 '''
 数字开头如果是0b则为二进制,0o则为八进制,0x则为十六进制
 '''
 其他进制转十进制
  print(int(0b1100100))   
  print(int(0o144))
  print(int(0x64))
  
  答:print(int("0b1100100",2))
      print(int("0o144",4))
      print("0x64",16)
 
 
 3.python语言自身对数字的敏感度比较低
   如果需要进准的计算需要借助于模块numpy....
 
  • 浮点型操作与内置方法
1.类型转换   float(其他数据类型)   字符串里面可以允许出现一个小数点,其他都必须是纯整数
2.python自身对数字的敏感度较低(精准度低) 如果需要进准的计算需要借助于模块numpy....

列表操作与内置方法

类型转换    list()必须要掌握的操作  
1.索引取值
l1=[111,222,333,444,555,666,777,888]
print(l1[0]) #111 从开头开始
print(l1[-1])#888  从后往前开始# 列表索引取值支持负数

 2.切片操作 
l1=[111,222,333,444,555,666,777,888]
print(l1[0:5])#[111,222,333,444,555] 顾头不顾尾
print(l1[:])#[111,222,333,444,555,666,777,888]
#取所有
l1=[111,222,333,444,555,666,777,888]
print(l1[::-1])
# [888,777,666,555,444,333,222,111]反过来取

3.统计列表中数据值的个数
len()
l1=[111,222,333,444,555,666,777,888]
print(len(l1)) #8

4.数据值更改
l1=[111,222,333,444,555,666,777,888]
l1[0]=123
print(l1)#[123,222,333,444,555,666,777,888]
#数据更改通过索引更改

5.列表添加数据值
方法一:尾部追加数据值
l1=[111,222,333,444,555,666,777,888]
l1.append('hello')
print(l1)
#[111,222,333,444,555,666,777,888,'hello']

方法二:任意位置添加数据值
l1.append([1,'world'])
print(l1)#从指定索引值添加指定数据值
#[111,222,333,444,555,666,777,888,['jason','kevin','jerry']]

方法三:扩展列表,合并列表

ll1=[11,22,33]
ll2=[44,55,66]
111.extend (112)
print(ll1)# [11,22,33,44,55,66]

 6.删除列表数据
方式一:通用的删除关键字del
del l1[0]
print(l1)# [222,333,444,555,666,777,888]
方式二:remove
l1=[111,222,333,444,555,666,777,888]
l1.remove(444) #括号内填写数据值
print(l1) # [111,222,333,555,666,777,888]
方式三:pop
l1=[111,222,333,444,555,666,777,888
l1.pop(3)#括号内填写索引值,不填写默认尾部弹出数据值
    print(l1)#[111,222,333,555,666,777,888]  
pop与remove的区别
    res = l1.pop(3)
    print(res)# 444
    resl = l1.remove(3)
    print(resl) # None
'''使用pop会返回删除数据的值 remove不会返回值'''

7.排序
ss = [99,44,77,11,88]
ss.sort()# 默认是升序
print(ss)#[11,44,77,88,99]

ss.sort(reverse=True)#改为降序
print(11.count(11)) #[99,88,77,44,11]

8.统计列表中某个数据值出现的次数
11 = [11,44,55,11,88,11]
print(11.count(11)) #3
    
9.颠倒列表的顺序
11= [11,44,55,11,88,11]
11.reverse()
print(11)
#[11,88,11,55,44,11]
  • 字典操作与内置方法
1.类型转换    
  dict()    
    字典的转换一般不使用关键字 而是自己动手转
2.字典必须要掌握的操作    
   user_dict = {    'username': 'jason',                          'password': 123,   
                'hobby': ['read', 'music', 'run']    }   
     1.按k取值(不推荐使用)    
     print(user_dict['username'])  # jason    
     print(user_dict['phone'])  
     k不存在会直接报错    
     2.按内置方法get取值(推荐使用)    
     print(user_dict.get('username'))  
     jason    
     print(user_dict.get('age'))  
    None    
     print(user_dict.get('username', '没有哟 嘿嘿嘿'))  
     jason   键存在的情况下获取对应的值    
     print(user_dict.get('phone', '没有哟 嘿嘿嘿'))  
     键不存在默认返回None 可以通过第二个参数自定义    
     3.修改值数据    
     print(id(user_dict))    
     user_dict['username'] = 'tony' 
     键存在则修改对应的值    
     print(id(user_dict))    
     print(user_dict)    
    4.新增键值对    
     user_dict['age'] = 18  
     键不存在则新增键值对    
     print(user_dict)    
    5.删除数据    
    del user_dict['username']    
     print(user_dict)    
     res = user_dict.pop('password')    
     print(user_dict)    
     print(res)  
     123   
    6.统计字典中键值对的个数   
     print(len(user_dict))  # 3    
    7.字典三剑客    
   print(user_dict.keys())  # 一次性获取字典所有的键 dict_keys(['username', 'password', 'hobby'])   
  print(user_dict.values())  # 一次性获取字典所有的值 dict_values(['jason', 123, ['read', 'music', 'run']])   
  print(user_dict.items())  # 一次性获取字典的键值对数据  dict_items([('username', 'jason'), ('password', 123), ('hobby', ['read', 'music', 'run'])])    
 for i in user_dict.items():    
     k, v = i    #     print(k, v)    
 8.补充说明    
 print(dict.fromkeys(['name', 'pwd', 'hobby'], 123))  # 快速生成值相同的字典    
 res = dict.fromkeys(['name', 'pwd', 'hobby'], [])    
 print(res)  # {'name': [], 'pwd': [], 'hobby': []}   
 res['name'].append('jason')   
 res['pwd'].append(123)    
 res['hobby'].append('study')    
 print(res)    
'''当第二个公共值是可变类型的时候 一定要注意 通过任何一个键修改都会影响所有'''    
res = user_dict.setdefault('username','tony')     print(user_dict, res)  # 键存在则不修改 结果是键对应的值   
 res = user_dict.setdefault('age',123)   
 print(user_dict, res)  # 存不存在则新增键值对 结果是新增的值    
user_dict.popitem()  # 弹出键值对 后进先出
  • 元组操作与内置方法
1.类型转换    
tuple()    
ps:支持for循环的数据类型都可以转成元组
2.元组必须掌握的方法     
t1 = (11, 22, 33, 44, 55, 66)   
# 1.索引取值    
# 2.切片操作    
# 3.间隔、方向    
# 4.统计元组内数据值的个数    
# print(len(t1))  # 6    
# 5.统计元组内某个数据值出现的次数    
# print(t1.count(11))    
# 6.统计元组内指定数据值的索引值    
# print(t1.index(22))   
# 7.元组内如果只有一个数据值那么逗号不能少    
# 8.元组内索引绑定的内存地址不能被修改(注意区分 可变与不可变)    
# 9.元组不能新增或删除数据

集合操作与内置方法

1.类型转换
	set()
	集合内数据必须是不可变类型(整型 浮点型 字符串 元组)
 	集合内数据也是无序的 没有索引的概念
2.集合需要掌握的方法
	去重
 	关系运算
	ps:只有遇到上述两种需求的时候才应该考虑使用集合
3.去重
	 s1 = {11, 22, 11, 22, 22, 11, 222, 11, 22, 33, 22}
 	 l1 = [11, 22, 33, 22, 11, 22, 33, 22, 11, 22, 33, 22]
    s1 = set(l1)
    l1 = list(s1)
    print(l1)
 	'''集合的去重无法保留原先数据的排列顺序'''
4.关系运算
	群体之间做差异化校验
 	eg: 两个微信账户之间 有不同的好友 有相同的好友
 	 f1 = {'jason', 'tony', 'jerry', 'oscar'}  # 用户1的好友列表
    f2 = {'jack', 'jason', 'tom', 'tony'}  # 用户2的好友列表
    # 1.求两个人的共同好友
    # print(f1 & f2)  # {'jason', 'tony'}
    # 2.求用户1独有的好友
    # print(f1 - f2)  # {'jerry', 'oscar'}
    # 3.求两个人所有的好友
    # print(f1 | f2)  # {'jason', 'jack', 'tom', 'tony', 'oscar', 'jerry'}
    # 4.求两个人各自独有的好友
    # print(f1 ^ f2)  # {'oscar', 'tom', 'jack', 'jerry'}
    # 5.父集 子集
    print(f1 > f2)
    print(f1 < f2)
  • 数据类型元组
用来判断事物的对错

如果想表示布尔值变量名可以加is

 True 对的,可行的

 False 错的,不可行的
  例如:"""
  很多程序中提供的注销账户的功能 其实底层并没有删除数据 而是修改了数据的状态
  id		username	password    phone    is_delete
  1		jason		123		   110     	 1
  2		kevin		321		   120		  0
  """

  python中所有数据都自带布尔值
  	布尔值为False的数据有:0 None '' [] {}
  	布尔值为True的数据有:除了上面的都是True
  存储布尔值的变量名一般推荐使用is开头
  	is_delete = False
   	is_alive = True

可变与不可变类型

可变类型    
   值改变 内存地址不变
 不可变类型    
   值改变 内存地址肯定变
可变数据类型是当该数据类型对应变量的值发生变化时,对应内存地址并没有开辟新的内存
'''列表,字典是可变类型'''
11 = [11,22,33]
print(id(11))
11.append(44)
print(11)# [11,22,33,44]
print(id(11))
不可变数据类型是当该数据类型对应变量的值发生变化时,原来内存中的值不变,而是会开辟一块新的内存,变量指向新的内存地址
'''整型,浮点型,布尔值,字符串,元组,都是不可变类型'''
res= '$$hello world$$'
print(res)#$$hello world$$
print(id(res))
res = res.strip('$')
print(res)# hello world
print(id(res))

与用户交互

input (输入),print(输出)

- 获取用户输入

1.先执行input获取用户输入

2.将输入的数据绑个变量名

input获取到的数据都会统一处理成字符串类型
输出(print)
1.括号内既可以放数据,也可以放变量名,逗号间隔开就好
2.换行,\n,简单方便
3.print也可以切换换行符
python2与python3中两个关键字的区别
 	python2中
    	input方法需要用户自己提前指定数据类型 写什么类型就是什么类型
 	 	 raw_input方法与python3中input一致 输入的统一处理成字符串	
	python2中
    	print方法有两种使用方式
        	print 数据值
           print(数据值)

格式化输出

%s:可以替然后数据类型占位
%d:只能替数字占位(占位符不管是多还是少,有几个占位符就需要几个数据值)
%09d:print('%09d' %12)000000012
 代码示范: dasc = '姓名:%s 年龄:%s  爱好:%s'
print( dasc %('jason',12,13))

基本运算符

1.数学运算符
    + - * / % // **
    简化写法
    n = 10
    n += 1  # n = n + 1   (20)
    n -= 1  # n = n - 1    (10)
    n *= 1  # n = n * 1    (10)
    n /= 1  # n = n / 1      (10)
    n %= 1  # n = n % 1     (0)
    n //= 1  # n = n // 1   (10)
    n **= 1  # n = n ** 1   (10)
2.比较运算符
	< > <= >= ==(等于号) !=(不等于)

常用赋值符

1.交叉赋值
让m和n互相转换绑定的值
m = 100
n = 99
m , n = n , m
print(m,n)
2.链式赋值
是指在一条链上
name = 'jason'
name1 = name
name2 = name1
name3 = name2
name4 = name3
name = name1 = name2 =name3 =name4 =name

3.解压赋值
 name_list = ['jason', 'kevin', 'tony', 'oscar']
    '''low的写法'''
    name1 = name_list[0]
    name2 = name_list[1]
    name3 = name_list[2]
    name4 = name_list[3]
    '''解压赋值语法'''
    name1, name2, name3, name4 = name_list
    '''解压赋值在使用的时候 正常情况下需要保证左边的变量名与右边的数据值个数一致'''
    a, b = name_list  # 变量名少了不行
    a, b, c, d, e = name_list  # 变量名多了也不行
    '''当需要解压的数据个数特别多 并且我们只需要使用其中的几个 那么可以打破上述的规则'''
    a, *b = name_list  # *会自动接收多余的数据 组织成列表赋值给后面的变量名
    print(a)  # jason
    print(b)  # ['kevin', 'tony', 'oscar']
     a, c, *b = name_list
     print(a)
     print(c)
     print(b)  # ['tony', 'oscar']
     a, *b, c = name

逻辑运算符

and 与
    and 链接多个条件 必须都成立
or  或
not 非    就是相反的

这个就是有一个条件,成立或者不成立,能够判断了之后就不继续执行了
'''
print(1 <10 and 666 and 1<4)  #输出结果只看最后一个条件的类型

'''

成员运算符

1.判断个体在不在群体内

name_list = ['jason', 'kevin', 'oscar', 'jerry'] print('tony' in name_list)  # False
print('tony' not in name_list)  # True
print('j' in name_list)  # False 列表最小单位是数据值 

身份运算符

is   :判断内存地址是否相同
== :判断数据值是否相同
"""
    值相同 内存地址可能不同
    内存地址相同 值肯定相同
"""

垃圾回收机制

 有一些语言,内存空间的申请和释放都需要程序员自己写代码才可以完成,但是python却不需要,通过垃圾回收机制自动管理
   1.引用计数
        l1 = [11, 22]  # 引用计数为1
   		l2 = [33, 44]  # 引用计数为1
   		l1.append(l2)  # l1 = [11, 22, l2列表]  引用计数为2
   		l2.append(l1)  # l2 = [33, 44, l1列表]  引用计数为2
		del l1  # 断开变量名l1与列表的绑定关系   引用计数为1
   		del l2  # 断开变量名l2与列表的绑定关系   引用计数为1
   当数据值身上的引用计数为0的时候,就会被当成垃圾一样回收
   当数据值身上的引用计数不为0的时候,永远不会被垃圾回收机制回收
   2.标记清除
      主要针对循环引用问题
    当内存占用达到临界值的时候,程序会自动停止,然后扫描程序中所有的数据
    并给只产生循环引用的数据打上标记,之后一次性清理
   3.分代回收
      垃圾回收机制的频繁运行也会损耗各项资源
      新生代,青春代,老年代(越往下检测频率越低)
      
  4.缺点
  该机制所带来的额外操作和需要回收的内存块成正比.

流程控制理论知识

流程控制:就是控制事物的执行流程
事物执行流程总共可以分为三总
1.顺序结构
从上往下依次执行,我们之前所编写的代码都属于该结构
2.分支结构
事物的执行会根据条件的不同做出不同的执行策略
3.循环结构
事物的执行会根据某个条件出现重复
1.python中使用代码缩进来表示代码的从属关系,缩进量一般为四个空格

从属关系:缩进的代码(子代码)是否执行取决于上面没有缩进的

2.并不是所有的代码都可以拥有缩进的代码(就是拥有子代码)

3.如果有多行子代码属于同一个父代码,那这些子代码需要保证是相同的缩进量

4.当某一行代码需要编写子代码的时候,那么这一行代码的结尾肯定需要冒号

5.相同缩进量的代码彼此之间平起平坐(同一排),安照顺序结构依次执行

分支结构

1.单if分支结构if语句:只有当指定条件为true时,这语句才会执行代码,在条件是false是在执行其他代码2.if- else 双分支双分支语句是两个互相排斥条件(两个条件一定会满足一个,不会同时满足,也不会同时不满足)3.if-else if-else多分支1.多分支所有的大括号代码最多也只会执行一个,只有当前面的条件不满足,才会到后面的条件判断2.多分支一定要以if开头,后面else if可以多个,结尾else可以省略
  代码展示:
    1.单if分支结构    
    if 条件:        
        条件成立之后才会执行的代码快    
        ps:单if可以借助于流程图理解    
        username = input('username>>>:')    
        if username == 'jason':         
         	print('老师好')
    2.if...else...双分支结构    
    if 条件:        条件成立之后执行的子代码           else:        条件不成立执行的子代码     
      username = input('username>>>:')   
    if username == 'jason':        
        print('老师好')   
        else:        
           print('去你妹的')
    3.if...elif...else多分支结构    
     if 条件1:       
            条件1成立之后执行的子代码                   elif 条件2:       
            条件1不成立 条件2成立执行的子代码   
     elif 条件3:      
            条件1和2都不成立 条件3成立执行的子代码       else:       
           上述条件都不成立 执行的子代码    
 ps:中间的elif可以写多个、上述子代码永远只会走一个     score = input('请输入学生成绩>>>:')  
    score = int(score)  # 将字符串的整数转换成整型的整数   
    if score >= 90:       
        print('优秀')    
   elif score >= 80:       
        print('良好')   
   elif score >= 70:        
        print('一般')   
   elif score >= 60:        
         print('及格')    
   else:        
          print('挂科 交钱重修')
 4.if的嵌套使用     
age = 28    
height = 170   
weight = 110   
is_beautiful = True    
is_success = False   
username = 'tony'    
if username == 'tony':       
    print('tony发现目标')        
    if age < 30 and height > 160 and weight < 150 and is_beautiful:           
        print('大妹纸 手机掏出来 让我加微信')            if is_success:                
            print('吃饭 看电影 天黑了...')                  else:                
            print('去你妹的 流氓!!!')                      else:           
            print('不好意思 认错人了')    
         else:       
             print('不是tony做不出来这件事')  

while循环结构

就是重复反复不停的循环

其中break的作用是可以跳出最内层的循环(即结束脱离循环)然后继续执行循环之后的代码。

(如果代码中包含多层循环,break只结束脱离最内层的循环)

continue的作用是可以结束本次单个循环,但是不结束脱离循环,然后继续执行该循环。

while 条件:循环体代码

else: 循环体代码没有被强制结束的情况下,执行完毕就会执行else子代码
1.死循环   真正的死循环是一旦执行,CPU会直线上升,直到系统采取紧急措施   尽量不要让死循环长时间运行 2.嵌套及全局标志位 
1.记住一个break只能结束它所在的那一层循环 
2.有几个while的嵌套循环,想一次性结束,就应该写几个break
3.如果不想反复写break,可以使用全局标志位

全局标志位代码演示

is_flag =True
while is_flag:
    username = input('username:')
    password = input('password:')
    if username == 'jason' and password =='123':
        while is_flag :
            cmd = input('请输入您的指令:')
            if cmd == 'q':
                is_flag = False
            print('正在执行您的指令:%s'% cmd)
    else:
        print('用户名或者密码错误')

代码演示

count = 1
while count < 5:
     print('hello world')
     count += 1  # count = count + 1
 print('想不想干饭?')

流程控制之for循环

for 循环能够做到的事情while都可以做到,只不过for在一些场景下使用更方便
主要场景是:循环获取存储多个数据的数据内部数据值
实际案例: 
     循环打印出列表中每一个数据值(while 索引取值>>>:超出范围会报错)
    name_list = ['jason', 'kevin', 'tony', 'oscar'] 
    count = 0
    while count < 4:
        print(name_list[count])
        count += 1
    for循环
    for i in name_list:
        print(i)
for循环语法结构
	for 变量名 in 待遍历的数据:
 		  for循环体代码
            
for循环特点
	1.擅长遍历取值
 	2.不需要结束条件 自动结束(遍历完)
    
for循环主要遍历的数据类型有(常见有 字符串、列表、元组、字典、集合)
	 info = 'hello world'
    for i in info:
        print(i)  # 单个单个字符
   	
    d = {'username': 'jason', 'password': 123}
    for i in d:
        print(i)  # 只有键参与遍历
    
for循环语法结构中的变量名如何命名
	1.见名知意
 	2.如果遍历出来的数据值没有具体的含义 可以使用常用的
    	i j k item v
        
for循环体代码中如果执行到break也会直接结束整个for循环

for循环体代码中如果执行到continue也会结束当前循环直接开始下一次循环

for 变量名 in 待遍历的数据:
    for循环体代码
else:
    for循环体代码没有被break强制结束的情况下运行完毕之后 运行

range方法

range可以简单的理解为是帮我们产生一个内部含有多个数字的数据
for i in range (101): #起始位置为0,终止位置为100
    print(i)#[0~100]
    
 for i in range (10,20): # 第一个起始位置 第二个终止位置
    print (i) 
   
  for i in range (1,20,2): # 第三个数为等差值,默认不写为1
      print(i)
    
"""
在python2中
range()直接产生一个列表,内部含有多个数值xrange()
其实就是python3 里面的range
在python3中
range()
类似于一个工厂,不会占用太多的内存空间,要就生产,不要就不生产
"""

标签:11,jason,name,周末,dict,l1,print,小结
From: https://www.cnblogs.com/lvqingmei/p/16760123.html

相关文章

  • 可持久化数据结构小结
    (CSP赛前复健,今年最后一次机会了,希望能拿个好成绩)可持久化数据结构就是总是可以保留每一个历史版本,并且支持操作的数据结构可持久化数组题目传送门:LuoguP3919题目描述......
  • 父子组件通信和this.setState()小结
    ReactNative从零开始笔记5-组件传值(父子组件/兄弟组件)父组件与子组件的互相通信this.setState的两种写法关于this.setState()的那些事......
  • C#快捷键小结
    常用一下快捷键均在VS2019下进行验证过,不同版本间有些许差异Ctrl+J或Alt+→:自动补全,后者更为精准 Alt+Enter:添加引用Ctrl+X:删除整行。Ctrl+D:复制并粘贴(不会占......
  • Svelte创建组件小结
    ·使用由HTML元素构成的简单易用语法来定义Svelte组件。script元素包含组件逻辑,style元素包含CSS样式,剩下的就是HTML标记。·向组件传递数据的常用方式是使用props。·Sv......
  • ML第26周学习小结
    本周收获总结一下本周学习内容:1、《深度学习》第十章:自然语言处理10.1词嵌入~10.7文本情感分类:使用循环神经网络......
  • 后缀数组小结
    后缀数组小结借用了一下别人的\(\rmblog\)。简介介绍一下基本数组。我们把原串\(\rmA\)的所有后缀按字典序从小到大排个序,则排名为\(\rmi\)的字符串是以第\(......
  • 类与对象的小结
    类和对象的初始化问题初始值public/private数据类型变量名=初始值 初始化块{初始化内容}/*非静态初始化块:作用:给对象进行初始化。对象一建立就运行,且优先于构造......
  • 关于PHP的webshell免杀小结
    0X00普通的一句话木马(适用于CTF和小站)<?phpeval($_POST['a']);?>//函数的相似替换<?phpassert($_POST['a']);?><?php@eval($_POST['110']);?>与第一个一句话木马......
  • Java中this和super关键字小结
    packagecom.itheima.test;/***@authorPzi*@create2022-09-2616:23*/publicclassA{privateStringname;privateStringpwd;public......
  • 周末总结
    周末总结Typora的下载与安装Typora是一款文本编辑器,市场使用率非常火爆。默认是收费的,但是我们使用的是免费的版本,注意不要更新,否则就要收费的!typora的下载:去官网下载......