Python 编程基础(类似一二年级的+-×/)

本文介绍了Python编程中的基本概念,如变量作为指针,字符串的定义与操作,包括下标访问、不可变性以及转义字符。讨论了字符串的拼接、格式化输出以及逻辑判断。此外,还涵盖了列表的创建、修改、切片和遍历,以及元组的特性。文章强调了列表与字符串之间的区别,并举例说明了不同类型的序列操作。
摘要由CSDN通过智能技术生成

一: 数学用两点来定义直线  ,python 也有公理 :变量都是指针 

1.注释 # crtl+l
2.变量 --是指针,指向地址 : (应该是这个底层逻辑,较小的数字启动时已经分配好内存)
	myvar= 'abc'/‘7’ : (myvar)□--->> □->>'abc'♦ ;(系统先创建一个abc)
		(特殊)myvar1 =7 : (myvar)□ --->> 7♦  系统内本来就有7作为内存
3.赋值语句:    # a,b = (1,2) 
4.程序顶格写不能随便加空格
5.调用函数是() ,切片索引是[] : eg:a =list(3,5,7)

二、字符串

    基本概念
1. 引号{ ‘’ ,     "" ,    ‘“ ”’ }  括起来的就是字符串。# ‘7’与7 不同
2. 字符串有下标 ,可以用下标访问 (在结构语句 for i in str) 
3. 字符串内部是不可修改类型,(不能用下标访问修改)#不能修改的还有 tuple,set,dict的key ,range()
10.*转义字符--必须用引号括起来, ‘\n ,\t(ab) ,  ’ ; 10.2      r" str" 取消机制*


    拼接操作
4.“+”可以用来连接字符 : (’abc‘+’12‘  >> 'abc12') #4与5 很像辨析
5.字符串和数的转换: str(’123‘) ; **eval(" '1'+'2' )** --把计算结果返回 12(三引号是'12') ,不是3,*并且只能数字加(??) , eval(‘ab’+‘f’) 会报错* 
6.字符串拼接格式: 
    1)%s 一个字符      %d 整数      %f      %.nf(保留n位小数,四舍六入) 
			print(   "%d%s" % (18 , 'hello')   ) >> 18hello  #str
    2) -mystr.format() -mystr.format()  {序号: 宽度(> < ^  左、右、中对齐)   .精度   类型 }
           eg:mystr = 'Hello {0}{1:  >5 }。 '.format(‘Mr’ ,  '13 ')    >>   Hellp Mr    13

    逻辑判断操作
7.用 in not in 判断子串 : ## "+" in 【+,-,x,%】 >> print >> True


    分割操作与切片操作
8.字符串割成列表 :  mystr.split()-- 每一个元素都是str类型  *两个相邻的分隔符之间会有一个空串*
9.高级分隔符 (nlp) :impore re   re.split(x,mystr)   eg: re.split('' ;|   |  \“  |  " , MyBook) 

11.切片 : ①     a【2 : y】  >>【2,y)  
          ②     a【2:】  >>【2 : end】   
          ③     a【 : :-1】  


    字符串函数
s.find('ab')  ,s.find('ab',6) ,    s.rfind('ab')
s.strip() #    return 去头尾空白字串
s.



str.eval,exec,locals,compile -- 函数

三、列表与元组与range()(list 添加元素的各种辨析)

一、元组



二、列表
0. a = []  or a =list()  #a=[1,2,'3']  
1.可以增删元素,可以修改,每个元素可以是任何类型 # del b[1] 下标访问
2.列表增加元素的几种方式辨析: # a =[ 1,2,3 ]
    i) a.append(  (7,10  ) # a=[1,2,(7,10)]   list.append() takes exactly one argument(自变) 
    ii) “=  +” : x = a , a = a+[3,7] # x指向a(a time0 指向存储空间x903871 [1,2,3]) ,step2 是先创建一个新的列表 [1,2,3,3,7] x905876 ,, a(a time1  指向了x905876)
    iii)“+=” :x = a , a +=[3,7]  #   x指向a , a在原列表上修改 
    #ii) iii)的辨析可理解为 2 是赋值(地址值) ,3 是算术运算
    iv) 用“x”法扩充列表 ,x = a *3  # x=[(list)a, (list)a,(list)a]

3.列表切片 # return 一个新列表和存储地址 ,修改子列表,不影响母列表
    b =a [::-1] ; b =a [:7:-1]  ;b=a[2::]   # [,) 

4.列表元素遍历 和下标遍历
for x in lst:

