1.python代ç 大å
¨ç®åï¼
2.线程池中空闲的源码线程处于什么状态?
3.StringUtilsä¸ isNotEmpty åisNotBlankçåºå«
4.pythoni代ç (pythonç代ç )
python代ç å¤§å ¨ç®åï¼
pythonæ趣çç¼ç¨ä»£ç
class?Point:
row=0
col=0
def?__init__(self,?row,?col):
self.row=row
self.col=col
def?copy(self):
return?Point(row=self.row,?col=self.col)
#åå§æ¡æ¶
import?pygame
import?random
#åå§å
pygame.init()
W=
H=
ROW=
COL=
size=(W,H)
window=pygame.display.set_mode(size)
pygame.display.set_caption('è´ªåè')
bg_color=(,,)
snake_color=(,,)
head=Point(row=int(ROW/2),?col=int(COL/2))
head_color=(0,,)
snakes=[
Point(row=head.row,?col=head.col+1),
Point(row=head.row,?col=head.col+2),
Point(row=head.row,?col=head.col+3)
]
#çæé£ç©
def?gen_food():
while?1:
pos=Point(row=random.randint(0,ROW-1),?col=random.randint(0,COL-1))
#
is_coll=False
#æ¯å¦è·è碰ä¸äº
if?head.row==pos.row?and?head.col==pos.col:
is_coll=True
#è身å
for?snake?in?snakes:
if?snake.row==pos.row?and?snake.col==pos.col:
is_coll=True
break
if?not?is_coll:
break
return?pos
#å®ä¹åæ
food=gen_food()
food_color=(,,0)
direct='left'?#left,right,up,down
#
def?rect(point,?color):
cell_width=W/COL
cell_height=H/ROW
left=point.col*cell_width
top=point.row*cell_height
pygame.draw.rect(
window,?color,
(left,?top,?cell_width,?cell_height)
)
pass
#游æ循ç¯
quit=True
clock=pygame.time.Clock()
while?quit:
#å¤çäºä»¶
for?event?in?pygame.event.get():
if?event.type==pygame.QUIT:
quit=False
elif?event.type==pygame.KEYDOWN:
if?event.key==?or?event.key==:
if?direct=='left'?or?direct=='right':
direct='up'
elif?event.key==?or?event.key==:
if?direct?==?'left'?or?direct?==?'right':
direct='down'
elif?event.key==?or?event.key==:
if?direct?==?'up'?or?direct?==?'down':
direct='left'
elif?event.key==?or?event.key==:
if?direct?==?'up'?or?direct?==?'down':
direct='right'
#åä¸è¥¿
eat=(head.row==food.row?and?head.col==food.col)
#éæ°äº§çé£ç©
if?eat:
food?=?gen_food()
#å¤ç身å
#1.æåæ¥ç头ï¼æå ¥å°snakesç头ä¸
snakes.insert(0,?head.copy())
#2.æsnakesçæåä¸ä¸ªå æ
if?not?eat:
snakes.pop()
#移å¨
if?direct=='left':
head.col-=1
elif?direct=='right':
head.col+=1
elif?direct=='up':
head.row-=1
elif?direct=='down':
head.row+=1
#æ£æµ
dead=False
#1.æå¢
if?head.col0?or?head.row0?or?head.col=COL?or?head.row=ROW:
dead=True
#2.æèªå·±
for?snake?in?snakes:
if?head.col==snake.col?and?head.row==snake.row:
dead=True
break
if?dead:
print('æ»äº')
quit=False
#渲æââç»åºæ¥
#èæ¯
pygame.draw.rect(window,?bg_color,?(0,0,W,H))
#è头
for?snake?in?snakes:
rect(snake,?snake_color)
rect(head,?head_color)
rect(food,?food_color)
#
pygame.display.flip()
#设置帧é¢ï¼é度ï¼
clock.tick(8)
#æ¶å°¾å·¥ä½
è¿æ¯ä¸ä¸ªç®æçè´ªåèç代ç ï¼è½ç¶ç»æç®åï¼ä½æ¯è¯¥æçåè½é½æ¯å®æ´çï¼å¯ç©æ§ä¹ä¸é
æ±pythonæ°æ®æ åå代ç ï¼ä½¿ç¨pythonæ ååæ°æ®ç代ç å¦ä¸ï¼
fromsklearnimportpreprocessing
importnumpyasnp
X=np.array([[1.,-1.,2.],[2.,0.,0.],[0.,1.,-1.]])
X_scaled=preprocessing.scale(X)
print(X_scaled)
pythonå£è¯æ 代ç ç®å```python#Pythonå£è¯æ 代ç foriinrange(1,6):forjinrange(1,i+1):print('*',end='')print('\n')```
æå±ï¼å¦ææ³æ¹åæ çå½¢ç¶ï¼å¯ä»¥å¨ä»£ç ä¸æ·»å æ´å¤çæ§å¶åæ°ï¼å¦å¨æ¯ä¸è¡ä¸æ·»å ä¸åçç©ºæ ¼æ°ï¼ä½¿å¾æ çå½¢ç¶ä¸ä¸æ ·ãåæ¶å¯ä»¥éè¿æ·»å HTMLæ ç¾ï¼ä½¿ç¨CSSæ ·å¼æ¥æ¹åå£è¯æ çé¢è²ãèæ¯åæåççã
个æç®python代ç ï¼æ¿èµ°å³ç¨
Helloï¼å¤§å®¶å¥½ï¼ææ¯ç¨åºæ±ªå°æ~
è½ç¶pythonæ¯ä¸ä¸ªæå ¥é¨çè¯è¨ï¼ä½æ¯å¾å¤äººä¾ç¶è¿æ¯ä¼é®å°åºæä¹æ ·å¦Pythonææå¿«ï¼çæ¡å½ç¶æ¯å®æåç§å°é¡¹ç®ï¼åªæèªå·±å»æ³ä¸åï¼æè®°å¾ä½è§åãæ¬æåçæ¯ä¸ªæç®ä»»å¡ï¼åå¦è å¯ä»¥å°è¯çèªå·±å®ç°ï¼æ¬æåæ ·ä¹æ¯æ®µä»£ç ï¼Pythonå¼åè ä¹å¯ä»¥ççæ¯ä¸æ¯æ没æ³å°çç¨æ³ã
以ä¸æ¹æ³å¯ä»¥æ£æ¥ç»å®å表æ¯ä¸æ¯åå¨éå¤å ç´ ï¼å®ä¼ä½¿ç¨set()å½æ°æ¥ç§»é¤ææéå¤å ç´ ã
ç»å®å ·ä½ç大å°ï¼å®ä¹ä¸ä¸ªå½æ°ä»¥æç §è¿ä¸ªå¤§å°åå²å表ã
è¿ä¸ªæ¹æ³å¯ä»¥å°å¸å°åçå¼å»æï¼ä¾å¦ï¼Falseï¼Noneï¼0ï¼ââï¼ï¼å®ä½¿ç¨filter()å½æ°ã
æ们常ç¨For循ç¯æ¥éåæ个å表ï¼åæ ·æ们ä¹è½æ举å表çç´¢å¼ä¸å¼ã
å¦ä¸ä»£ç 段å¯ä»¥å°æå 好çæ对å表解å¼æ两ç»ä¸åçå ç»ã
该æ¹æ³å°éè¿éå½çæ¹å¼å°å表çåµå¥å±å¼ä¸ºå个å表ã
该æ¹æ³å°è¿å第ä¸ä¸ªå表çå ç´ ï¼ä¸ä¸å¨ç¬¬äºä¸ªå表å ãå¦æåæ¶è¦åé¦ç¬¬äºä¸ªå表ç¬æçå ç´ ï¼è¿éè¦å ä¸å¥set_b.difference(set_a)ã
å¦ä¸ä»£ç åå¯ä»¥ç¨æ¥è®¡ç®æ§è¡ç¹å®ä»£ç æè±è´¹çæ¶é´ã
该ç®æ³ä¼æä¹±å表å ç´ ç顺åºï¼å®ä¸»è¦ä¼éè¿Fisher-Yatesç®æ³å¯¹æ°å表è¿è¡æåºï¼
ä¸éè¦é¢å¤çæä½å°±è½äº¤æ¢ä¸¤ä¸ªåéçå¼ã
以ä¸ï¼æ¯æç®åå举çå个pythonæç®ä»£ç ï¼æ¿èµ°å³ç¨ï¼å¸æå¯¹ä½ ææ帮å©ï¼
pythonæ°æ代ç æåªäºï¼pythonæ°æ代ç æå¦ä¸ï¼
defnot_emptyï¼sï¼ã
returnsandlenï¼sãstripï¼ï¼ï¼0ã
#returnsandsãstripï¼ï¼ã
#å¦æç´æ¥ååsãstripï¼ï¼é£ä¹så¦ææ¯Noneï¼ä¼æ¥éï¼å 为None没æstripæ¹æ³ã
#å¦æsæ¯Noneï¼é£ä¹Noneandä»»ä½å¼é½æ¯Falseï¼ç´æ¥è¿åfalseã
#å¦æséNoneï¼é£ä¹å¤å®sãtripï¼ï¼æ¯å¦ä¸ºç©ºã
ç¸å ³ç®ä»ã
Python解éå¨æäºæ©å±ï¼å¯ä»¥ä½¿ç¨CæC++ï¼æè å ¶ä»å¯ä»¥éè¿Cè°ç¨çè¯è¨ï¼æ©å±æ°çåè½åæ°æ®ç±»åãPythonä¹å¯ç¨äºå¯å®å¶å软件ä¸çæ©å±ç¨åºè¯è¨ãPython丰å¯çæ ååºï¼æä¾äºéç¨äºå个主è¦ç³»ç»å¹³å°çæºç ææºå¨ç ã
å¹´æï¼è¯è¨æµè¡ææ°çç¼è¯å¨Tiobeå°Pythonå å为æå欢è¿çç¼ç¨è¯è¨ï¼å¹´æ¥é¦æ¬¡å°å ¶ç½®äºJavaãCåJavaScriptä¹ä¸ã
è´¨æ°è¡¨ä»£ç ï¼è´¨æ°è¡¨ä»£ç æ¯æç¨ç¼ç¨è¯è¨çæä¸ç³»åè´¨æ°ç代ç ãè´¨æ°æ¯æåªè½è¢«èªèº«å1æ´é¤çèªç¶æ°ï¼å¦2ï¼3ï¼5ï¼7çã
ä¸åçç¼ç¨è¯è¨æä¸åçå®ç°æ¹æ³ï¼æå¯ä»¥ç»ä½ ä¸äºåèã以ä¸æ¯ä¸äºç½ä¸æç´¢å°çè´¨æ°è¡¨ä»£ç 示ä¾ï¼
Cè¯è¨ï¼
#includestdio.hintmain(){ inti,j;printf("2\n");for(i=3;i=;i+=2)//ä»3å¼å§éåå¥æ°
{ for(j=3;ji;j++)//å¤ææ¯å¦è½è¢«å°äºå®çå¥æ°æ´é¤
{ if(i%j==0)//å¦æè½æ´é¤ï¼åè·³åºå¾ªç¯
break;
}if(j==i)//å¦æ循ç¯æ£å¸¸ç»æï¼å说ææ¯è´¨æ°ï¼æå°åºæ¥
printf("%d\n",i);
}return0;
}
Pythonï¼
#!/usr/bin/python#-*-coding:UTF-8-*-
#è¾åºæå®èå´å çç´ æ°
#ç¨æ·è¾å ¥æ°æ®lower=int(input("è¾å ¥åºé´æå°å¼:"))
upper=int(input("è¾å ¥åºé´æ大å¼:"))
fornuminrange(lower,upper+1):?#ç´ æ°å¤§äº1
ifnum1:?foriinrange(2,num):?if(num%i)==0:?breakelse:?print(num)线程池中空闲的线程处于什么状态?
一:阻塞状态,线程并没有销毁,也没有得到CPU时间片执行;
源码追踪:
for (;;) {
...
workQueue.take();
...
}
public E take()...{
...
while (count.get() == 0) { / /这里就是任务队列中的消息数量
notEmpty.await();
}
...
}
public final void await()...{
...
LockSupport.park(this);
...
}
继续往下:
public static void park(Object blocker) {
Thread t = Thread.currentThread();
setBlocker(t, blocker);
U.park(false, 0L);
setBlocker(t, null);
}
private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe();
//线程调用该方法,线程将一直阻塞直到超时,源码或者是源码中断条件出现。
public native void park(boolean isAbsolute,源码 long time);
上面就是java线程池中阻塞的源码追踪;
二.对比object的wait()方法:
@FastNative
public final native void wait(long timeout, int nanos) throws InterruptedException;
还有Thread的sleep() 方法:
@FastNative
private static native void sleep(Object lock, long millis, int nanos)throws...;
可见,线程池中使用的阻塞方式并不是Object中的wait(),也不是Thread.sleep() ;
这3个方法最终实现都是通过c&c++实现的native方法.
三.在<<Java虚拟机(第二版)>>中,对线程状态有以下介绍:
.4.3 状态转换
Java语言定义了5种线程状态,在任意一个时间点,源码换三张源码一个线程只能有且只有其中的源码软件html源码一种
状态,这5种状态分别如下。源码
1)新建(New):创建后尚未启动的源码线程处于这种状态。
2)运行(Runable):Runable包括了操作系统线程状态中的源码Running和Ready,也就是源码处于此
状态的线程有可能正在执行,也有可能正在等待着CPU为它分配执行时间。源码
3)无限期等待(Waiting):处于这种状态的源码线程不会被分配CPU执行时间,它们要等待被
其他线程显式地唤醒。源码讲历史源码以下方法会让线程陷入无限期的源码等待状态:
●没有设置Timeout参数的Object.wait()方法。
●没有设置Timeout参数的源码Thread.join()方法。
●LockSupport.park()方法。
4)限期等待(Timed Waiting):处于这种状态的源码交易60线程也不会被分配CPU执行时间,不过无
须等待被其他线程显式地唤醒,在一定时间之后它们会由系统自动唤醒。以下方法会让线程
进入限期等待状态:
●Thread.sleep()方法。
●设置了Timeout参数的window源码解读Object.wait()方法。
●设置了Timeout参数的Thread.join()方法。
●LockSupport.parkNanos()方法。
●LockSupport.parkUntil()方法。
5)阻塞(Blocked):线程被阻塞了,“阻塞状态”与“等待状态”的区别是:“阻塞状态”在等
待着获取到一个排他锁,这个事件将在另外一个线程放弃这个锁的时候发生;而“等待状
态”则是在等待一段时间,或者唤醒动作的发生。在程序等待进入同步区域的时候,线程将
进入这种状态。
结束(Terminated):已终止线程的线程状态,线程已经结束执行。
StringUtilsä¸ isNotEmpty åisNotBlankçåºå«
1ãææä¸ä¸æ ·isNotEmptyå°ç©ºæ ¼ä¹ä½ä¸ºåæ°ï¼isNotBlankåæé¤ç©ºæ ¼åæ°ã
2ãæä½æ¹æ³ä¸ä¸æ ·
StringUtilsæ¹æ³çæä½å¯¹è±¡æ¯java.lang.Stringç±»åç对象ï¼æ¯JDKæä¾çStringç±»åæä½æ¹æ³çè¡¥å ï¼å¹¶ä¸æ¯nullå®å ¨ç(å³å¦æè¾å ¥åæ°String为nullåä¸ä¼æåºNullPointerExceptionï¼èæ¯åäºç¸åºå¤çï¼ä¾å¦ï¼å¦æè¾å ¥ä¸ºnullåè¿åä¹æ¯nullçï¼å ·ä½å¯ä»¥æ¥çæºä»£ç )ã
3ãèå´ä¸ä¸æ ·
StringUtilsä¸ä¸å ±æå¤ä¸ªæ¹æ³ï¼å¹¶ä¸é½æ¯staticçï¼æ以æ们å¯ä»¥è¿æ ·è°ç¨StringUtils.xxx()
public static boolean isEmpty(String str)å¤ææå符串æ¯å¦ä¸ºç©ºï¼ä¸ºç©ºçæ åæ¯str==nullæstr.length()==0
public static boolean isNotEmpty(String str)å¤ææå符串æ¯å¦é空ï¼çäº!isEmpty(String str)
pythoni代ç (pythonç代ç )
pythonåºç¡ä»£ç æ¯ä»ä¹?
pythonå ¥é¨ä»£ç æ¯ï¼
defnot_emptyï¼sï¼ï¼
returnsandlenï¼sãstripï¼ï¼ï¼0
#returnsandsãstripï¼ï¼
#å¦æç´æ¥ååsãstripï¼ï¼é£ä¹så¦ææ¯Noneï¼ä¼æ¥éï¼å 为None没æstripæ¹æ³ã
#å¦æsæ¯Noneï¼é£ä¹Noneandä»»ä½å¼é½æ¯Falseï¼ç´æ¥è¿åfalse
#å¦æséNoneï¼é£ä¹å¤å®sãtripï¼ï¼æ¯å¦ä¸ºç©ºã
è¿æ ·åfilterè½è¿æ»¤å°Noneï¼""ï¼""è¿æ ·çå¼ã
åæ两é¨åçã第ä¸é¨åæ¯å¯¹é¿åº¦è¿è¡åºåãç¸å½äºå°±æ¯range(5)ä»çç»æå°±æ¯ãã第äºé¨åå°±æ¯å ·ä½çæåºè§åãæåºè§åæ¯ç¨numsçå¼è¿è¡æåºï¼reverse没ç³æå°±æ¯é»è®¤ååºãå°±æ¯ç¨nums(0å°4)çå¼è¿è¡æåºï¼æ ¹æ®è¿ä¸ªç»æè¿åçä¸ä¸ªrange(5)çæ°ç»ã
åºæ¬è¯æ³ï¼
Pythonç设计ç®æ ä¹ä¸æ¯è®©ä»£ç å ·å¤é«åº¦çå¯é 读æ§ãå®è®¾è®¡æ¶å°½é使ç¨å ¶å®è¯è¨ç»å¸¸ä½¿ç¨çæ ç¹ç¬¦å·åè±æååï¼è®©ä»£ç çèµ·æ¥æ´æ´ç¾è§ãå®ä¸åå ¶ä»çéæè¯è¨å¦CãPascalé£æ ·éè¦éå¤ä¹¦å声æè¯å¥ï¼ä¹ä¸åå®ä»¬çè¯æ³é£æ ·ç»å¸¸æç¹æ®æ åµåæå¤ã
python代ç æä¹åï¼python3.6代ç ï¼
cnt=0
whileTrue:
print("请è¾å ¥åæ°ï¼")
i=input()
if(noti):
print("è¾å ¥æ误ï¼")
print("å¦ç人æ°ï¼"+str(cnt))
inti;
min=max=score[0];
avg=0;
for(i=0;in;i++)
baiavg+=score[i];
if(score[i]max)?
è§èç代ç ï¼
Pythonéç¨å¼ºå¶ç¼©è¿çæ¹å¼ä½¿å¾ä»£ç å ·æè¾å¥½å¯è¯»æ§ãèPythonè¯è¨åçç¨åºä¸éè¦ç¼è¯æäºè¿å¶ä»£ç ãPythonçä½è 设计éå¶æ§å¾å¼ºçè¯æ³ï¼ä½¿å¾ä¸å¥½çç¼ç¨ä¹ æ¯ï¼ä¾å¦ifè¯å¥çä¸ä¸è¡ä¸åå³ç¼©è¿ï¼é½ä¸è½éè¿ç¼è¯ãå ¶ä¸å¾éè¦çä¸é¡¹å°±æ¯Pythonç缩è¿è§åã
ä¸ä¸ªåå ¶ä»å¤§å¤æ°è¯è¨ï¼å¦Cï¼çåºå«å°±æ¯ï¼ä¸ä¸ªæ¨¡åççéï¼å®å ¨æ¯ç±æ¯è¡çé¦å符å¨è¿ä¸è¡çä½ç½®æ¥å³å®ï¼èCè¯è¨æ¯ç¨ä¸å¯¹è±æ¬å·{ }æ¥æç¡®çå®åºæ¨¡åçè¾¹çï¼ä¸å符çä½ç½®æ¯«æ å ³ç³»ï¼ã
6个å¼å¾ç©å³çPython代ç å éåäº6个èªå·±è®¤ä¸ºå¼å¾ç©å³çpython代ç ï¼å¸æ对æ£å¨å¦ä¹ pythonçä½ ææ帮å©ã
1ãç±»æ两个æ¹æ³ï¼ä¸ä¸ªæ¯new,ä¸ä¸ªæ¯init,æä»ä¹åºå«ï¼åªä¸ªä¼å æ§è¡å¢ï¼
è¿è¡ç»æå¦ä¸ï¼
åæ¥çå¦ä¸ä¸ªä¾å
è¿è¡ç»æå¦ä¸ï¼
è¿éç»åºå®æ¹ç解éï¼initä½ç¨æ¯ç±»å®ä¾è¿è¡åå§åï¼ç¬¬ä¸ä¸ªåæ°ä¸ºselfï¼ä»£è¡¨å¯¹è±¡æ¬èº«ï¼å¯ä»¥æ²¡æè¿åå¼ãnewåæ¯è¿åä¸ä¸ªæ°çç±»çå®ä¾ï¼ç¬¬ä¸ä¸ªåæ°æ¯cls代表该类æ¬èº«ï¼å¿ é¡»æè¿åå¼ãå¾ææ¾ï¼ç±»å å®ä¾åæè½äº§è½å¯¹è±¡ï¼æ¾ç¶æ¯newå æ§è¡ï¼ç¶ååinitï¼å®é ä¸ï¼åªè¦newè¿åçæ¯ç±»æ¬èº«çå®ä¾ï¼å®ä¼èªå¨è°ç¨initè¿è¡åå§åãä½æ¯æä¾å¤ï¼å¦ænewè¿åçæ¯å ¶ä»ç±»çå®ä¾ï¼åå®ä¸ä¼è°ç¨å½åç±»çinitãä¸é¢æ们åå«è¾åºä¸å¯¹è±¡aå对象bçç±»åï¼
å¯ä»¥çåºï¼aæ¯testç±»çä¸ä¸ªå¯¹è±¡ï¼èbå°±æ¯objectç对象ã
2ãmapå½æ°è¿åç对象
mapï¼ï¼å½æ°ç¬¬ä¸ä¸ªåæ°æ¯funï¼ç¬¬äºä¸ªåæ°æ¯ä¸è¬æ¯listï¼ç¬¬ä¸ä¸ªåæ°å¯ä»¥ålistï¼ä¹å¯ä»¥ä¸åï¼ä½ç¨å°±æ¯å¯¹å表ä¸listçæ¯ä¸ªå ç´ é¡ºåºè°ç¨å½æ°funã
æ没æåç°ï¼ç¬¬äºæ¬¡è¾åºbä¸çå ç´ æ¶ï¼åç°åæ空äºãåå æ¯map()å½æ°è¿åçæ¯ä¸ä¸ªè¿ä»£å¨ï¼å¹¶ç¨å¯¹è¿åç»æ使ç¨äºyieldï¼è¿æ ·åçç®çå¨äºèçå åã举个ä¾åï¼
æ§è¡ç»æ为ï¼
è¿éå¦æä¸ç¨yieldï¼é£ä¹å¨å表ä¸çå ç´ é常大æ¶ï¼å°ä¼å ¨é¨è£ å ¥å åï¼è¿æ¯é常浪费å åçï¼åæ¶ä¹ä¼éä½æçã
3ãæ£å表达å¼ä¸compileæ¯å¦å¤æ¤ä¸ä¸¾ï¼
æ¯å¦ç°å¨æ个éæ±ï¼å¯¹äºææ¬ä¸å½ï¼ç¨æ£åå¹é åºæ ç¾éé¢çâä¸å½âï¼å ¶ä¸classçç±»åæ¯ä¸ç¡®å®çãæ两ç§æ¹æ³ï¼ä»£ç å¦ä¸ï¼
è¿é为ä»ä¹è¦ç¨compileå¤å两è¡ä»£ç å¢ï¼åå æ¯compileå°æ£å表达å¼ç¼è¯æä¸ä¸ªå¯¹è±¡ï¼å å¿«é度ï¼å¹¶éå¤ä½¿ç¨ã
4ã[[1,2],[3,4],[5,6]]ä¸è¡ä»£ç å±å¼è¯¥å表ï¼å¾åº[1,2,3,4,5,6]
5ãä¸è¡ä»£ç å°å符串"-"æå ¥å°"abcdefg"ä¸æ¯ä¸ªå符çä¸é´
è¿éä¹å»ºè®®å¤ä½¿ç¨os.path.join()æ¥æ¼æ¥æä½ç³»ç»çæ件路å¾ã
6ãzipå½æ°
zip()å½æ°å¨è¿ç®æ¶ï¼ä¼ä»¥ä¸ä¸ªæå¤ä¸ªåºåï¼å¯è¿ä»£å¯¹è±¡ï¼å为åæ°ï¼è¿åä¸ä¸ªå ç»çå表ãåæ¶å°è¿äºåºåä¸å¹¶æçå ç´ é 对ãzip()åæ°å¯ä»¥æ¥åä»»ä½ç±»åçåºåï¼åæ¶ä¹å¯ä»¥æ两个以ä¸çåæ°;å½ä¼ å ¥åæ°çé¿åº¦ä¸åæ¶ï¼zipè½èªå¨ä»¥æçåºåé¿åº¦ä¸ºåè¿è¡æªåï¼è·å¾å ç»ã
pythonå¿ èå ¥é¨ä»£ç æ¯ä»ä¹ï¼pythonå¿ è代ç æ¯ï¼
defnot_emptyï¼sï¼ï¼
returnsandlenï¼sãstripï¼ï¼ï¼0
#returnsandsãstripï¼ï¼
#å¦æç´æ¥ååsãstripï¼ï¼é£ä¹så¦ææ¯Noneï¼ä¼æ¥éï¼å 为None没æstripæ¹æ³ã
#å¦æsæ¯Noneï¼é£ä¹Noneandä»»ä½å¼é½æ¯Falseï¼ç´æ¥è¿åfalse
#å¦æséNoneï¼é£ä¹å¤å®sãtripï¼ï¼æ¯å¦ä¸ºç©ºã
è¿æ ·åfilterè½è¿æ»¤å°Noneï¼""ï¼""è¿æ ·çå¼ã
åæ两é¨åçã第ä¸é¨åæ¯å¯¹é¿åº¦è¿è¡åºåãç¸å½äºå°±æ¯range(5)ä»çç»æå°±æ¯ãã第äºé¨åå°±æ¯å ·ä½çæåºè§åãæåºè§åæ¯ç¨numsçå¼è¿è¡æåºï¼reverse没ç³æå°±æ¯é»è®¤ååºãå°±æ¯ç¨nums(0å°4)çå¼è¿è¡æåºï¼æ ¹æ®è¿ä¸ªç»æè¿åçä¸ä¸ªrange(5)çæ°ç»ã
pythonå¿ èå 容ï¼
1ãåéãæå¨ç¨åºæ§è¡è¿ç¨ä¸ï¼å¯åçéãå®ä¹ä¸ä¸ªåéï¼å°±ä¼ä¼´éæ3个ç¹å¾ï¼åå«æ¯å åIDï¼æ°æ®ç±»åååéå¼ã常éï¼æå¨ç¨åºæ§è¡è¿ç¨ä¸ï¼ä¸å¯åçéãä¸è¬é½ç¨å¤§ååæ¯å®ä¹å¸¸éã
2ãä¸ç¨åºäº¤äºãå¤æ¶åï¼æ们å»é¶è¡åé±ï¼éè¦æä¸ä¸ªé¶è¡ä¸å¡åççæ们æèªå·±çè´¦å·å¯ç è¾å ¥ç»ä»ï¼ç¶åä»å»è¿è¡éªè¯çæååï¼æ们åå°å款éé¢è¾å ¥ï¼åè¯ä»ã
éªå²çç°ä»£äººï¼ä¼ä¸ºå®¢æ·æä¾ä¸å°ATMæºï¼è®©ATMæºè·ç¨æ·äº¤äºï¼ä»èå代人åãç¶èæºå¨æ¯æ»çï¼æä»¬å¿ é¡»ä¸ºå ¶ç¼åç¨åºæ¥è¿è¡ï¼è¿å°±è¦æ±æ们çç¼ç¨è¯è¨ä¸è½å¤æä¸ç§è½ä¸ç¨æ·äº¤äºï¼æ¥æ¶ç¨æ·è¾å ¥æ°æ®çæºå¶ã
pythonå®ç¨ä»£ç
pythonå®ç¨ä»£ç å¦ï¼
abs(number)ï¼è¿åæ°åçç»å¯¹å¼ï¼cmath.sqrt(number)ï¼è¿åå¹³æ¹æ ¹ï¼ä¹å¯ä»¥åºç¨äºè´æ°ï¼float(object)ï¼å°å符串åæ°å转æ¢ææµ®ç¹æ°ã
Pythonæ¯ä¸ç§å¹¿æ³ä½¿ç¨ç解éåãé«çº§åéç¨çç¼ç¨è¯è¨ãPythonç±è·å °æ°å¦å计ç®æºç§å¦ç 究å¦ä¼çGuidovanRossumåé ï¼ç¬¬ä¸çåå¸äºå¹´ï¼å®æ¯ABCè¯è¨çå继è ï¼ä¹å¯ä»¥è§ä¹ä¸ºä¸ç§ä½¿ç¨ä¼ ç»ä¸ç¼è¡¨è¾¾å¼çLISPæ¹è¨ã
Pythonæä¾äºé«æçé«çº§æ°æ®ç»æï¼è¿è½ç®åææå°é¢å对象ç¼ç¨ã
Pythonæºç æ¯ä»ä¹ææï¼Pythonæºç ï¼Pythonsourcecodeï¼æçæ¯Pythonç¼ç¨è¯è¨çå®ç°ä»£ç ææºä»£ç ï¼å æ¬Python解éå¨ä»¥åæ ååºä¸ç模ååå ï¼æ¯ç¨Pythonè¯è¨ç¼åçæºä»£ç æ件éåã
Pythonæºç å为两é¨åï¼æ ¸å¿æºä»£ç åæ ååºæºä»£ç ãæ ¸å¿æºä»£ç æçæ¯Python解éå¨çæºä»£ç ï¼å³è¿è¡Pythonç¨åºç主è¦ç¨åºãæ ååºæºä»£ç æçæ¯Pythonçæ ååºï¼å æ¬å 置模åï¼å¦osãreãdatetimeçï¼ãæ ååºæ¨¡åï¼å¦mathãrandomãjsonçï¼ä»¥å第ä¸æ¹åºï¼å¦requestsãnumpyãpandasçï¼ã
对äºåå¦è æ¥è¯´ï¼Pythonæºç å¯¹å ¶æ¥è¯´æä¸å®çåèåå¦ä¹ ä»·å¼ãå¦ä¹ Pythonæºç å¯ä»¥å¸®å©äººä»¬æ´å¥½å°ç解Pythonè¯è¨çå·¥ä½åçåæºå¶ï¼ç解Pythonå®ç°ç»èï¼ç£¨ç»èªå·±ç代ç æ°´å¹³åè½åãä½æ¯ï¼ç±äºPythonæºç åºå¤§ä¸å¤æï¼æ以人们ä¸è¬ä¸ä¼ä»å¤´å¦ä¹ ï¼èæ¯éè¿å¦ä¹ Pythonæç¨ãåèææ¡£çéæ¥ææ¡ç¸å ³ç¥è¯ã