适用的python小白

本人编程小白 不喜勿喷?

python基础:

算术运算符:+ - * /

比较(关系)运算符:==  !=  >  <  >=  <=

逻辑运算符: =  +=  -=  *=   /=  %=  **=(幂赋值运算符)  //=(取整)

位运算符: &  |  ^  ~  <<  >>

成员运算符: in(如果在指定的序列中找到值返回 True,否则返回 False。)   

not in(如果在指定的序列中没有找到值返回 True,否则返回 False。)

#!/usr/bin/python3

 a = 10 

b = 20 

list = [1, 2, 3, 4, 5 ];

 if ( a in list ): print ("1 - 变量 a 在给定的列表中 list 中") 

else: print ("1 - 变量 a 不在给定的列表中 list 中") 

if ( b not in list ): print ("2 - 变量 b 不在给定的列表中 list 中")

 else: print ("2 - 变量 b 在给定的列表中 list 中")

 # 修改变量 a 的值 

a = 2 

if ( a in list ): print ("3 - 变量 a 在给定的列表中 list 中") 

else: print ("3 - 变量 a 不在给定的列表中 list 中")

 以上实例输出结果:

1 - 变量 a 不在给定的列表中 list 2 - 变量 b 不在给定的列表中 list 3 - 变量 a 在给定的列表中 list

 

身份运算符: is 是判断两个标识符是不是引用自一个对象

        is not 是判断两个标识符是不是引用自不同对象

#!/usr/bin/python3 

a = 20

 b = 20

 if ( a is b ):

 print ("1 - a 和 b 有相同的标识") 

else: print ("1 - a 和 b 没有相同的标识") 

if ( id(a) == id(b) ): print ("2 - a 和 b 有相同的标识") 

else: print ("2 - a 和 b 没有相同的标识") 

# 修改变量 b 的值 

b = 30

 if ( a is b ): print ("3 - a 和 b 有相同的标识") 

else: print ("3 - a 和 b 没有相同的标识") 

if ( a is not b ): print ("4 - a 和 b 没有相同的标识") 

else: print ("4 - a 和 b 有相同的标识")

以上实例输出结果:

1 - a  b 有相同的标识2 - a  b 有相同的标识3 - a  b 没有相同的标识4 - a  b 没有相同的标识

 

数字:  

var1 = 1 var2 = 10

del var  用del 删除对象

del var_a, var_b

int(x) 将x转换为一个整数。

float(x) 将x转换到一个浮点数。

complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。

complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y     x 和 y 是数字表达式。

 

字符串:

#!/usr/bin/python3 

var1 = 'Hello World!'

 var2 = "Runoob"

 print ("var1[0]: ", var1[0]) 

print ("var2[1:5]: ", var2[1:5])

以上实例执行结果:

var1[0]:  H

var2[1:5]:  unoo

#!/usr/bin/python3 

print ("我叫 %s 今年 %d 岁!" % ('小明', 10))

 

 

列表:相当于C语言数组

#!/usr/bin/python3 

list1 = ['Google', 'Runoob', 1997, 2000];

list2 = [1, 2, 3, 4, 5, 6, 7 ];

print ("list1[0]: ", list1[0]) 

print ("list2[1:5]: ", list2[1:5])

以上实例输出结果:

list1[0]:  Google

list2[1:5]:  [2, 3, 4, 5]

删除列表元素  del list[2]

嵌套就是2维数组 x[[a,b,c],[1,2,3]]

 

元组:元组不能修改 列表可以修改  

只有一个元素时 要加 , 不然默认为int 型

>>>tup1 = (50)

 >>> type(tup1) # 不加逗号,类型为整型

 <class 'int'>

>>> tup1 = (50,) 

>>> type(tup1) # 加上逗号,类型为元组 

<class 'tuple'>

修改元素:可以用拼接字符串

A=(12,34.56)

B=(abc,xyz)

Ab=A+B

删除 del B

复制列表l1=l[:]

 

字典:类似于结构体   整个字典用{}中

D={key:value1,key2:value2}

键必须是唯一的,但值则不必的

值是可以取任何数据类型 但键是不可变的

 

dict1 = { 'abc': 456 }; 

