python永真循环_Python学习笔记1

本文详细介绍了Python的基础特性和编程环境,包括脚本语言特性、GIL、面向对象、常用编辑器和IDE。同时,讲解了Python中的变量类型、基本运算、控制结构如循环与条件语句,并通过实例演示了文件操作、异常处理和模块包管理。此外,还探讨了字符串、列表等数据结构的操作以及列表切片和去重方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基础性质

概念

1)历史

发展久,与java同期

2)版本

3.X   2.7lib多  常用

3)脚本语言,不需要编译

4)解释性语言,读一行解释一行

5) 运行性能较差,没有ruby差 哈哈哈哈

6) lib(库文件)多,声音视频,数据挖掘,支持的东西多

7)可读性高

特点

1)GIL:全局解释锁  Global Interpreter Lock

不能利用多块cpu,所以使用多进程机制(并行)解决GIL,消耗资源。

java,go 可以支持多cpu

2)面向对象

3) 在java static 块写程序,就和写脚本一样

编程环境:

1)vim

在vim 中设置缩进为4个空格

touch /.vim/vimrc

68set encoding=utf-8

69set number

70set hlsearch      高亮显示

71set tabstop=4   一个tab四个空格

72set shiftwidth=4

73set expandtab

2)python

退出         exit() | Crtl+d

帮助         help(str)   查看字符串帮助文档

3)pycharm

基础知识

基本运算

8157ef5f481d52d0e34dd549e019dd81.png

变量类型:变量的类型不指定,直接定义

基本类型和强制类型转换

25611ce95b6b43cd206552a0a25ae0fd.png

如果不强制类型转换,两种不同的类型运算就会报错,这就是强类型的编程语言的特点

47ee83a601d6e4f618809cfd92130c5a.png

布尔类型和逻辑运算

True

False 0 None '' [] {}

1)      []

a=[]   // a=[1,2,3]

if a:

print 'a:',a

else:

print 'empty'

2)      None

a=None

if a == None

print 'None'

if a is None:

print 'None'    常用

3)and or notin

28b6583d599cef30c83e2dc093c57b6c.png

if 'a' in[1,2,4]

print ...

注意:    尽量不用浮点数

list列表

没有长度限制,可以有元素也可无,支持不同类型的存储

c={1,2,3,4}

c.append(5)

c.append(XX)

print c

tuple 元组

(1,2)

tuple 元组:长度不可变

str ,string,长度不可变

dict字典键值对,key-value

d={

"a":"abc",

'b':123,

'c':[1,2,3],

'd':{'a':111}

}

print d['a']    abc

print d['b']    123

d14b0a0ae8a296dc5c5167ca00d263a9.png

两种引用

36b9f164f8a33772ab44da0d72e5207e.png