for x in range(len(lst))

5.对列表的函数操作都会改变原始的list,索引test时最好新建一个 或拷贝一下
    b = sort(a, reverse = True)
    b =a[:]# 浅拷贝 只拷贝指针   
    b = copy.deepcopy(a)# 深拷贝, 需import copy

6.序列运算: 用索引 list[3]

7.列表解析式: sqlist = [x*x for x in range(1, 11)] 
              obj_upper = [ch.upper() for ch in 'comprehension' if ch not in 'aeiou']


三、range([start=0],stop,[step=1])
1.range()不可变数据类型,必须指定stop

四、字典(映射)与集合(快速查找)

五、I/O factor

Input:

辨析
s=input()             #str
l=input().split()     #list   s=input().split(',')#以逗号空格 

>> 输入19 *
    print(s[0])  >> 1
    print(l[0])  >>19

对于数字型输入:
calc = eval(input('请输入一个数字:'))
print(f"结果:{calc}")




Output:
print 控制格式
1.% 和format 函数
print("%s的年龄是%d岁,收入是%f每年"%(name,age,money))   #name,age,money -- 变量
print("{}的年龄是{}岁,收入为{}每年".format(name,age,money))
2.在""前面加f,在字符串里面使用用花括号括起来的变量和表达式。如果需要标准化输出,在变量后加:和控制字符就行。
print(f'{name}的年龄是{age}岁,收入为{money}万元每月')
print(f'{name}的年龄是{age}岁,收入为{money}万元每月')
print(f"人生苦短\n我用Python") #直接加里面

六、文件、文件夹相关读取操作(os、shutil库)

1.直接用吧:(当然可以封装成一个class来用)

with open (r:'C:\\...' , 'r', encoding = 'uft-8') as f:
    lines = f.readlines()




2.理论基础
   { f = open() 
   { f.close()  得要一起用
   
    f.read() #读取全部并保存为一个字符串
    f.readlines() # 返回一个list ,每行是一个str (结尾是换行符),
    
 文件夹操作: import os,shutil 库 
    os.getcwd()  >>print(*) --获取当前文件夹
    os.listdir()  >>print(*) --获取当前工作路径下所有文件
    os.chdir(r'C:\\')  -- 改变路径
    os.remove(*)  --删除文件
 


七、局部变量与全局变量(目前遇到实用的内容

1.你需要通过循环处理但要保存的变量设为全局变量
2.为了避免部分全局变量修改,你如何通过局部变量temp 很重要

    #浙大pat 时间沙漏的部分
l = input().split()
s1, s2 = int(l[0]), l[1]
Yu =s1+1 #配平
Hang = 1 #其实无所谓 0或者1
# 结构 N-1 /2  还有剩下没用的
# 先确定有几层
maxI = (s1 - 1) // 2
for i in range(maxI): #range(固定住了初始的maxI)
     #零时变量
    maxI -= (2*i+1)
    if maxI  >= 0:
        Hang = 2*i+1
        Yu -= 2*(2*i+1)
    else:
        break

print(Hang)
print(Yu)  
#print(maxI)被修改了


2.但这样temp占了一个全局变量 ?? how to solve
l = input().split()
s1, s2 = int(l[0]), l[1]
Yu =s1+1 #配平
Hang = 1 #其实无所谓 0或者1
# 结构 N-1 /2  还有剩下没用的
# 先确定有几层
temp =maxI = (s1 - 1) // 2
for i in range(maxI): #range(固定住了初始的maxI)
     #零时变量
    temp -= (2*i+1)
    if temp  >= 0:
        Hang = 2*i+1
        Yu -= 2*(2*i+1)
    else:
        break

print(Hang)
print(Yu)  
#print(maxI)

八、类

1.概括类事物:
    属性: eg:三维实体 , 长宽高
    方法,操作,用function: 求周长(三维) ,求体积

2.继承与派生:B有A的所有属性和function(可以不用,可以修改)

3.static 属性、方法 是全局变量

初始化:
class <类名>:
    def __init__(self,<参表>): # 两个下划线
        # eg :self.item 
              self.fx

九、其他杂项

  • 绝大多时候迭代语句用符合条件来控制(代码的简洁性  # 也不用第一次就写的完美)
    while my_counter <= 10 and not done:

1.概括类事物:
    属性: eg:三维实体 , 长宽高
    方法,操作,用function: 求周长(三维) ,求体积

2.继承与派生:B有A的所有属性和function(可以不用,可以修改)

3.static 属性、方法 是全局变量

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值