dict2 = { 'abc': 123, 98.6: 37 };

 

#!/usr/bin/python3 

dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

del dict['Name'] # 删除键 'Name' 

dict.clear() # 清空字典 

del dict # 删除字典 

print ("dict['Age']: ", dict['Age']) print ("dict['School']: ", dict['School'])

执行后字典将不存在

 

访问字典里的值

#!/usr/bin/python3 

dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

print ("dict['Name']: ", dict['Name']) 

print ("dict['Age']: ", dict['Age'])

以上实例输出结果:

dict['Name']:  Runoob

dict['Age']:  7

 

删除字典元素:

 #!/usr/bin/python3 

dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

del dict['Name'] # 删除键 'Name' 

dict.clear() # 清空字典

 del dict # 删除字典

 print ("dict['Age']: ", dict['Age']) 

print ("dict[Class]: ", dict['Class'])        #删除后字典将不存在

键不能变 值可以  可以用数字,字符或元组充当 列表不行

#!/usr/bin/python3 

dict = {['Name']: 'Runoob', 'Age': 7}

 print ("dict['Name']: ", dict['Name'])

 

遍历字典 for item in book:print key,book[key]     book是字典名

         Bo=book.items()

         dict(Bo)

Book.get(simon)    simon是键值

Simon in book 存在返回 true

Book1=book   把字典book给了Book1 但并不实际分配内存 类似C语言的指针

book1=book.copy() book1现在是有实际的内存空间的

 

文件:

文件类型 file

 f=open(demo.txt,w)打开创建一个文件 写的方式 第2次打开时会清空

f.write(hello\n)往文件里面写,但里面并没有内容,实际上在内存里面

f.flush() 调用这个函数后 把内存里面的东西写入到硬盘上

f.close() 关闭文件 在程序关闭后也会默认的关闭

f=open(demo.txt,r)  a是追加方式

Content=f.read()  print content  一次性读完文件

读完后 一样有文件指针的概念

可以用f.seek(0)回到开头

S=f.read(5)读5个字节

 

f=open(demo.txt)

For line in f.readlines():  按一行一行显示文本 会自动添加换行符

 

 

If嵌套

if 表达式1:

语句

if 表达式2:

   语句

elif  表达式3

    语句

else:

    语句

elif 表达式4:

     语句

else:

     语句  

 

循环:python没有do while只有while

  while 判断条件:

        语句

例:

N=100

Sum=0

A=1

While a<=N:

      Sum+=a

      A++

Print(1到%d之和为%d%(N,Sum))

 

例2:

while 1:

    num=int(input("输入一个数字:"))

    print("你输入的数字是:",num)

print("good bye")

Ctrl+c可以退出循环

 

while 表达式:

      语句

else:

   语句

 

for语句

 La=[c,c++,perl,python]

 for x in La:

     Print(x)  

内置函数 range()

for i in range(5):print(i)  打印0到4

for i in range(5,9):print(i)  打印5到8

for i in range(0,10,3):print(i) 每隔3个打印 范围是0到10        0  3  6  9

for i in range(-10,-100,-30):print(i)    -10  -40    -70

a=['A','B','C','D','E'] 有序的列表

for i in range(len(a)):print(i,a[i]) 

打印出  0 A

1 B

2 C

3 D

4 E

Python 同样有break和 continue作用和C语言一样

循环语句可以有else 子句 在条件为假时 执行 但循环语句被break终止时不执行

for n in range(2, 10):

