1.pythonç®å代ç helloworld(pythonç®å代ç helloworld)
2.Redux(4.0.4)源码解析
3.ç®å好ç©çç¼ç¨ä»£ç ï¼
4.随便给我一个编程代码带意思谢谢
5.Navigation源码解析及自定义FragmentNavigator详解
pythonç®å代ç helloworld(pythonç®å代ç helloworld)
为ä»ä¹javaçhelloworld代ç å¤æèpythonçhelloworld代ç ç®æ´å°ä» ä¸è¡ï¼
ä¸è¡ä»£ç ååºè¿ä¸ªä¹æ²¡æä»ä¹ç¹å«çåãè³å°æ¯è¾ä¸¤é¨è¯è¨ä¸è½è¿ä¹æ¯ãå¦æä½ çè¦é®ä¸ºä»ä¹ï¼é£å°±æ¯å 为Pythonæ¯ä¸é¨è§£éæ§è¯è¨ï¼å½ç¶æ¯è®©äººåå°ä¸ç¹å°±è½å¹²å¤ç¹äºäºã
pythonåºç¡é½æåªäºå 容å¢
1.HelloWorld
å®ä¾HelloWorld.py
#!/usr/bin/python3?
print(âHello,World!â);
è¿è¡èæ¬
$pythonHelloWorld.py
注解ï¼ä»¥å¦ä¸æ¹å¼è¿è¡ï¼ç¬¬ä¸è¡æ æä¹ï¼ä½ä»¥./HelloWorld.pyçæ¹å¼è¿è¡ï¼ç¬¬ä¸è¡åæå®python解éå¨çä½ç½®
2.æ è¯ç¬¦
å¿ é¡»åæ¯æä¸å线å¼å¤´
æ è¯ç¬¦å ¶ä»é¨åæ¯åæ¯ãä¸å线åæ°å
大å°åææ
3.设置ç¼ç
é»è®¤æ åµä¸ï¼Python3æºç æ件以UTF-8ç¼ç ï¼ææå符串é½æ¯unicodeå符串ãå½ç¶ä½ ä¹å¯ä»¥ä¸ºæºç æ件æå®ä¸åçç¼ç ï¼
#--coding:cp---
4.注é
pythonåè¡æ³¨é以?#?å¼å§ï¼å¤è¡æ³¨éå¯ä»¥ç¨å¤ä¸ª?#?æ?'''?å?"""?
ä¾å
#!/usr/bin/python3?
#注é?
#注é
'''?
注é?
注é?
'''
"""?
注é?
注é?
"""?
print(âHello,World!â)
4.è¡å缩è¿
python使ç¨è¡ç¼©è¿ä»£è¡¨ä»£ç åèä¸éè¦ï¼{ }ï¼ï¼åä¸ä¸ªä»£ç åçè¡ç¼©è¿å¿ é¡»ä¸è´ï¼å¦åæ¥éã
5.å¤è¡è¯å¥
pythonå¦æä¸ä¸ªè¯å¥è¿é¿å¯ä»¥ç¨\å®ç°å¤è¡è¯å¥ã
sum=one+\?
two+\?
three
6.çå¾ ç¨æ·è¾å ¥
æ§è¡ä¸é¢çç¨åºå¨æå车é®åå°±ä¼çå¾ ç¨æ·è¾å ¥ï¼
#!/usr/bin/python3?
input(âæä¸enteré®éåºãâ)
ç¨æ·æä¸é®æ¶ï¼ç¨åºå°éåºã
7.importä¸fromâ¦import
å¨pythonç¨importæè ?fromâ¦import?æ¥å¯¼å ¥ç¸åºç模åã?
å°æ´ä¸ªæ¨¡å(somemodule)å¯¼å ¥ï¼æ ¼å¼ä¸ºï¼*importsomemodule*?
ä»æ个模åä¸å¯¼å ¥æ个å½æ°,æ ¼å¼ä¸ºï¼?fromsomemoduleimportsomefunction?
ä»æ个模åä¸å¯¼å ¥å¤ä¸ªå½æ°,æ ¼å¼ä¸ºï¼?fromsomemoduleimportfirstfunc,secondfunc,thirdfunc?
å°æ个模åä¸çå ¨é¨å½æ°å¯¼å ¥ï¼æ ¼å¼ä¸ºï¼?fromsomemoduleimport
*pythonæä¹pythonæ两ç§è¿è¡æ¹å¼ï¼äº¤äºå¼åèæ¬å¼ã交äºå¼å¯ä»¥éè¿cmdå½ä»¤è¡çªå£æè IDELå®ç°ï¼èèæ¬å¼éè¿åä¸ä¸ªèæ¬ï¼.pyç»å°¾çææ¡£ï¼å®ç°ãå ¶ä¸äº¤äºå¼ä¸»è¦ç¨äºç®åçpythonè¿è¡æè æµè¯è°è¯pythonæ¶ç¨å°ï¼èèæ¬å¼æ¯è¿è¡pythonç¨åºç主è¦æ¹æ³ã
第ä¸ï¼äº¤äºå¼ï¼éè¿Windowså½ä»¤è¡å·¥å ·è¿è¡äº¤äºå¼è¿è¡pythonãåæ¶æä¸Windowsé®åRé®ï¼å¯å¨âè¿è¡âï¼å¨âè¿è¡âä¸è¾å ¥cmdç¶åå车ï¼å³å¼¹åºå½ä»¤è¡å·¥å ·ï¼ç¶åè¾å ¥pythonå车ï¼å³åºç°å¦ä¸çé¢ã
第äºï¼ç¶åè¾å ¥print('Helloworldï¼')ï¼æ¢å¯ä»¥æ²ä¸è¡ä»£ç ï¼ä¸python交äºä¸æ¬¡ï¼pythonæ§è¡ä¸æ¬¡ã
第ä¸ï¼éè¿IDEL交äºå¼è¿è¡pythonãä»âå¼å§âä¸æ¾å°Python-IDELï¼å¦ä¸å¾ã
第åï¼å¯å¨IDELåï¼åæ ·è¾å ¥print('Helloworldï¼')ï¼æ¢å¯ä»¥æ²ä¸è¡ä»£ç ï¼ä¸python交äºä¸æ¬¡ï¼pythonæ§è¡ä¸æ¬¡ãåªä¸è¿IEDLä¸python代ç å¯ä»¥é«äº®æ¾ç¤ºã
第äºï¼èæ¬å¼è¿è¡pythonï¼å¨IDELä¸ç¹å»file-newfileï¼å°±ä¼å¼¹åºä¸ä¸ªæªå½å(Untitled)çèæ¬çªå£ï¼ç¶åè¾å ¥å¦ä¸ä»£ç ï¼å¹¶æCtrl+Sä¿åã
æpython代ç æä¹ç¼æå¯æ§è¡çexeç¨åº?py2exeåï¼ä¸ç¹ä¹ä¸èï¼ç¨³å®èä¸å¥½ç¨ã
æä½æ¥éª¤å¦ä¸ï¼
å¦æä½ æä¸ä¸ªå为helloworld.pyçpythonèæ¬ï¼ä½ æ³æå®è½¬æ¢ä¸ºè¿è¡å¨windowsä¸çå¯æ§è¡ç¨åºï¼å¹¶è¿è¡å¨æ²¡æå®è£ pythonçwindowsç³»ç»ä¸ï¼é£ä¹é¦å ä½ åºåä¸ä¸ªç¨äºåå¸ç¨åºç设置èæ¬ä¾å¦mysetup.pyï¼å¨å ¶ä¸çsetupå½æ°åæå ¥è¯å¥importpy2exeã
mysetup.py示ä¾å¦ä¸:
#mysetup.py
fromdistutils.coreimportsetup
importpy2exe
setup(console=["helloworld.py"])
ç¶åæä¸é¢çæ¹æ³è¿è¡mysetup.py:
pythonmysetup.pypy2exe
ä¸é¢çå½ä»¤æ§è¡åå°äº§çä¸ä¸ªå为distçåç®å½ï¼å ¶ä¸å å«äºhelloworld.exe,python.dll,library.zipè¿äºæ件ã
å¦æä½ çhelloworld.pyèæ¬ä¸ç¨äºå·²ç¼è¯çCæ©å±æ¨¡åï¼é£ä¹è¿äºæ¨¡åä¹ä¼è¢«æ·è´å¨ä¸ªåç®å½ä¸ï¼åæ ·ï¼ææçdllæ件å¨è¿è¡æ¶é½æ¯éè¦çï¼é¤äºç³»ç»çdllæ件ã
diståç®å½ä¸çæ件å å«äºä½ çç¨åºæå¿ é¡»çä¸è¥¿ï¼ä½ åºå°è¿ä¸ªåç®å½ä¸çææå 容ä¸èµ·åå¸ã
é»è®¤æ åµä¸ï¼py2exeå¨ç®å½distä¸å建以ä¸è¿äºå¿ é¡»çæ件ï¼
1ãä¸ä¸ªæå¤ä¸ªexeæ件ã
2ãpython##.dllã
3ãå 个.pydæ件ï¼å®ä»¬æ¯å·²ç¼è¯çæ©å±åï¼å®ä»¬æ¯exeæ件æéè¦çï¼å ä¸å ¶å®ç.dllæ件ï¼è¿äº.dllæ¯.pydæéè¦çã
4ãä¸ä¸ªlibrary.zipæ件ï¼å®å å«äºå·²ç¼è¯ç纯çpython模åå¦.pycæ.pyo
ä¸é¢çmysetup.pyå建äºä¸ä¸ªæ§å¶å°çhelloword.exeç¨åºï¼å¦æä½ è¦å建ä¸ä¸ªå¾å½¢ç¨æ·ççç¨åºï¼é£ä¹ä½ åªéè¦å°mysetup.pyä¸çconsole=["helloworld.py"]æ¿æ¢ä¸ºwindows=["myscript.py"]æ¢å¯ã
py2exeä¸æ¬¡è½å¤å建å¤ä¸ªexeæ件ï¼ä½ éè¦å°è¿äºèæ¬æ件çåè¡¨ä¼ éç»consoleæwindowsçå ³é®ååæ°ãå¦æä½ æå 个ç¸å ³èçèæ¬ï¼é£ä¹è¿æ¯å¾æç¨çã
è¿è¡ä¸é¢ä¸ªå½ä»¤ï¼å°æ¾ç¤ºpy2exeå½ä»¤çææå½ä»¤è¡æ è®°ã
pythonmysetup.pypy2exe--help
pythonè¾åºhelloworldç代ç æ¯å¤å°ï¼æ¯a[0]+'\n'ã
Pythonçåå§äººä¸ºè·å °äººåå¤Â·èç½èå§ï¼GuidovanRossumï¼ãå¹´å£è¯èæé´ï¼å¨é¿å§æ¯ç¹ä¸¹ï¼Guido为äºæåå£è¯èçæ 趣ï¼å³å¿å¼åä¸ä¸ªæ°çèæ¬è§£éç¨åºã
ä½ä¸ºABCè¯è¨çä¸ç§ç»§æ¿ãä¹æ以éä¸Pythonï¼å¤§èèçææï¼ä½ä¸ºè¯¥ç¼ç¨è¯è¨çååï¼æ¯åèªè±å½ä¸çºªå¹´ä»£é¦æççµè§åå§ãèæ·派森çé£è¡é©¬æå¢ãï¼MontyPython'sFlyingCircusï¼ã
åå±åç¨ï¼
èªä»ä¸çºªå¹´ä»£åPythonè¯è¨è¯çè³ä»ï¼å®å·²è¢«éæ¸å¹¿æ³åºç¨äºç³»ç»ç®¡çä»»å¡çå¤çåWebç¼ç¨ã
å¹´ï¼GuidovanRossumå¨å¼åå°¼äºå·çå½å®¶åæ°ç ç©¶å ¬å¸ï¼CNRIï¼ç»§ç»ä»å¨Pythonä¸çå·¥ä½ï¼å¹¶å¨é£éåå¸äºè¯¥è½¯ä»¶çå¤ä¸ªçæ¬ã
å¹´äºæï¼GuidovanRossumåPythonæ ¸å¿å¼åå¢é转å°BeOpen.com并ç»å»ºäºBeOpenPythonLabså¢éãåå¹´åæï¼BeOpenPythonLabså¢é转å°DigitalCreations(ç°ä¸ºZopeCorporation)ã
å¹´ï¼Python软件åºéä¼(PSF)æç«ï¼è¿æ¯ä¸ä¸ªä¸ä¸ºæ¥æPythonç¸å ³ç¥è¯äº§æèå建çéè¥å©ç»ç»ãZopeCorporationç°å¨æ¯PSFçèµå©æåã
Redux(4.0.4)源码解析
Redux源码解析 Redux源代码解析旨在清晰展示其核心组件及工作流程,力求用最简洁的源码语言阐述每个关键部分的功能。Redux提供了一个状态管理库,简洁简单以管理应用的源码全局状态。以下是简洁简单Redux核心组件的主要解析: createStore.js export default function createStore(reducer, preloadedState, enhancer) createStore函数是Redux的核心,负责创建一个状态存储对象。源码潜艇游戏源码它可以接受三个参数:reducer(减少操作函数)、简洁简单预加载状态(初始状态)和增强器(可选参数,源码用于添加额外功能)。简洁简单 getState 获取当前状态,源码操作简单直接。简洁简单 subscribe 向监听列表中添加监听函数,源码返回取消监听函数。简洁简单在调用dispatch时订阅或取消订阅,源码不会影响正在进行的简洁简单dispatch。下一次dispatch时,将使用订阅列表的液位计设计源码最新快照。 dispatch 执行reducer获取最新状态,并依次执行监听队列中的函数。 replaceReducer 替换当前的reducer。执行后,dispatch一次更新状态。一般不常用。 observable 未见实际应用,可能用于特定场景。使用了symbol-observable包,对于熟悉该包的开发者来说,此部分可能有更多探索空间。 utils 包括actionTypes.js、isPlainObject.js、warning.js等辅助函数。actionTypes.js定义了Redux保留的私有操作类型,用于确保操作的内外比源码正确处理。isPlainObject.js用于判断action对象是否为原生对象。warning.js用于抛出错误,保持代码质量。 applyMiddleware.js 通过createStore(reducer,applyMiddleware(...middleware))执行,返回带有中间件增强的dispatch。精简后,代码更加清晰。 compose.js 实现中间件的串联,依次增强dispatch流程。使用函数式编程技巧,代码简洁高效。 bindActionCreators.js 将单个或多个ActionCreator转化为dispatch(action)的函数集合,简化Action的使用方式。 combineReducers.js 将多个reducer整合为一个,调整state结构,便于管理和操作。资金攻击源码 整体而言,Redux的源码解析展示了其如何通过一系列核心组件实现状态管理的流程,从创建store到管理state、执行reducer、中间件串联,直至整合多个reducer,提供了一套高效、模块化的状态管理方案。理解这些组件及其功能是掌握Redux并能灵活应用的关键。ç®å好ç©çç¼ç¨ä»£ç ï¼
ç«é ·çç¼ç¨ä»£ç
ç«é ·çç¼ç¨ä»£ç æ¯@echooffmodeconcols=lines=colorsetlocalenabledelayedexpansionsetcode=abcdefsetm=1setv=1ã
ç¼å®ç¨åºï¼ç®ç§°ç¼ç¨ï¼æ¯æ让计ç®æºä»£ä¸ºè§£å³æ个é®é¢ã对æ个计ç®ä½ç³»è§å®ä¸å®çè¿ç®æ¹å¼ï¼ä½¿è®¡ç®ä½ç³»æç §è¯¥è®¡ç®æ¹å¼è¿è¡ï¼å¹¶æç»å¾å°ç¸åºç»æçè¿ç¨ã
ç¼ç¨å°±æ¯ä¸ºäºåå©äºè®¡ç®æºæ¥è¾¾å°æä¸ç®çæ解å³æ个é®é¢ï¼è使ç¨æç§ç¨åºè®¾è®¡è¯è¨ç¼åç¨åºä»£ç ï¼å¹¶æç»å¾å°ç»æçè¿ç¨ã计ç®æºè½ç¶åè½åå强大ï¼å¯ä»¥ä¸ç½ãç©æ¸¸æã管çå ¬å¸äººäºå ³ç³»ççãä½æ¯æ²¡æç¨åºï¼å®å°±çäºæ¯ä¸å åºéï¼ä¸ä¼çä¼æ们对å®ä¸è¾¾çâå½ä»¤âã
ç¼ç¨è¯è¨ä»ç»
使ç¨æ±ç¼è¯è¨ç¼å计ç®æºç¨åºï¼ç¨åºåä»ç¶éè¦ååçæ计ç®æºç³»ç»ç硬件ç»æï¼æ以ä»ç¨åºè®¾è®¡æ¬èº«ä¸æ¥çä»ç¶æ¯ä½æççãç¦ççãä½æ£æ¯ç±äºæ±ç¼è¯è¨ä¸è®¡ç®æºç¡¬ä»¶ç³»ç»å ³ç³»å¯åï¼å¨æäºç¹å®çåºåï¼å¦å¯¹æ¶ç©ºæçè¦æ±å¾é«çç³»ç»æ ¸å¿ç¨åºä»¥åå®æ¶æ§å¶ç¨åºçï¼è¿ä»ä¸ºæ¢æ±ç¼è¯è¨ä»ç¶æ¯ååææçç¨åºè®¾è®¡å·¥å ·ã
使ç¨é«çº§è¯è¨ç¼åç¨åºçä¼ç¹æ¯ï¼ç¼ç¨ç¸å¯¹ç®åãç´è§ãæç解ãä¸å®¹æåºéãé«çº§è¯è¨æ¯ç¬ç«äºè®¡ç®æºçï¼å èç¨é«çº§è¯è¨ç¼åç计ç®æºç¨åºéç¨æ§å¥½ï¼å ·æè¾å¥½ç移æ¤æ§ã
å¨è®¡ç®æºåºç¨çåæï¼ç¨åºå使ç¨æºå¨çæ令系ç»æ¥ç¼å计ç®æºåºç¨ç¨åºï¼è¿ç§ç¨åºç§°ä¸ºæºå¨è¯è¨ç¨åºã
æ±è¡ç®åCè¯è¨ç¨åºä»£ç ï¼åºç¡ç就好
#includestdio.h
#includestdlib.h
#defineNUM
/*runthisprogramusingtheconsolepauseroraddyourowngetch,system("pause")orinputloop*/
//å泡æåºç®æ³
//åºæ¬ææ³ï¼æ¯è¾ç¸é»ç两个æ°ï¼å¦æåè æ¯åè 大ï¼åè¿è¡äº¤æ¢ãæ¯ä¸è½®æåºç»æï¼éåºä¸ä¸ªæªæåºä¸æ大çæ°æ¾å°æ°ç»åé¢ã
voidbubbleSort(int*arr,intn){
inti,j;
for(i=0;in-1;i++)
for(j=0;jn-i-1;j++){
//å¦æåé¢çæ°æ¯åé¢å¤§ï¼è¿è¡äº¤æ¢
if(arr[j]arr[j+1]){
inttemp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
//æå·®æ¶é´å¤æ度为O(n^2),å¹³åæ¶é´å¤æ度为O(n^2)ã稳å®æ§ï¼ç¨³å®ãè¾ å©ç©ºé´O(1)ã
//å级çå泡æåºæ³ï¼éè¿ä»ä½å°é«éåºæ大çæ°æ¾å°åé¢ï¼åä»é«å°ä½éåºæå°çæ°æ¾å°åé¢ï¼
//å¦æ¤åå¤ï¼ç´å°å·¦è¾¹çåå³è¾¹çéåãå½æ°ç»ä¸æå·²æåºå¥½çæ°æ¶ï¼è¿ç§æåºæ¯ä¼ ç»å泡æåºæ§è½ç¨å¥½ã
//å级çå泡æåºç®æ³
voidbubbleSort_1(int*arr,intn){
//设置æ°ç»å·¦å³è¾¹ç
intleft=0,right=n-1;
//å½å·¦å³è¾¹çæªéåæ¶ï¼è¿è¡æåº
while(left=right){
inti,j;
//ä»å·¦å°å³éåéåºæ大çæ°æ¾å°æ°ç»å³è¾¹
for(i=left;iright;i++){
if(arr[i]arr[i+1]){
inttemp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
}
}
right--;
//ä»å³å°å·¦éåéåºæå°çæ°æ¾å°æ°ç»å·¦è¾¹
for(j=right;jleft;j--){
if(arr[j+1]arr[j]){
inttemp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
left++;
}
}
intmain(intargc,char*argv[]){
intarr[NUM],i,j,temp;
printf("请è¾å ¥ä¸ªæ°ï¼\n");
for(i=0;iNUM;i++){
printf("请è¾å ¥ç¬¬(%d)个æ°ï¼",i+1);
scanf("%d",arr[i]);
}
printf("\nè¾å ¥å¦ä¸æåï¼\n");
for(i=0;iNUM;i++){
printf("%4d",arr[i]);
}/
*for(i=0;iNUM;i++){
for(j=i+1;jNUM;j++){
if(arr[i]arr[j]){
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}*/
bubbleSort_1(arr,NUM);
/*printf("\nä»å°å°å¤§å¦ä¸æåï¼\n");
for(i=0;iNUM;i++){
printf("%4d",arr[i]);
}*/
printf("\nä»å¤§å°å°å¦ä¸æåï¼\n");
for(i=NUM-1;i=0;i--){
printf("%4d",arr[i]);
}
return0;
}
é便ç»æä¸ä¸ªç¼ç¨ä»£ç 带ææ谢谢main()?
{ ?
inti,j,k;?
printf("\n");?
for(i=1;i5;i++)ï¼*以ä¸ä¸ºä¸é循ç¯*/
for(j=1;j5;j++)
for(k=1;k5;k++)
{
if(i!=ki!=jj!=k)/*ç¡®ä¿iãjãkä¸ä½äºä¸ç¸å*/
printf("%d,%d,%d\n",i,j,k);
}?
}
1ã代ç 解éï¼ä»¥ä¸è¿æ®µä»£ç æ¯ç¨Cè¯è¨ååºæ¥ç代ç ï¼ä»æ解å³çé®é¢æ¯ï¼æ1ã2ã3ã4个æ°åï¼è½ç»æå¤å°ä¸ªäºä¸ç¸åä¸æ éå¤æ°åçä¸ä½æ°ï¼é½æ¯å¤å°ï¼?å¯å¡«å¨ç¾ä½ãåä½ã个ä½çæ°åé½æ¯1ã2ã3ã4ãç»æææçæåååå»?æä¸æ»¡è¶³æ¡ä»¶çæåã
2ãCè¯è¨ä»ç»ï¼Cè¯è¨æ¯ä¸é¨éç¨è®¡ç®æºç¼ç¨è¯è¨ï¼åºç¨å¹¿æ³ãCè¯è¨ç设计ç®æ æ¯æä¾ä¸ç§è½ä»¥ç®æçæ¹å¼ç¼è¯ãå¤çä½çº§åå¨å¨ã产çå°éçæºå¨ç 以åä¸éè¦ä»»ä½è¿è¡ç¯å¢æ¯æ便è½è¿è¡çç¼ç¨è¯è¨ã
3ãCè¯è¨çä¼ç¹ï¼ç®æ´ç´§åãçµæ´»æ¹ä¾¿ãè¿ç®ç¬¦ä¸°å¯ãæ°æ®ç»æ丰å¯ãCæ¯ç»æå¼è¯è¨ãCè¯æ³éå¶ä¸å¤ªä¸¥æ ¼ãç¨åºè®¾è®¡èªç±åº¦å¤§ï¼ä¸è¬çé«çº§è¯è¨è¯æ³æ£æ¥æ¯è¾ä¸¥ï¼è½å¤æ£æ¥åºå ä¹ææçè¯æ³é误ãèCè¯è¨å 许ç¨åºç¼åè æè¾å¤§çèªç±åº¦ãCè¯è¨ç¨åºçæ代ç è´¨éé«ï¼ç¨åºæ§è¡æçé«ï¼ä¸è¬åªæ¯æ±ç¼ç¨åºçæçç®æ 代ç æçä½ã¸%ã
4ãå ¶ä»ç¼ç¨è¯è¨ä»ç»ï¼Python(è±å½åé³:/?pa?θ?n/ç¾å½åé³:/?pa?θÉ?n/),æ¯ä¸ç§é¢å对象ç解éå计ç®æºç¨åºè®¾è®¡è¯è¨ï¼ç±è·å °äººGuidovanRossumäºå¹´åæï¼ç¬¬ä¸ä¸ªå ¬å¼åè¡çåè¡äºå¹´ãPythonæ¯çº¯ç²¹çèªç±è½¯ä»¶ï¼?æºä»£ç å解éå¨CPythonéµå¾ªGPL(GNU?GeneralPublicLicense)åè®®ãPythonè¯æ³ç®æ´æ¸ æ°ï¼ç¹è²ä¹ä¸æ¯å¼ºå¶ç¨ç©ºç½ç¬¦(whitespace)ä½ä¸ºè¯å¥ç¼©è¿ã
pythonæ趣çç¼ç¨ä»£ç class?Point:
row=0col=0def?__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:
breakreturn?pos#å®ä¹åæ
food=gen_food()
food_color=(,,0)
direct='left'#left,right,up,down
#
def?rect(point,?color):
cell_width=W/COLcell_height=H/ROWleft=point.col*cell_widthtop=point.row*cell_heightpygame.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=Falseelif?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=Truebreakif?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)#æ¶å°¾å·¥ä½
è¿æ¯ä¸ä¸ªç®æçè´ªåèç代ç ï¼è½ç¶ç»æç®åï¼ä½æ¯è¯¥æçåè½é½æ¯å®æ´çï¼å¯ç©æ§ä¹ä¸é
cè¯è¨ç¼ç¨çè±ä»£ç ç®åcè¯è¨ç¼ç¨çè±ä»£ç ç®åå¦ä¸ï¼
#include"stdlib.h"
#include"graphics.h"
#include"stdio.h"
#include"math.h"
#include"conio.h"
#definePI?3.
main()
{
intgdriver=DETECT,gmode,errorcode;
inta[],b[],x,y,c,r,i,j,t;
doublerad=0.0;
/*initializegraphicsandlocalvariables*/
initgraph(gdriver,gmode,"");
/*readresultofinitialization*/
errorcode=graphresult();
if(errorcode!=grOk)?/*anerroroccurred*/
{
printf("Graphicserror:%s/n",grapherrormsg(errorcode));
printf("Pleaseanykeytohalt:");
getch();
exit(1);?/*terminatewithanerrorcode*/
}
randomize();
for(;!kbhit();)
{
x=rand()%+;/*éæºä¸å¿åæ */
y=rand()%+;
for(r=0;r=8;r++?)?/*çè±ç大å°è®¾å®*/
{
for(i=0,rad=0.0;rad2*PI;rad+=0.)?/*设å®åæ */
{
a[i++]=x+(int)r**cos(rad);
b[i]=y+(int)r**sin(rad);
}
t=i;
for(i=1;it;i++)
{
c=rand()%+1;/*åç¹çé¢è²éæº*/
setcolor(c);/*åè½:å°å½åå¾å½¢å±å¹çå½åç¬ç»é¢è²ç½®ä¸ºcolor.*/
circle(a[i],b[i],1);/*a[i],b[i]为åå¿1为åå¾ç»å*/
}
delay();
delay();
cleardevice();
å½æ°å:cleardevice?
å?è½:æ¸ é¤å¾å½¢å±å¹?
ç¨?æ³:voidfarcleardevice(void);
}
}
getch();
closegraph();
å½æ°å:closegraph
å?è½:å ³éå¾å½¢ç³»ç»
ç¨?æ³:voidfarclosegraph(void);
}
åå§åçè±åæ°
voidInit(inti)
{
//åå«ä¸ºï¼çè±ä¸å¿å°å¾çè¾¹ç¼çæè¿è·ç¦»ãçè±ä¸å¿å°å¾çå·¦ä¸è§çè·ç¦»(xãy)两个åé
intr[]={ ,,,,,,,,,,,,};
intx[]={ ,,,,,,,,,,,,};
inty[]={ ,,,,,,,,,,,,};
/****åå§åçè±*****/
Fire[i].x=0;//çè±ä¸å¿åæ
Fire[i].y=0;
Fire[i].width=;//å¾ç宽
Fire[i].height=;//å¾çé«
Fire[i].max_r=r[i];//æ大åå¾
Fire[i].cen_x=x[i];//ä¸å¿è·å·¦ä¸è§è·ç¦»
Fire[i].cen_y=y[i];
Fire[i].show=false;//æ¯å¦ç»½æ¾
Fire[i].dt=5;//绽æ¾æ¶é´é´é
Fire[i].t1=timeGetTime();
Fire[i].r=0;//ä»0å¼å§ç»½æ¾
/****åå§åçè±å¼¹*****/
Jet[i].x=-;//çè±å¼¹å·¦ä¸è§åæ
Jet[i].y=-;
Jet[i].hx=-;//çè±å¼¹åå°æé«ç¹åæ
Jet[i].hy=-;
Jet[i].height=0;//åå°é«åº¦
Jet[i].t1=timeGetTime();
Jet[i].dt=rand()%;//åå°é度æ¶é´é´é
Jet[i].n=0;//çè±å¼¹éªçå¾çä¸æ
Jet[i].shoot=false;//æ¯å¦åå°
}
随便给我一个编程代码带意思谢谢
main(){
int i,j,k;
printf("\n");
for(i=1;i<5;i++) /*以下为三重循环*/
for(j=1;j<5;j++)
for (k=1;k<5;k++)
{
if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/
printf("%d,%d,%d\n",i,j,k);
}
}
1、代码解释:以上这段代码是用C语言写出来的代码,他所解决的问题是:有1、2、3、grid源码下载4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
2、C语言介绍:C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
3、C语言的优点:简洁紧凑、灵活方便。运算符丰富。数据结构丰富。C是结构式语言。C语法限制不太严格、程序设计自由度大,一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而C语言允许程序编写者有较大的自由度。C语言程序生成代码质量高,程序执行效率高 ,一般只比汇编程序生成的目标代码效率低へ%。
4、其他编程语言介绍:Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于年发明,第一个公开发行版发行于年。Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议 。Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。
Navigation源码解析及自定义FragmentNavigator详解
谷歌推出的Navigation主要目标是统一应用内页面跳转行为。使用方法简单,新项目选择Bottom Navigation Activity,系统自动生成页面逻辑。
Navigation源码设计简洁,包含多个关键类。其中,NavHostFragment是直接在XML文件中定义的,其生命周期方法onCreate中直接创建了NavHostController,并通过findNavController暴露给外部调用者。NavHostController继承自NavController。在此过程中,通过navController获取NavigatorProvider并添加了两个Navigator:DialogFragmentNavigator和FragmentNavigator。NavController构造方法中还额外添加了两个Navigator,分别对应DialogFragment、Fragment和Activity的页面跳转。NavGraphNavigator用于在XML配置的navGraph与根节点文件中的startDestination之间实现跳转,功能单一。
各个Navigator通过重写navigate方法实现各自的跳转逻辑。FragmentNavigator的关键实现在于注释1处,使用replace加载Fragment,这不符合实际开发需求。文章后续将解释如何自定义FragmentNavigator以避免Fragment在切换时执行生命周期。
NavigatorProvider内部维护了一个HashMap存储相关Navigator信息,通过获取Navigator的注解Name作为键和getClass作为值进行存储。在onCreate方法中,mNavController调用了setGraph,解析XML配置的mobile_navigation节点信息文件,根据不同的节点各自解析。通过获取NavInflater进行解析,返回NavGraph,NavGraph继承自NavDestination,保存了所有解析出的节点信息。
总结,通过NavHostFragment获取到NavContorl并存储了相关Navigator信息。通过各自navigate方法进行页面跳转,通过setGraph解析配置的页面节点信息并封装为NavGraph对象。其中,通过SparseArray存储Destination信息。
自定义Navigator实现思路主要在于继承现有FragmentNavigator并重写其navigate方法,将replace方法替换为show和hide方法,完成Fragment切换。通过@Navigator.Name(value)注解标记自定义类为Navigator,加入NavigatorProvider中即可识别。自定义Navigator核心代码实现后,需调整mobile_navigation节点中的fragment为fixFragment,并删除布局文件中NavHostFragment节点信息,手动关联FixFragmentNavigator与NavControl,完成Fragment切换时生命周期不会重新执行。