""" 可以换行,通常用作方法的注释

3602bcde29ad4fe5e903f12ec1cfd215.png

文件操作

读取文件

with open('lalala.txt','r')as f:

test=f.read()

print test

写文件(覆盖写入)

out=miaomiao

with open('lalala.txt','w')as f:

f.write(out)

18453415975f93273860c32f2f4091a5.png

语句

1)pass   空操作。

if xxx='a'

pass

else:

do...      程序主体

2)break跳出当前循环。

3)continue本次循环continue以下的语句不执行。

4)while True永真循环用break跳出

do...

if xxx=='aaa'

break

5)for

1)一重循环和缩进

for item in [1,2,3,4,5]:

printitem         在循环语句中

print a                         不在循环语句中

python:靠缩进区分语句是否在循环中

2)两重循环

for item in [1,2,3,4,5]:

printitem

foriteml in ['a','b','c']:

printiteml

99fcf6e204f5abce1d37561044f6e4f0.png

5d275f6ff47bb35938ceb556dd430e38.png

小练习:输出菱形。

注意:循环逆序输出用 for x in range(4)[::-1]:

14136e6f1575101e1232b1b7eba31ee5.png

输入

input      输入数字

raw_input  输入字符串

a=input("input a number ")

print type(a),a     显示输入的类型

1ad08ac9cdf16bfea42f179215efb07e.png

一般情况下,用input不能输入字符串

9deaac49fc48f8ac0f90076653a2840b.png

通常用raw_input输入字符串

29dd896ed93fd61044d8d73b8b52a2f4.png

注意:但是以     ’字符串’  方式,input也能输入字符串~~

e27d2ee08a9ee551fc1a0453d0de383f.png

小练习:猜数字,三次机会,猜对就退出,大:提示大,小:提示小。

1c7055f84deb1cbd56a2c3e18d1c5def.png

0c5b27214287bf1b3b5a5cad20347e29.png

方法

定义类(驼峰命名法)

CreateStudentInfo

定义方法(小写和下划线)

def print_param(p1,p2,p200):

print param

return 'a' //要是没有return 默认return None

print_param('ss')   调用方法(只看方法名,没有方法的重载)

常用方法

len()         求string list dict长度的方法

print len(c)

del()          删除的方法,可以删除字典,列表list????

dd={'a':123,'b':456}

del dd['a']

ffd83a50c42cc8f3341621d92d308e5a.png

type ()

a)[]       :        list    列表

c68da3d8683364cf66374c0b495cef1e.png

b)()       :        tuple         元组

ce89367f9888eba9e9063e236a289b61.png

c)‘’       :        str    字符串

675cc70ae5db8b0e9a39f11a4daf155a.png

d){}       :        dict  字典(键值对)

306fb81f34479ac8e127a4b3926cee88.png

e)None         :        NoneType

87386298abbdef641085d3bbaee6a10e.png

f)True          :        bool

ca2b084386485b75beb954d8e18ed67d.png

小练习

判断输入的年份,是否为闰年。(能被4整除但不能被100整除)

f0cff2130792205f95460464fcfd702d.png

常识

yield  生成器

globle 全局变量

3a72a03c303306aac3e5ea1dfa660a28.png

解释器

cpython    :traditional

pypy:use py explain py

jython       :java

大多支持2.7

异常处理

raise Execption('xxxx error')

try/except/finally

导入包

import

from xxxx import

断言

assert a=='bsss','error info ...'

赋值

a=1

a=[]

a={}

交换变量

a=1

b=2

a,b=b,a

80dd6a89c9c8989ffacc4af82c17bbbe.png

set集合(去重)

应用:list去重

a=set('aba')    //只有字符串才用这种

print a

a=set (['a','a','b'])

print a

print 'b' in a 某个元素是否在集合内部

True   在

False  不在

b=set('abc')

print a-b  减没了

print b-a

print a&b   交集

print a|b  并集

print b>a   比较集合的数量 True

8c1eda130f53b045a48ca8d8900010dd.png

给集合添加元素:   添加位置为第一个元素后面,即成为第二个元素

a.add('d')

print a

把集合转换list

print list(a)

ff86e6adbd3c01c57f707cbdb9012449.png

小练习

求出两个集合中的相同元素和不同元素。

8b435421d097ffcf0fb4aa8d14aaf178.png

模块和包

模块:     一个py文件就是一个模块(module)

包:         是一个包含一个_init_.py文件的文件夹

导入(引用)

import和from import 区别

import (变量等…)from 包.模块import   模块中的(变量等…)

自己写不同包中变量名会相同外部的包,变量等会冲突

用什么导什么

import 一般不能计算,计算写在方法里

循环导包会产生错误

a import b, b不能import a,不能产生自循环

敲黑板:所以应该局部导入,减少类似错误!!!!!

a56b9f4757fc29d5767b07095f354729.png

9ea710dec5867a77b206f4f66738c306.png

工具

pip install tornado

pip list   列出当前列表

pip install -r requirements.txt  依赖

requirements:

Django == 1.5.4             ==版本   什么都不写,最新的

MYSQL-python==1.2.4

pip uninstall

pip uninstall -r requirements.txt   卸载所有

pip install -U    升级

pip show -f 显示包所在的目录

pip search

pip list -o 查询所有可以升级的包

下载一个pip的包

pip install -d

mkdir myproject

2fff90a9c6d7c78e141b405c8826a9b2.png

resources  存放证书等...

src :python, shell, SQL等…

test

src/python/launcher.py入口文件

src/python/test_str

src/python/test_str/__init__.pyc  运行python后生成的编译文件

src/python/test_str/__init__.py通常一个可导入的包中,有这个文件

vim __init__.py

if __name__=='__main__'     可以自己用,不能被别人导入??????

print 'test str'

编写入口文件。

vim launcher.py

#encoding=utf8

import test_str

import time

while True:

print'working...'

time.sleep(1)

091a738f0833a5ba98ffaba502464c38.png

bd3e0d658e6305750baeae3b9ba9d74f.png

注意:

1.在launcher.py 可以importtest_str(别的包或模块)

2.launcher 不能被别人import

3.#encoding=utf8    文本中如果想要有汉字就加这句。

字符串

基础

8ffe7f1613f525802adfdc506eebbbb7.png

c6ca909051d6cbde67f544f24bf5b57d.png

字符串的拼接         "aaa" +"bbb"

字符串的乘法         a=a*3      "aaabbbaaabbbaaabbb"

a1=a[1]

print type(a1),a1      一个字母拿出来是字符串,不是字符,python中没有字符概念

字符串中常用方法

# encoding=utf8

a='today is a  %s day %s'%('good','la')

print a

print a.find('d')              找到a中第一次出现d的位置(从0开始哦)

print a.endswith('la')         a是否以la结束(true,false)

print a.replace(' ','_')            将a中空格替换成下划线

print 语句中不能。。。。

print a.split('_')  以下划线为分隔符,切分成list

f4675a74cad8ae82e14b909eddb26921.png

索引切片        [start:end:step(步长)]

字符串的切片

# encoding=utf8

a='today is a %s day %s'%('good','lia')

print '',a

print '0                     -10'

print '0:5 ',a[0:5]

print '1:5 ',a[1:5]

print '1:-1 ',a[1:-1]

print '-2:-1',a[-2:-1]                    ???

print '-1:-2',a[-1:-2]      切片是从左到右,所以从右到左没有值

print a[-2:-3:-1]                           ???

print a[::-1]               #每个单词反转

5d5f9b1ea8aff79795247adf42925344.png

练习

#encoding=utf8

a='abcdefghijklmnopqrstuvwxyz'

print a.find('i')

print a[-3:-1]

print a[23:26:]

print a[7:10]

print a[15:19:]

for i in range(26):

if (i%2):

a=a[:i]+','+a[i+1:]#   字符串本身不能直接赋值,利用切片的方法改变字符串的值

print a

a='abcdefghijklmnopqrstuvwxyz'

print a[::-1]

l=len(a)

print l

import sys

for i in range(l):

if (i%4==0):

print a[i:i+4],

if(i+4>l):

sys.stdout.write('*'*(4-l%4))

#       sys.stdout.write输出无空格而且不换行

#       '*'*n          将*输出n次

b17d7705697787f76d27040ea2f0d89d.png

列表的切片

#encoding=utf8

l=[]

l=[1,2,3,4]

l=list('abcd')

print l

print l[1]

print l[1:3]                  数空空    0a1b2c3d

print len(l)

ll=[1,2]+[3,4]             列表的拼接

print ll

94b8b9a5f59f614929c00f24900d1432.png

print '---------------------'

l2=[]

l2.append('haha')#  追加

print l2

for i in range(100):

l2.append(i)

print l2

l4=[[0],[],[2]]

print l4[1:]

l3=[1,2,3,4]

l3.insert(3,0)              insert(位置,值)

print l3

l4=['a','b','c','a','c']

print l4.count('c')     统计字符出现的次数

l4.sort()

print l4

l4.reverse()      反转

print l4

del l4[2]             删除

print l4

64e90e92a92ccd9e63131c52f5faa5f7.png

append()返回值为None

b88457772758541986f1d6d829b986e8.png

f5e6fc74dd41278b03302d5ed65760a8.png

常用方法

pop()                                弹出最后一个值,list中就没有这个值了

extend()                              把两个列表加在一起

append()                             往列表里,添加元素

reverse()                              反转

del l4[2]                                删除

insert(位置,值)        插入

count('c')                             统计字符(c)出现的次数

isinstance

#encoding=utf8

L=[1,2,5,6,2,6,4,3,2,'waa']

import types

print [_ for _ in L if isinstance(_,types.IntType)]#   如果是int类型,才输出

print [_ * 10 for _ in L if isinstance(_,types.IntType)]#  给每个值*10输出

cb9879b030d7d19e0de9db60bd1eae9d.png

#去重

L1=[1,2,5,6,2,6,4,3,2]

rs = []

[rs.append(_) for _ in L1 if _ not in rs]

print rs

L1=[1,2,5,6,2,6,4,3,2]

print [_ for _ in L1 if (L1.index(_)+1) %2==0]

print "------------"

m=[1,3,4,2,5,6,2,7,3,2,7,10]

n=[2,5,8,2,4,3]

same = []

diff = []

[same.append(_) for _ in n if _  in m if _ not in same]

[diff.append(_) for _ in n if _ not in m]

[diff.append(_) for _ in m if _ not in n if_ not in diff]

print same

print diff

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值