for x in range(2, n):

 if n % x == 0: print(n, '等于', x, '*', n//x) 

break 

else:

 # 循环中没有找到元素 

print(n, ' 是质数')

 

pass 语句 是空语句是为了保持程序结构的完整性 一般用作占位符

While True: pass  #等待键盘中断 (ctrl+c)

但pass相当于延时的作用 在程序中并不能把语句终止执行

 

函数用关键字 def定义 函数的传参与C语言一样

python中 类型属于对象,变量是没有类型的 a=[1,] a=123

def 函数名(参数):

函数体

 

传值不会改变原值的大小,传地址会改变原值

传参可以不需要使用指定顺序,但是要指定

def pr(a,b):

print(a,a)

print(b,b)

pr(b=10,a=90)

 

默认参数 调用函数时,如果没有传递参数,就会使用默认参数

def pr(a=1,b=2):

print(a)

print(b)

return

pr()/pr(10,90)

 

加了*的参数会以元组的形式导入

def pr(*a):

print(a)

return

pr(30,90,20)

输出:(30,90,20)

带**的参数会以字典、键值对的形式导入

def pr(**a):

print(a)

pr(a=2,b=3)

输出 {a:2,b:3}  

 

匿名函数   关键字 lambda

A=lambda e,u:e+u    冒号后不能换行

 

作用域  在内部作用域中想要修改外部作用域变量是用global

 A=1

 def fun():

     global A

     A=100

     print(A)

fun()

print(A)

修改嵌套作用域 关键字nonlocal

def op():

A=10

def inner():

    nonlocal A

    A=1000

    print(1,A)

inner()

print(2,A)

op()

输出:1 1000

      2 1000    

 

数据结构:

  列表可以修改  字符串和元组不能

 

list.append(x)

把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]。

list.extend(L)

通过添加指定列表的所有元素来扩充列表,相当于 a[len(a):] = L。

list.insert(i, x)

在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x) 。

list.remove(x)

删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误。

list.pop([i])

从列表的指定位置移除元素,并将其返回。如果没有指定索引,a.pop()返回最后一个元素。元素随即从列表中被移除。(方法中 i 两边的方括号表示这个参数是可选的,而不是要求你输入一对方括号,你会经常在 Python 库参考手册中遇到这样的标记。)

list.clear()

移除列表中的所有项,等于del a[:]。

list.index(x)

返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误。

list.count(x)

返回 x 在列表中出现的次数。

list.sort()

对列表中的元素进行排序。

list.reverse()

倒排列表中的元素。

list.copy()

返回列表的浅复制,等于a[:]。

 

列表可以当做堆栈使用 后进先出 list.append()把一个元素添加达到栈顶 用不指定索引的list.pop()把一个元素从堆栈定释放出来

 

将列表当队列   先进先出

 from collections import deque     建一个队列

 A=deque([er,ws,ko])

  1. append(op)添加到列尾
  1. popleft()    把首个元素删除   

 

每个列表推导式都在for后面跟一个表达式 如果表达式推出一个元组,就必须使用括号a1=[2,3,4]

[[3*x for x in a1]]

打印:[6,9,12]           推导式没有改变A1实际的值

 

[3*x for x in a1 if x>3]  a1中的元素大于3的才计算

[a1[i]*a2[i] for i in range(len(a1))]

将3*4的矩阵换成4*3的矩阵

[[row[i] for row in a] for i in range(4)]

 把3*4的每行第一个元素矩阵 变成4*3矩阵的每个元素

 

 元组由逗号分隔的值组成  元组输入时可以不加括号 但输出时总有括号 便于表达式的嵌套结构

 

集合用(无序不重复的集合){}表示 如果要创建一个空集合 必须用set()表示

a=set(12334)

集合同样有 - | & ^  的操作

集合也支持推导式

A={x for in abcd if x not in abc}  把集合中 abc 清除

 

字典 以键为索引 可以看作无序的键=》值对集合,在同一个字典里面关键字必须是互不相同的

一对大括号创建一个空的字典{}

 

遍历技巧:

 在字典中遍历时 可以用items()方法同时读出:

 For k,v in a1.items():

     Print(k,v)  k,v是键值对

同时遍历2个或更的序列 可以用zip()组合  zip()可以只带一个参数

For q,v in zip(a1,a2):

Print(what is your{0} it is {1}.format(q,v))

按顺序遍历一个序列 sorted()

For f in sorted(set(a1)):

Print(f)

 

import 用来引入文件 模块

也可以通过from....import语句导入指定的部分

from s1 import a1,a2

 

 

格式化输出:

str() 返回一个字符串类型   str(s)  str(1/7)

repr()  产生一个易于解释器易读的表达形式 但与str()不同的是repr返回的是双引号

repr() 函数的参数可以是任何对象 列表 字典等

end=’’ 相当于是转行\n     rjust(2)格式化对齐   调用方式:str(s).rjust(2) 参数表示右对齐2个字符宽度

print({0:2d}{1:3d}{2:4d}.format(x,x*x,x*x*x))

format 参数格式化,也可以指定名字

my name is {name}, {name} age is {age}'.format(name='wang',age=10)

 括号里面是数字表示传入对象的位置

 print({0}和{1}.format(op,io))

=》op和io

 print({1}和{0}.format(op,io))

=>io和op

可以传入一个字典 用[]来访问键值 []里面是关键字

Ta={‘goole’:1,Runoob:2,taobao:3}

print(goole:{0[Runoob]:d};Runoob:{0[goole]:d};taobao:{0[taobao]:d}.format(Ta))

=》goole: 2;Runoob: 1;taobao: 3

旧的字符串格式化:

 import math

 print(%3.3f%math,pi)

=》3.142

但旧的字符串格式最终会被淘汰

从键盘输入

Str=inpur(请输入:)

print(Str)

 

Python 的错误和抛出异常

   逻辑:先执行关键字try 里面的内容 遇到错误就去找关键字 except里面的异常抛出 执行异常抛出的代码 如果没有异常与except匹配 就把异常传递上层的try中

如果有else语句 那么必须放在所有except的后面 将在try 没有异常时执行else

try:语句1

except IOError:

      print(cannot open,arg)

else:语句2

可以用关键字raise语句抛出指定的异常 raise NameError(jia)

 

可以再次抛出异常 但不去处理 仅仅想知道是否抛出异常 用一个raise语句

try:

   Raise NameError(io)

except NameError:

print(an exception flew by)

#再次抛出

raise

可以自定义类来建立自己的异常  抛出的就是自定义类的异常 然后根据抛出的异常去执行其他代码

#自定义类先加载 但不执行

class myerror(Exception):

    def __init__(self,value):

        self.value=value

    def __str__(self):

        return repr(self.value)

 

try:

    raise myerror(2*2)    #先执行这里 但会因为异常终止 去执行except

except myerror as e:  #抛出异常的执行

    print('my exception occurred,value:',e.value)

    

定义清理行为 用关键字finally  不管有没有发生异常 finally都会执行 更多是如果发生了异常 但except没有把它截住 那么这个异常就会在finally中执行 像C语言switch

的define

 

def div(x,y):

try:

 #先执行这里 如果调用div没有异常 就执行else和finally

 #有异常抛出就执行 except//如y==0或x,y的值为字符//和finally

        a=x/y

    except ZeroDivisionError:

        print("division by zero")

    else:

        print("result is",a)

    finally:

        print("executing finally clause")

 

预定义的清理行为:

关键字 with语句可以保证对象[python里面所有都是对象]在使用完后一定会正确的执行清理 不管会不会抛出异常或是程序停止

with open(myfile.txt) as f;

     for a in f:

         print(a,end=’’)

这段代码作用是尝试打印出myfile.txt文件中的内容就算程序处理中有问题文件总会关闭

一个模块被另一个模块第一次引入时,他的程序将运行 如果想让这个模块中的某一个程序不执行 可以用__name__属性来使该程序仅仅在自己的模块上运行

if __name__==__main__:  print(程序自身在运行)

else: print(来自另一个模块)

 

 

 

python基础总结:

   python内核架构是C语言写的  在语法和基础定义上与C差不多  不同的是 加入了面向对象的思想  在python中一切都是对象。 在引用对象的时候,实际上是计算机寻址的过程,这也是python在定义变量时不用定义类型的原因,也是列表可以存放不同类型的原因.

模块化的编程思路使python的移植性很高,下载模块也很方便。不同的模块有自己不同的作用。有面向网络的,面向游戏的,需要注意的是要注意python模块的版本,感觉python2和python3完全是不同的语言风格和语法。抛出异常是python区别与C语言最大的地方,他的基本思路也来自与模块化的思想。

人生苦短 我要学python

 

参考文档:http://www.runoob.com/python3/python3-tutorial.html

第一次写这东西

欢迎补充和讨论

 QQ:1831132568

 邮箱:1831132568@qq.com

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值