ããã§ã¯Jupyter Notebookã§ããã°ã©ãã³ã°èšèªPythonãçšããŠæŒç¿ãè¡ããŸããå°ãªãæéã§ããã°ã©ã ãšã¯äœã§ããããåççã«çè§£ããããšãšãææ¿å ·ãšããŠã®ããã°ã©ãã³ã°ãããçšåºŠãã¹ã¿ãŒããããšãç®çãšããŠããŸããæ¬æ Œçãªããã°ã©ãã³ã°ãåŠã¶ããã«ã¯ããããã®ããã°ã©ãã³ã°èšèªã®æŒç¿ã履修ããããšããå§ãããŸãã
Jupyter Notebookãšã¯ããã°ã©ã ãšãã®å®è¡çµæ(å€(æååå«ã)ãã°ã©ãã衚圢åŒ)ãæç« (説æ)ãæ··åšãããŠç·šéã»è¡šç€ºãè¡ããããŒã«ã§ããJupyterã®ããŒã¿ã®åŠçãè¡ãããã°ã©ã ã¯ãµãŒãæ¹åŒã§åäœããããã«webãã©ãŠã¶ããæ¥ç¶ããŠäœ¿ããŸã(OSã®ã¡ãã¥ãŒçããJupyter Notebookãèµ·åããã°èªåçã«ãã©ãŠã¶ãç«ã¡äžãã£ãŠããŒã«ã«ã«åäœããJupyerã®ãµãŒãã«èªåçã«æ¥ç¶ããŸã)ãã¡ãã£ã¢ã»ã³ã¿ã®Windowsã«ã¯ããã°ã©ãã³ã°èšèªPythonã®åŠçç³»ã®äžã€ã§ããAnacondaãã€ã³ã¹ããŒã«ãããŠãããããã«ã¯Jupyterãå«ãŸããŠããŸããããªãŒãœãããŠã§ã¢ã§ãããBYODã®PCã«ãç¡æã§ã€ã³ã¹ããŒã«å¯èœã§ããè€æ°ã®versionã®Pythonãããããå«ãã AnacondaãæäŸãããŠããã®ã§ãè³æã§äœ¿ã£ãŠããPython3ã®æ¹ãã€ã³ã¹ããŒã«ããŠãã ããã
ããã«ã€ããŠã¯å¥ããŒãžãåç §ããŠãã ããã
ãã®ããŒãžã衚瀺ããªãããããã°ã©ã ã®ã³ãŒãéšå(In [ ]:
ã®å³åŽæ å
ã®éšå)ãé ã«Jupyterã®ã»ã«(ãã¯ãæ å
ã®éšåãããã°ã©ã ãªã®ã§Code屿§ã«ãã)ã«æå
¥åãããã³ããŒ&ããŒã¹ãããå®è¡ããŸããæãã¯ææ¥äžã«æç€ºããäºå®ã®ãnotebookã®ããŒã¿ãã¡ã€ã«ãuploadããããšã§ãçŽæ¥å®è¡ããããšãå¯èœã«ãªããŸããäœãæåºèª²é¡ã®éšåã¯èªåã§å
¥åãããªã倿Žãããªãããå¿
èŠããããŸãã
課é¡ã®åçãäœæããŠåäœç¢ºèªãããã³ããŒ&ããŒã¹ãã«ãããã¬ãŒã³ããã¹ãã®ãã¡ã€ã«çãšããŠæåºããŠãã ãã(次å以éãåæ§)ã
ãã¡ã€ã«å: 課é¡çªå·.æ¡åŒµå
ãã¡ã€ã«åã®äŸ: kadai09.py
äžã®ã1+2ãã¯ããã§äžã€ã®ããã°ã©ã ã§ãããããå®è¡ãã(è©äŸ¡ãã)ã«ã¯ããŠã¹ã§ã¯ãªãã¯ããŠäžã®ã»ã«ãéžæãã(ååšããå Žåã¯)ãŠã£ã³ããŠäžæ¹ã®[>|]
ã®ãã¿ã³ãã¯ãªãã¯ããããSHIFT+returnããŒãæŒããŸããOut[..]:
3ãšããããã«å€3ã衚瀺ãããã°æ£åžžã«åäœããŠããŸãã
1+2
次ã®ã»ã«äžã«å æžä¹é€(+-*/)
ã«ããæ°åŒãæžããåæ§ã«å®è¡ããŠã¿ãŠãã ãããã»ã«ã®äžãæžãçŽããŠåå®è¡ã§ããŸãã
10+4*(3/4+100)+101
ããã¯Python(ãã¥ãŒããªã¢ã«)ãšããããã°ã©ãã³ã°èšèªã®ããã°ã©ã ãšããŠå¯Ÿè©±çã«å®è¡ããŠããŸããäžå¿ãŠã£ã³ããŠå³äžã«[Python 3]
ãªã©ãšè¡šç€ºãããŠããããšã確èªããŠãã ãããããã°ã©ã ã®å®è¡ã®ä»æ¹ãšããŠãããåŒãšå¯Ÿè©±åŒãšããæ¹åŒããããåè
ã¯(è€æ°ã®æããããŸãã)äžã€ã®å®ãŸã£ãããã°ã©ã ã«ããŒã¿ãäžããŠåŠçãè¡ãæ¹åŒã§ããåŸè
ã¯ããã°ã©ã ã®åŠçç³»ã«ããã°ã©ã ã®æçãå
¥åãã€ã€ã察話çã«å°ããããã°ã©ã ã®å®è¡ãšçµæã®è¡šç€ºãç¹°ãè¿ãè¡ãæ¹åŒã§ãã
察話çã«å®è¡ããæ¹ããšã£ã€ããããã®ã§ããã®è³æã§ã¯å¯Ÿè©±çã«å®è¡ããæ¹æ³ã§è§£èª¬ãè¡ããŸãããã ããJupyterã®å Žåã»ã«ããšã«å®è¡ãè¡ããããå®è¡ã®é åºã«ãã£ãŠåŠçç³»(ããã°ã©ã ã®å®è¡ãè¡ãããã°ã©ã éãæ¬äœéšåã¯ããªãã®éšåãæ©æ¢°èªã§ã§ããŠãããããŸããå®è¡ãã察象ã®ããã°ã©ã ã¯Pythonçã®ã人éãçè§£ããããé«çŽèšèªã§æžããããã®ã§ãã倧ããåããŠã³ã³ãã€ã©æ¹åŒãšã€ã³ã¿ããªã¿æ¹åŒããããŸã)ã®ç¶æ ãç°ãªãå ŽåããããŸãããŸããããããå®è¡ããŠããªãã»ã«ããããšããã®å 容ã«äŸåããä»ã®ããã°ã©ã ã®æçãããŸãåäœããªãå ŽåãããããŸãã®ã§æ³šæãå¿ èŠã§ããããã«ã€ããŠã¯åŸã§èª¬æããŸãã
ããã§Pythonã®versionã確èªããŠãããŸããimport
ãšããã®ã¯ã©ã€ãã©ãª(ã¢ãžã¥ãŒã«(倧æµã®å Žåäžã€ã®ãã¡ã€ã«ã«ãŸãšããããããã°ã©ã )ãããã±ãŒãž(ããã€ãã®ã¢ãžã¥ãŒã«ãçºãããã®))ãåŠçç³»ã«èªã¿èŸŒãããã®åœä»€ã§ãã以äžã§ã¯sys
ãèªã¿èŸŒã¿ããã®äžã®version_info
ã®å€ãåç
§ããŸãã
import sys
sys.version_info # ãã®è³æã§ã¯**Python3**ã䜿ã£ãŠè§£èª¬ããŠãã
Pythonã®èšèªã®(major) versionã¯2ãš3ã§ããªãéãéšåãããããã®è³æã§ã¯Python3ã«ã€ããŠèšè¿°ããŠããŸããå ã®ãã¥ãŒããªã¢ã«çãåç §ããéã«ã¯versionãè¿ããã®ãåç §ããŠãã ããã
倿°ã¯ã»ãšãã©ã®ããã°ã©ãã³ã°èšèªã«ãããŠéèŠãªæŠå¿µã§ãã倿°(variable)ãšã¯ãäœããã®ããŒã¿ãæ ŒçŽããç®±ã ãšæã£ãŠãã ãããç®±ã«ã¯ååããããããã倿°åãšèšããŸããPythonã«ã¯PEP-8ãšããæšæºã©ã€ãã©ãªã«ã€ããŠã®ã³ãŒãã£ã³ã°èŠçŽããããããã«åŸããªã倿°åã¯éåžžè±å°æåãšã_
ã(ã¢ã³ããŒã¹ã³ã¢)ã®åãšããŸããåŸã§åºãŠããããã«éãç®±ã ãåãååãäžããããå Žåãããããã®å Žåã«ã€ããŠã®çè§£ãå¿
èŠã§ãã
ãŸããPythonãå«ããŠæç¶ãåã®ããã°ã©ãã³ã°èšèªã§ã¯å€æ°ã®å€ãããã°ã©ã ã®å®è¡éäžã§å€æŽããããšãã§ãããããèšç®ã®ç¶æ
å€åã衚ããŸãããã®ããã«ããã°ã©ã ã®å®è¡éäžã§å€ãå€åããããšãå¯èœãªå€æ°ãmutableãªå€æ°ãšèšããŸãã倿°ã®ç®±ã«å€ãå
¥ããããšã代å
¥(assignment)ãšèšããPythonã®å Žåã«ã¯=
ã䜿ã£ãŠè¡šããŸããçµæçã«å·Šå³ãçãããªããšã¯éãããæ°åŠã§ã®çåŒã衚ããŠããã®ã§ã¯ãªãããšã«æ³šæããŠãã ããã
倿°ã«ã¯çš®é¡ããããã©ã®ãããªçš®é¡ã®å€æ°ã䜿ãããã¯ããã°ã©ãã³ã°èšèªã«ããå€ãããŸããããããŸãããã§ã¯ãããã®ãã¡å€§å倿°(global variable)ãšãããããã°ã©ã (ãã¡ã€ã«å )ã®ã©ããããåç §ã§ãã(äŸå€ããããŸã)倿°ã®ã¿ãåºãŠããŸãã倧å倿°ã«ã€ããŠã¯ãããã®ç®±ã¯ããã°ã©ã ã®å®è¡éå§æ(ãããã¯ãã®å€æ°ãååšããããšãããã£ãæåã®æç¹)ããããã°ã©ã ã®å®è¡çµäºæãŸã§ååšãç¶ããŸãã
以äžãäžããé çªã«åã»ã«ãå®è¡ããŠã¿ãŠãã ãããäŸãã°x=åŒ
ãã§åŒã®å€ãèšç®ããçµæãxã«ä»£å
¥ããŸããæ¬¡ã®è¡ã®xã¯Pythonã§ã¯ä»£å
¥æãå€ãæããªãããã§ãããªã#ããå³åŽã¯ã³ã¡ã³ããšããŠæ±ããããã®éšåã¯å®è¡ãããŸããã
x=11 # 倿°xã«11ã**代å
¥**ãã
x
y=23
y
z=x*y
z
x
z*z
x=12
x
z=x*y
z
z+=3 # z ã«3ãå ãã
z
z*=2 # zã®å€ã2åãã
z
ãã®äŸã®ããã«ã倿°ã«ã¯å€ãæ ŒçŽããããšãåºæ¥ãŸãããã®åŸã®åœä»€ã®åãå
šãåãã§ãã倿°ã®å€ã«ãã£ãŠèšç®ã¯å€ãã£ãŠããŸããäžããé ã«å®è¡ããå Žåã«ã¯æåxã®å€ã11ã§ãããããã«äŸåããŠæ±ºãŸãzã®å€ã¯æå253ã«ãªããŸããããããã®åŸx
ã®å€ã12
ã«å€æŽãããŠããz=x*y
ãšããåãåœä»€ã«ãã£ãŠz
ã®å€ã¯276
ãšããç°ãªãå€ã«ãªããŸãã倿°ã¯é»åã®ã¡ã¢ãªãšåãçšéã§çšããããšãå¯èœã§ãã
äžããé ã«å®è¡ããå Žåãæåã®z=x*y
ã§z
ã®å€ã¯253
ã«ãªããŸããããã®åŸäžã®æ¹ã®åœä»€ãå®è¡ããŠx
ã®å€ãç°ãªãå€ã«å€åããŠãã(äžã®æ¹ã®ã§ã¯ãªã)æåãšåãã»ã«ã®z=x*y
ãå®è¡ãããšãzã®å€ã¯ç°ãªããã®ãšãªããŸãããŸããx=11
ãx=12
ãå®è¡ããåã«z=x*y
ãå®è¡ãããšxã®å€ãå®çŸ©ãããŠããªãããã«ãšã©ãŒã«ãªããŸãããã®ããã«ã»ã«ã®å®è¡é åºã«ãã£ãŠãšã©ãŒãèµ·ããã倿°ã®å€ãå«ããŠç¶æ
ãå€åããããšã«æ³šæããŠãã ããããŸããz+=3
ã®ããã«å®è¡ã®åºŠã«z
ãå¢å ããããå®è¡åæ°ã圱é¿ãäžããå ŽåããããŸããäžããé ã«å®è¡ããã°å®è¡åæ°ã«é¢ãããæ£ããåããããªnotebookãšããã®ãæãŸããå Žåãå€ãã§ãã
Pythonã§ã¯æ°å€ä»¥å€ã«ãæ§ã ãªããŒã¿ãæ±ããŸããäŸãã°ããŒã¿ã®åã§ãããªã¹ããæååãªã©ããããŸããããŒã¿ã®çš®é¡ã®ããšãäžè¬ã«ããŒã¿åãšãããŸããããã°ã©ã ã®å®è¡åã«åŒã衚ãããŒã¿ã®åãå®ãŸããããªããã°ã©ãã³ã°èšèªãéçåä»ãã®èšèªãšèšããŸããããã«å¯ŸããããŒã¿åãå®è¡åã«æ±ºãŸãããå®è¡æã«ãã§ãã¯ãããèšèªãåçåä»ãã®èšèªãšèšããŸããPythonã¯åŸè ã«ãªããŸãã
éçåä»ãã®èšèªã¯ããã°ã©ã ã®å®è¡åã«ãããçš®ã®ããã°ã©ã ã®ãã¹(BUG)ããªãããšãèªåçã«ãã§ãã¯ã§ããŸããç¹ã«åŒ·ãåä»ããšããçš®é¡ã«åé¡ãããèšèªã§ã¯ãå®è¡åã®ãã§ãã¯ãéã£ãŠããã°ããŒã¿åã«é¢ãããšã©ãŒãå®è¡æã«èµ·ããªãããšãä¿èšŒãããŸãããã ãããã°ã©ãã³ã°ãåŠã¶éã«ããŒã¿åã«é¢ããçè«ãããçšåºŠåŠã¶å¿ èŠããããŸãããåååºãæ ã§ã¯ãããŸãããäžå®ã®æ ã«åµã£ãããã°ã©ã ã®ã¿ãæžããããšã«ãªããŸããPythonã¯åçåä»ãã®èšèªãªã®ã§ããŒã¿åã®ãšã©ãŒã®å®è¡åã®ãã§ãã¯ã¯è¡ããããå®è¡æã«æ€åºãããŸãã
ãããŸã§ã¯ã»ãšãã©é»åãšåãããã«èšç®ãè¡ã£ãŠããã ãã§ããããããä»ããåºãŠããæ¡ä»¶å€æãšç¹°ãè¿ãã¯ãéåžžã®é»åã«ã¯ãªããã®ã§ãããèšç®æ©ãæçšãªéå ·ãšããã«ã¯å¿ é ã®ãã®ã§ããPythonã®æ¡ä»¶æã¯ä»¥äžã®ãããªæ§æã«ãªããŸããæ¹è¡ãšã€ã³ãã³ã(åäžã)ã«ããããã°ã©ã ã®åºåãã衚ãã®ã¯Pythonã®ç¹åŸŽã§ãããæ¹è¡ãåäžããããã»ã©æå³ãæããªãããã°ã©ãã³ã°èšèªã倿°ãããŸãããã®ãããªèšèªã§ã¯æ¹è¡ãåäžããå ¥ããçç±ã¯å°ã人éã«ãšã£ãŠã®èªã¿ãããã®ããã§ãã
æ§æ:
if æ¡ä»¶åŒ:
æïŒããã# æ¡ä»¶ãTrueã§ããã°elseãŸã§ãå®è¡ããããã€ã³ãã³ã(åäžã)ãå¿
èŠ
æïŒããã# ç¶ããŠå®è¡ããè¡ã¯äžãšåãã€ã³ãã³ããšãã
.
.
else:ãã # ifãšåãã€ã³ãã³ããšãã
æïœããã# æ¡ä»¶ãFalseã§ããã°ifã®çµããã®å¢çãŸã§ãå®è¡ããããã€ã³ãã³ã(åäžã)ãå¿
èŠ
æïœããã# ç¶ããŠå®è¡ããè¡ã¯äžãšåãã€ã³ãã³ããšãã
.
.
次ã®åœä»€ããã# ã€ã³ãã³ããå
ã«æ»ã(ifãšåã)ãæ¡ä»¶æã®å®è¡çµäºåŸã«å®è¡ããã
éåžžãæ¡ä»¶åŒã®éšåã«ã¯çãããã©ãã(==
,!=
)倧å°é¢ä¿ç(<
,>
,<=
,>=
)ããããã®çµã¿åãã(and
,or
,not
ã§çµã¿åããã)çãçåœå€ããšããããªåŒãèšè¿°ããŸãããªãelse:
ããæ¬¡ã®åœä»€ã®åãŸã§ã®è¡ã¯ãªããŠãæ§ããŸããããã®å Žåã¯æ¡ä»¶åŒãFalse
ã§ãã£ãå Žåãæ¡ä»¶æå
ã§ã¯è¿œå ã§äœãå®è¡ãããŸããããŸãelse:
åŸã®æa
...ã®éšåããŸãå¥ã®ifæã«ãªã£ãŠããå Žåãã€ã³ãã³ãã®ã¬ãã«ãæ·±ãããªãããã®æžãæ¹(elif
)ããããŸããããã«ä»ããŠã¯åŸã§åºãŠããŸãã
次ã®2ã€ã®å
·äœäŸã§ã¯æ¡ä»¶éšåã®çåœã«ããåŒã®å€ãå€åããŸãã==
ã¯äž¡èŸºãçããæTrue
ãçãããªãæFalse
ãšãªããŸãã
if 1 == 1:
x=1
else:
x=2
x
if 1 == 0:
x=1
else:
x=2
x
print(1==1,1==0,1!=0,1>2,True or False, True and True, not True) # printã¯åŒæ°(ã²ããããargument)ã®å€ãåºåããã
Pythonã§ç¹°ãè¿ãåŠçãèšè¿°ããæ¹æ³ã¯å€æ°ãããŸããããã§ã¯ãããã®ãã¡ã®äžã€ãfor
ã«ãããã®ã玹ä»ããŸãã
æ§æ:
for 倿° in ç¯å²:
æïŒã# 倿°ã®å€ãç¯å²ã®äžã§å€ããŠforã®å¢çãŸã§ã®æãç¹°ãè¿ãå®è¡ãããã
æïŒã# ã€ã³ãã³ã(åäžã)ãå¿
èŠãç¶ããŠå®è¡ããè¡ã¯äžãšåãã€ã³ãã³ããšããã
.
.
次ã®åœä»€ã# ã€ã³ãã³ããæ»ã(forãšåã)ã空è¡ã¯ç¡èŠããããforæã®çµäºåŸã«å®è¡ãããã
ãªãif
æãfor
æã¯å
¥ãç± ã«ããããšãã§ããŸãããã®å ŽåPythonã§ã¯ã€ã³ãã³ããåãããããšã§å®è¡ããæã®ç¯å²ãæå®ããŸãã
for i in range(1,100): # range(1,100)ã¯1ãã99ãŸã§ãæå³ããã
print(i,end=' ') # end=' 'ã¯iã®åºååŸã«æ¹è¡ã§ã¯ãªã空çœãåºåããæå®
代å
¥ã®éã«ãã,
ãã§åºåã£ãŠè€æ°åã®å€æ°ã«åæã«ä»£å
¥ã§ããŸããããã«ããäŸãã°å€æ°ã®å€ã®äº€æãç°¡åã«èšè¿°ã§ããŸãã
x = 1
y = 10
x,y = y,x # åæä»£å
¥
print(x,y)
æ°ããåœæ°ãå®çŸ©ããããšãå¯èœã§ããäŸãã°äºæ¬¡æ¹çšåŒ$ax^2+2bx+c=0$ã®è§£(ã®äžã€)ãæ±ããåœæ°quadratic
ã¯ä»¥äžã®ããã«å®çŸ©ã§ããŸãã
import math # ãã®äŸã§ã¯åœæ°å®çŸ©ã®äžã§äœ¿çšãããããå¹³æ¹æ ¹ã®å€ãæ±ããåœæ°çãå®çŸ©ãããããã±ãŒãžãèªã¿èŸŒããsqrtã䜿ããªããã°å¿
èŠãªãã
def quadratic(a,b,c): # Pythonã®åœæ°åã»å€æ°åã¯éåžžè±å°æåãšã_ãã®åãšãã(PEP-8ã³ãŒãã£ã³ã°èŠçŽ)
return (-b + math.sqrt(b**2 - a*c))/a # è¿ãå€ãa**b ã¯aã®bä¹
quadratic(1,1,1)
Pythonã®åœæ°å®çŸ©ã¯ä»¥äžã®ãããªãã®ã«ãªããŸãã
æ§æ:
def åœæ°å(åŒæ°1,åŒæ°2,...):
æ1 # ã€ã³ãã³ããå¿
èŠã
æ2 # ã€ã³ãã³ããåãããã
.
. # returnã«ããåŒã®å€ã(è¿ã)å€ãšãåœæ°ã®å®è¡ãçµäºããã
return åŒ # returnã¯è€æ°ç®æã«çŸããå Žåãããã
ããã§åŒæ°1,...
ã¯åœæ°ã«æž¡ãããããŒã¿ãæ ŒçŽããã倿°ã§ãä»®åŒæ°ãšãããŸãããããã«å¯Ÿããå®éã«åœæ°ã«æž¡ãããå
·äœçãªããŒã¿ãå®åŒæ°ãšãããŸããä»®åŒæ°ã¯å±æå€æ°(local variable)ã§ããããããã®ãç®±ãã¯åœæ°ã®å€ãæ±ããéã«ã®ã¿äžæçã«çšæãããåœæ°å®çŸ©å
éšã§ã®ã¿å©çšå¯èœãªå€æ°ãšãªããŸãã倿°ã®æå¹ç¯å²ã®ããšããã®å€æ°ã®ã¹ã³ãŒããšèšããŸããåœæ°å®çŸ©ã®defã«ããæ°ããã¹ã³ãŒããã§ããŸãã
以äžã®äŸã¯ã¹ã³ãŒãããå€ããŠããããã«å€æ°ãæªå®çŸ©ãšãªãäŸã§ãã
def test1():
newvariable_fun = 1
test1()
newvariable_fun
屿倿°ãšåãååã®å€§å倿°ãããå Žåããããã¯åœæ°å éšããã¯åºæ¬çã«åç §ã§ããªããªããŸãã倧å倿°ãšå±æå€æ°ã§åãååã®å€æ°ãããå Žåããããã¯åœæ°åŒã³åºããäœéã«ãéãªã£ãå Žåã«åã倿°åã®å€æ°ãåºãŠããå ŽåããããŸãããããã¯å€æ°åãåããªã ãã§ããç®±ããšããŠã¯å¥ç©ã§ããããšã«æ³šæããŠãã ããã
x = 0
def test2():
x = 1 # ããã¯å±æå€æ°ã
test2()
x # åã倿°åã ãå¥ã®ç®±ã
ãããŸã§ã®ç¥èã§å®çŸ©ã§ããåœæ°ã®äŸé¡ãèŠãŠã¿ãŸãã
ãã£ããããæ°åãšã¯fib(0)=0, fib(1)=1, fib(n)=fib(n-2)+fib(n-1)
ãšããŠååž°çã«å®çŸ©ãããæ°åã§ããèªç¶çã®ãããããªãšããã§çŸããããšãç¥ãããŠããŸãã
def fib(i):
x,y = 0,1
for i in range(0,i):
x,y = y,x+y
return x
fib(0),fib(1),fib(2),fib(3),fib(4),fib(5),fib(6) # ãã®åŒã¯å€ã®çµã¿ãçµæãšãã
def fact(i): # éä¹ãèšç®ããåœæ°
y = 1
for i in range(1,i+1):
y *= i
return y
[fact(0),fact(1),fact(2),fact(3),fact(4),fact(5),fact(6)] # ãã®åŒã¯ãªã¹ããçµæãšããã[]ã§ã¯ãªã()ã«ããŠçµã¿ãšããŠãããã£ãã
fact(300) # ä»»æå€å鷿޿°æŒç®ãè¡ããã5000!çãåé¡ãªãèšç®ã§ããã
ããã§ã°ã©ããæãæ¹æ³ãæžããŠãããŸããã¬ããŒããäœæããéãªã©ã«å€§å€äŸ¿å©ãªæ©èœã§ãããå®èŠãè²éçãªã©ãè¶ ããææ¿å ·ãšããŠããã°ã©ã ãå©çšããããšã«ãªããŸãããã ããã®è³æã®ä»ã®é²åºŠããã¯çžå¯Ÿçã«é£ããæŠå¿µãåºãŠããéšåããããŸãã
%matplotlib inline
# ã°ã©ããnotebookã«è¡šç€ºããæå®
import numpy as np # æ°å€èšç®ã©ã€ãã©ãªnumpyãèªã¿èŸŒã¿ãnpãšããŠåç
§ãã
import matplotlib.pyplot as plt # ã°ã©ããæãããã®ã©ã€ãã©ãªmatplotlib.pyplotãèªã¿èŸŒã¿ãpltãšããŠåç
§ãã
r = range(0,15)
plt.scatter(r,list(map(fib,r))) # rangeã®åå€ã«fibãé©çšãããªã¹ã(åŸè¿°)ãäœããããã«ããç¹ããããããã
0,15ãä»ã®å€ã«å€ããã°ç¯å²ãå€ãããfibãä»ã®åœæ°ã«å€ããã°è¡šç€ºããåœæ°ãå€ãããŸããåœæ°å®çŸ©ãä»ã§è¡ãªã£ãŠãããå®è¡ã(èªã¿èŸŒãŸã)ãŠãã倿Žããäžã®ããã°ã©ã ãå®è¡ããã°ã°ã©ããæžãæãããŸãã
ããã§map(fib,r)
ã¯ç¯å²r
ã®åå€ã«å¯Ÿãåœæ°fib
ãé©çšããçµæã®åãäœããŸããlist
ã§ãããscatter
ã®åŒæ°ãšããŠèš±ããã圢ã«å€æããŠããŸããscatter
ã¯2ã€ã®åãåŒæ°ãšãããããã座æšãšããŠç¹ãå¹³é¢ã«ããããããŸãã
次ã®äŸã¯ããå°ãå®çšã«è¿ãäŸã§ãããã©ã®ããã«æå®ããã°è¡šç€ºãã©ããªãã®ãããããšæããŸãã
r = range(0,15)
plt.scatter(r,list(map(fib,range(1,16))),color="red",label="fibonatti(x+1)") # colorã§è²ã®èšå®ããã®ããã«è€æ°ã®ã°ã©ããåæã§ããã
plt.plot(r,list(map(fact,r)),label="factorial(x)") # ãã¡ãã¯éä¹ã®å¯Ÿæ°ã®æãç·ã°ã©ããå€ã®å·®ã倧ããã®ã§åå€ã®å¯Ÿæ°ãèšç®ããŠããã
plt.legend() # å¡äŸè¡šç€ºãã¢ã«ãã¡ããããšåæ§ã«æžãã ãã§ã¯æ¥æ¬èªã¯ããŸã衚瀺ãããªãã£ããããã
plt.xlabel("x") # x軞ã©ãã«
plt.ylabel("value") # y軞ã©ãã«
plt.title("fibonatti and factorial") # ã¿ã€ãã«
plt.yscale("log") # y軞ã¯logã¹ã±ãŒã«
ã°ã©ãã§ã¯ãªã衚圢åŒã§è¡šç€ºããŠã¿ãŸãã
import pandas as pd # ãã®ã»ã«ã¯åœæ°å®çŸ©ã®ã»ã«éã®åŸã«å®è¡ãã
r = range(0,15)
pd.DataFrame([list(map(fib,r)), list(map(fact,r))],columns=r,index=("fib","fact"))
Jupyterã«éãããããçš®ã®ããŒã¯ãŒããè£å®ããæ©èœãã€ããŠããå ŽåããããŸããJupyterã®å Žåã«ã¯[TAB]
ããŒã«ããè£å®ãè¡ããŸãã
ããã¯Python以å€ã®kernelã®å Žåã«ã倧æµäœ¿ããæ©èœã§ãã
Codeã»ã«ã§ããŒã¯ãŒããéäžãŸã§æã¡èŸŒãã§[TAB]
ããŒãæŒããšãããå
é ãšããããŒã¯ãŒãåè£ã®éžæã¡ãã¥ãŒã衚瀺ãããéžæã§ããç¶æ
ã«ãªããŸãã
# 次ã®è¡ã«äŸãã°ãrããå
¥åãã`[TAB]`ããŒãæŒããšrã§å§ãŸãããŒã¯ãŒãéã®éžæã¡ãã¥ãŒã衚瀺ãããã
r
åè£ã倿°ããå Žåã«ã¯ã¹ã¯ããŒã«ããŠéžæããŸãã
éã«ãããåè£ãäžã€ããªãå Žåã«ã¯äœã衚瀺ãããŸããã
äžã€ãããªãå Žåã«ã¯ãã®åè£ã®æ®ãã®æååãèªåå
¥åãããŸãã
ãã®æ©èœãæããŠè£å®(completion)ãšåŒã³ãŸãã
é·ãããŒã¯ãŒããå
¥åããå Žåã«äžæçã«ãªããŸã§ããŒå
¥ååŸã
[TAB]
ã«ããè£å®ãããšããŒã¹ãããŒã¯æ°ãæžãã
誀ããæžãããŸãã
Python kernelã®å Žåãåœæ°åã倿°åã®ååŸã©ã¡ããã«ã?ããå
¥åããŠ[SHIFT]+â©ïž
ãæŒããšã
ããã«ã€ããŠã®èª¬æãäžéšã«è¡šç€ºãããŸãã
ããã¯Pythonã®å Žåã«äœ¿ããæ©èœã§ãã
# 倿°å
容ãåœæ°ã®èª¬æã®äŸ
?print
ãŠã€ã³ããŠäžéšã«è¡šç€ºããã説æ:
èªåã§å®çŸ©ããåœæ°ã®å Žåã«ã¯ãœãŒã¹ãåç §ã§ããããã ?ã®äœçœ®ã«ä»£ããã«??ãä»ãããšåœæ°ã®ãœãŒã¹ã衚瀺ããŸãã
# äŸ:
??fact
ãããŸã§ã«åŠç¿ããäºæã䜿ã£ãŠãåŒæ°ãšããŠäžãã2ã€ã®æŽæ°ãå«ããŠãããã®éã®ãã¹ãŠã®æŽæ°ã®åãæ±ããåœæ°sum
ãPythonã§èšè¿°ããŠãã¬ãŒã³ããã¹ãã®ãã¡ã€ã«ã«ã³ããŒ&ããŒã¹ãããŠæåºããããã ãæ°å€æŒç®ã¯åãšå·®ã®ã¿ãã䜿ã£ãŠã¯ãªããªãã課é¡ã®æåºå
ã¯åŸæ¥ãšåãããkadai07.pyããšãããã¡ã€ã«åã«ãããã¡ã€ã«ã®åé ã«ã³ã¡ã³ããšããŠkadai07ãå
¥ããããšã
# kadai07 課é¡ã®ååãå
¥ãã
#
def sum(x,y):
return x+y # æ£ããããã°ã©ã ã«æžãæããããš
print(" ", sum(-2,1), sum(1,-3), sum(10,13), sum(-100,0))
# -2 -5 46 -5050
ãããŸã§ã«ããã£ããããæ°åãéä¹èšç®ã®ããã°ã©ã ãäŸé¡ãšããŠç€ºããŠè§£èª¬ããŸããããããã¯å ã ååž°çã«å®çŸ©ãããŠããŸããããã°ã©ãã³ã°èšèªã«ãã£ãŠã¯ååž°çã«å®çŸ©ãããæ°åçãååž°çãªããã°ã©ã ã§è¡šçŸã§ããæ©èœãåããŠããŸããPythonã«ããã®æ©èœã¯ãããäŸãã°æ¬¡ã®ããã«ããŠãã£ããããæ°åãéä¹èšç®ãè¡ãããã°ã©ã ãèšè¿°ããããšãã§ããŸãã
def fib_r(x):
if x == 0:
return 0
elif x == 1: # elifã¯else ifã®ããšã§ãifæã®æåã®æ¡ä»¶ãæºãããªãæã«æ¡ä»¶ããã§ãã¯ããã
return 1
else:
return fib_r(x - 1) + fib_r(x - 2) # ååž°åŒã³åºãã
fib_r(0), fib_r(1), fib_r(2), fib_r(3), fib_r(4), fib_r(5)
def fact_r(x):
if x == 0:
return 1
else:
return x*fact_r(x - 1) # ååž°åŒã³åºãã
fact_r(0), fact_r(1), fact_r(2), fact_r(3), fact_r(4), fact_r(5)
ãã®ããã«ãfib_r
ãfact_r
èªèº«ã®å®çŸ©ã®äžã§ãŸãããããåŒã³åºãããšãäžè¬ã«ååž°åŒã³åºã(retursive call)ãšåŒã³ãŸãããããããã°ã©ãã³ã°ã«ãããéèŠãªæŠå¿µã®äžã€ã§ããåã«äŸé¡ãšããååž°åŒã³åºãã«ãããªãããã°ã©ã ãšæ¯èŒããŠã¿ãŠãã ããããã ãfib
ã«ã€ããŠã¯ãååž°åŒã³åºãã®fib_r
ã®æ¹ã¯éåžžã«å¹çã®æªããã®ãšãªã£ãŠããŸã(ãªãã§ãããã)ããåãååž°åŒã³åºãã§ãå¹çã®è¯ãããã°ã©ã ãæžãããšãå¯èœã§ããããšãç³ãæ·»ããŠãããŸãã
Pythonã®ãããªæç¶ãåã®èšèª(ããã§ã¯å€æ°ãžã®ä»£å ¥æããããèšç®ç¶æ ãå€åãããæäœã®åãå³ã¡æç¶ããšããŠããã°ã©ã ãèšè¿°ããçš®é¡ã®ããã°ã©ãã³ã°èšèªãæç¶ãåãšããŠããŸãããã¡ããPythonã§åœæ°çã«ããã°ã©ã ãæžããŠããããšãå¯èœã§ããã)ã®å Žåã«ã¯ãååž°åŒã³åºãã®ããã°ã©ã ãæžãéã«ãäžè¬ã«ã¯ãååž°åŒã³åºããè¡ãããšããæäœãè¡ãããšãšããã®æã®ç¶æ ãæèããå Žåãå€ããããããŸãããããããããŸã§ã«åºãŠãããããªãã£ããããåœæ°ãéä¹ã®ãããªããã€èšç®ããŠãå€ã¯åãã ããèšç®ã®ç¶æ ã®å€åãåŒãèµ·ãããªãå Žå(ã€ãŸãå€ãè¿ã以å€ã®ç¶æ ã®å€åã§ããå¯äœçš(side effect)ããªãå Žå)ãå³ã¡åœæ°å®çŸ©ãšããŠããã°ã©ã ãäžããŠããå Žåã«ã¯ãååž°çããã°ã©ã ãæžãæã«å®£èšçã«èããããšãå¯èœã§ãããŸããã®ããã«èããæ¹ãããã°ã©ãã³ã°ãåŠã³ããŠã®å Žåã«ã¯çè§£ãããã人ãããŸããããã§ã«æç¶ãçãªèãæ¹ã«æ £ããŠãã人ã«ãšã£ãŠã¯ããæå³æ°é®®ãªå¥ã®èãæ¹ã§ãããšæããŸããååž°åŒã³åºããè¡ãåœæ°ãå®çŸ©ãããšãã®èãæ¹ã以äžã«èšè¿°ããŸãã
1.ã¯fib_r
ã«ã€ããŠã¯fib_r(0),fib_r(1)
ã®å Žåãfact_r
ã«ã€ããŠã¯fact_r(0)
ã®å Žåã該åœããŸãã2.ã¯fib_r(x - 1)
ãfib_r(x - 2)
ãfact_r(x - 1)
ãæ£ããå€ãè¿ããšããŠããã°ã©ã ãæžããŠããŸãã3.ã¯ãããã®å Žåãå€ãå°ãªããã£ããããæ°ãéä¹ã®å€ãèšç®ããæ¹ããå
ã®ãã£ããããæ°ãéä¹ã®å€ãèšç®ãããããç°¡åã ãšèããããŸãã4.ã«ã€ããŠã2ã€ã®åœæ°ã¯è² ã®æ°ã«å¯ŸããŠã¯èšç®ãæ¢ãŸããŸããã4ããããããæ£ç¢ºã«ã¯å®çŸ©ããŠããã®ã¯åœæ°ã§ã¯ãªãéšååœæ°(partial function)ã§ãããšããããšã«ãªããŸãã
èãæ¹ã®å 3ãäžçªææ§ã§ãã©ã®ãããªæå³ã§ç°¡åãªåŒæ°ã§ååž°åŒã³åºãããããã¯å Žåã«ãã£ãŠç°ãªããŸããäœã倧æµã®å Žåã¯çŽèгçã«ãããç¯å²ã®å Žåãæ®ã©ã§ããããããå Žåã«é©çšã§ãããããªããã®éšåã®å³å¯ãªå®åŒåã¯ããæå³äžå¯èœã§ããããšãããã£ãŠããŸãã
äœã以äžã®èãæ¹ã¯ããããŸã§å¯äœçšã®ãªãå Žåã§ãããæ¬¡ã«åºãŠããã¿ãŒãã«ã°ã©ãã£ã¯ã¹ã®ååž°çãªæç»ã®æç¶ãã®å Žåãåºæ¬çã«ã¯ãã¯ãæç¶ãçãªèãæ¹ãããããšã«ãªããŸãã æç¶ãçã«èããå Žåãä»®åŒæ°ãªã©ã®å±æå€æ°ã¯åŒã³åºãããšã«å¥ç©ãšãªããŸãã
ç»é¢ã«å³åœ¢ã衚瀺ããæŒç¿ãè¡ããšèå³ãåŒããã人ãå€ãããã§ãããšããçç±ã§ãããã§ã¯ã¿ãŒãã«ã°ã©ãã£ã¯ã¹ã«ããæŒç¿ãè¡ããŸããã¿ãŒãã«ã°ã©ãã£ã¯ã¹ãšã¯ãã¿ãŒãã«(äº)ã®åãã«ããããŸããŸãªå³åœ¢ãæããšããã°ã©ãã£ã¯ã¹ã®äžæ¹åŒã§ãããããããã©ã¯ã¿ã«å³åœ¢çã®æç»ãç°¡åã«è¡ãããšãã§ããŸããã¿ãŒãã«ã°ã©ãã£ã¯ã¹ã¯ãããèªèº«ãæ±ãã®ã容æã§ããããã¿ãŒãã«ã°ã©ãã£ã¯ã¹ã®åºæ¬ããã°ã©ã ãèšè¿°ããã®ãç°¡åãªãããå ¥éçãªã³ãŒã¹ã説æã§ãã䜿ããããã®ã®äžã€ã§ãã
ã¿ãŒãã«ã°ã©ãã£ã¯ã¹ã«ã¯Pythonã®ã·ã¹ãã ã«æåããä»ããŠãããã®ãçšããããšã«ããŸããå°ããããã°ã©ã ãæžãã°ç°¡åã«äœ¿ããŸãã
ã¿ãŒãã«ãPythonã®ãããªãªããžã§ã¯ãæåèšèªã§å®çŸããå Žåãã¿ãŒãã«ããªããžã§ã¯ããšãããã«ãã¿ãŒãã«ã°ã©ãã£ã¯ã¹ãšããã®ãèªç¶ã§ããåŸã§è§£èª¬ããã©ã€ãã©ãªã§ã¯ãã®ããã«èšè¿°ããŠããŸãã
ã¿ãŒãã«ã°ã©ãã£ã¯ã¹ã«ãã£ãŠãããããã©ã¯ã¿ã«æ²ç·ãç°¡åã«æãããšãå¯èœã«ãªããŸãããªããã°ã©ãã£ã¯ã¹ã®ããã°ã©ã ã¯ç°å¢ã«ãã£ãŠæåãå€åããå ŽåããããŸãããã€ã§ãåã«å®è¡ããã°ãŠã£ã³ããŠããããã¢ããããŠè¡šç€ºãããç°å¢ãããã°ãXãŠã£ã³ããŠã·ã¹ãã ããããããèµ·åããŠããå¿ èŠãããå ŽåãJupyter NotebookãXã®ä»®æ³ç«¯æ«ããèµ·åããŠããå¿ èŠãããå Žåãªã©ããããŸãã
from turtle import *
def koch(x,y): # returnããªãã®ã¯åœæ°ã§ã¯ãªãæç¶ãã ãããã€ãŸãè¿ãå€ããªããå¯äœçš(ãã®å Žåã¯æç»)ã®ã¿ãçµæãšãªãã
if x <= y:
forward(x) # çŸåšã®ã¿ãŒãã«ã®åãã«xé²ãããã³ãäžããŠããã°æç»ãããã
else:
x /= 3
koch(x,y) # ååž°åŒã³åºã
left(60) # å·Šã«90床åããå€ãã
koch(x,y)
right(120) # å³ã«120床åããå€ãã
koch(x,y)
left(60)
koch(x,y)
goto(-300,0)
seth(0)
clear()
color('black')
speed(0) # 0 is fastest and 1 is slowest.
koch(600,3)
ã¿ãŒãã«ã°ã©ãã£ã¯ã¹ã®ç»åã¯å¥ãŠã£ã³ããŠã§åºãŸãã
from turtle import *
def hilbert(x,y,theta):
if x >= y:
x /= 2
right(theta)
hilbert(x,y,-theta)
forward(y)
left(theta)
hilbert(x,y,theta)
forward(y)
hilbert(x,y,theta)
left(theta)
forward(y)
hilbert(x,y,-theta)
right(theta)
goto(-250,-250)
seth(-90)
right(180)
clear()
color('black')
speed(0)
hilbert(256,8,90)
from turtle import *
def sierpinski(x,y,theta):
if x < y:
forward(x)
else:
x /= 2
left(theta)
sierpinski(x,y,-theta)
right(theta)
sierpinski(x,y,theta)
right(theta)
sierpinski(x,y,-theta)
left(theta)
goto(-300,-300)
seth(0)
clear()
color('black')
speed(0)
sierpinski(640,5,60)
ãã®éšåã¯å°ã æ®éã§ã¯ãªã説æãããŠããŸãã®ã§æåã¯é£ã°ããŠãã ããã課é¡ãè§£ãã®ã«ãå¿ èŠãªããšèããããŸãã
äžã®ããã°ã©ã ã§ã¯ååž°åŒã³åºããè¡ãªã£ãŠããŸãããåœæ°ã«ã¯è¿ãå€ããããŸãããå³ã¡å¯äœçšã®ã¿ã®ããã°ã©ã ã§ãããã®è³æã§ã¯ãã®ãããªåœæ°ãæç¶ã(procedure)ãšåŒã¶ããšã«ããŸãããã®å Žåã®å¯äœçšã¯ãŠã£ã³ããŠã«ã¿ãŒãã«ã®è·¡ãæãã€ã€ã¿ãŒãã«ã®äœçœ®ãåããè²ã倿Žããããšã§ãããã®ããã«å¯äœçšã®ã¿ã®å Žåã«ã¯ååž°åŒã³åºããè¡ãããã°ã©ã ã®å 容ã®çè§£ããããæžãå Žåã«ã©ã®ããã«èããã°ããã®ã§ãããããããã«ã¯2ã€ã®æ¹æ³ããããŸãã
ããã§ã¯2çªç®ã®çè§£ã®ä»æ¹ã説æããŠã¿ãŸãã æç¶ã(åœæ°)ãåŒã³åºãããforwardãleftãªã©ã®æäœãã¿ãŒãã«ã«è¡ãã®ããæäœã®åãšããŠæ±ããåœæ°ã ãšæããŸãããããã®æäœã¯é åºã«æå³ããããŸãããçµååŸãæºãããŸããå³ã¡$a_i$ãåå¥ã®æäœãšãããšã$(a_1,a_2),a_3$ãšããæäœãš$a_1,(a_2,a_3)$ãšããæäœã¯æäœãšããŠåãããšã§ãããŸãäœãããªãããšããæäœãèãããããããããçš®ã®åäœå ã«ãªã£ãŠããŸããããããŠã¿ãŒãã«ãžã®æäœã®åãçæãã宣èšçãªããã°ã©ã ã§ãããšèããããšãã§ããŸãããããã ãã§ããšæœè±¡çãªèª¬æã§ãã£ãŠå ·äœæ§ãäžååãªã®ã§æäœã®åãçæãããããªå®£èšçãªããã°ã©ã ã«æžãæããŠã¿ãŸããäœã$\lambda$åŒãåŸã§èª¬æãããããªæŠå¿µã®ãªã¹ããå èµ°ã£ãŠäœ¿ã£ãŠããã®ã§ããã®éšåã¯é£ã°ããŠããã ããŠãæ§ããŸããããŸããã®ãããªæžãæããè¡ãªããšå®éã«æç»ãè¡ãããæå»ãå€ãã£ãŠããã®ã§ããã®æå³ã§ã¯å ã®ããã°ã©ã ãšç䟡ã§ã¯ãªããªããŸãã
次ã®ããã°ã©ã ã§ã¯ååž°çã«å®çŸ©ãããsierpinski
ãšããåœæ°ã®ä»£ããã«sierpinski_m
ãšããå¯äœçšã®ãªãåœæ°ãå®çŸ©ããŠããŸãããã®åœæ°ã¯ã¿ãŒãã«ãžã®æäœã®å(ãªã¹ã)ãå€ãšããŠè¿ããŸããäœãåŸã§å®è¡ã§ãã圢åŒãšããããã«æªèª¬æã®èšèªèŠçŽ ã§ãã$\lambda$åŒã䜿ã£ãŠããŸãã倿°ãžã®ä»£å
¥ãè¡ãããŠããŸãããããã¯äžåã ãã®ä»£å
¥ã§ãããmutableãªå€æ°ãšããŠæ±ã£ãŠã¯ããŸãããååž°åŒã³åºãã®éã«åã倿°åã®å€æ°ã«äœåºŠã代å
¥ãè¡ãããŸãããããããããããè«ççã«å¥ã®å€æ°ã§ããã宣èšçãªããã°ã©ã ã§ããããšã«å€ããã¯ãããŸãããäžã®ããã°ã©ã ãšèŠæ¯ã¹ãŠã¿ãŠãã ããã
äœãããã°ã©ã ã®æåŸã®éšåã§ã¯ããªã¹ãäžã®æäœãå šãŠè¡ãªã£ãŠå®éã®æç»ãè¡ãªã£ãŠããŸãããã®éšåã ããæç¶ãçãªããã°ã©ã ãšãªã£ãŠããŸãã
from turtle import *
def sierpinski_m(x,y,theta,a0):
if x < y:
return a0 + [lambda:forward(x)]
else:
x /= 2
a1 = a0 + [lambda:left(theta)]
a2 = sierpinski_m(x,y,-theta, a1)
a3 = a2 + [lambda:right(theta)]
a4 = sierpinski_m(x,y,theta,a3)
a5 = a4 + [lambda:right(theta)]
a6 = sierpinski_m(x,y,-theta,a5)
return a6 + [lambda:left(theta)]
a1 = [lambda:goto(-300,-300)]
a2 = a1 + [lambda:seth(0)]
a3 = a2 + [lambda:clear()]
a4 = a3 + [lambda:color('black')]
a5 = a4 + [lambda:speed(0)]
a6 = sierpinski_m(640,5,60,a5)
for i in a6:
i()
ããã§æ¹ããŠãªããžã§ã¯ãæåããã°ã©ãã³ã°ã«ã€ããŠèª¬æããŠãããŸãããªããžã§ã¯ããšããæŠå¿µã¯ã§ããã ãäœã«ã§ãåœãŠã¯ãããããããªãã®ã§ãã®ã§ãå¿ ç¶çã«æœè±¡çãªæŠå¿µã§ããã説æãæœè±¡çãªãã®ãšãªããŸãããããã£ãŠãã®ç¯ã®å 容ã宿ã䌎ã£ãŠçè§£ã§ããªãå Žåããã£ãšèªé£ã°ãã ãã§ååã§ãããããšã§ããã°ã©ã ã®å ·äœäŸãçè§£ããŠããåèªããããšãããšæããŸãã
ãªããžã§ã¯ããšã¯èªåèªèº«ã®å±æçãªããŒã¿ãåããèšç®ãè¡ããã®ã§ãããŸããä»ã®ãªããžã§ã¯ããšããŒã¿ãããåãããŸããããåãããããŒã¿ã®ããšãã¡ãã»ãŒãžãšåŒã³ãŸãã
ã¡ãã»ãŒãžã®è§£éã¯åãªããžã§ã¯ããèªåèªèº«ã§è¡ããŸããåãªããžã§ã¯ãã®å±æçãªããŒã¿ã¯ç¹ã«æå®ããªãéãä»ã®ãªããžã§ã¯ãããèŠããæžãæãããããããšãã§ããŸããã屿çãªããŒã¿ãèŠããæžãæãããã§ããå Žåããããšãã£ãŠããããããã¡ãã»ãŒãžã«ããè¡ããŸããåºæ¬çã«ã¯èŠããããããã¯æžãæããããã®ã¡ãã»ãŒãžãžã®åå¿ã®ä»æ¹ãèšè¿°ããããã°ã©ã ã¯ãã¡ãã»ãŒãžãéãåŽã§ã¯ãªããã¡ãã»ãŒãžãåãããªããžã§ã¯ãåŽãæã£ãŠããŸããåŸã£ãŠå€åŽããèŠãŠãããªããžã§ã¯ãã®å±æçãªããŒã¿ãæäœããŠããããã«èŠãããšããŠããå€åŽããã¯ãããããèŠããŠããã ãã§ãã£ãŠå®éã«ãããªã®ãã©ããã¯åœè©²ãªããžã§ã¯ãèªèº«ã«ããããããŸããã
ãã®ããã«ãããŒã¿ãšãããžã®æäœæ¹æ³ããŸãšããŠå®çŸ©ããããããå€ããçŽæ¥èŠãããªãããããšãããŒã¿é èœãšãã«ãã»ã«åãšåŒã³ãŸãããã®ããã«ãããšããŒã¿ãšãããžã®æäœã®ããã°ã©ã ããŸãšããŠåãæ¿ããããšãå¯èœã«ãªãããœãããŠã§ã¢ã®éšååã容æã«ãªãããããã°ã©ãã¯éšåã®äœèšãªå éšæ§é ãŸã§èããªããŠãã¿ãŸãããã®æŠå¿µã¯ããã°ã©ãã³ã°èšèªã®çºå±ã«ãããéèŠãªæŠå¿µã®äžã€ã§ãã
åçš®ã®ãªããžã§ã¯ãããŸãšãããã®ãã¯ã©ã¹ãšåŒã¶å ŽåããããŸããããªãã¡ãã¯ã©ã¹ãåããªããžã§ã¯ãã¯ãä¿æããŠãã屿çããŒã¿ã®çš®é¡ãšåæ°ãåãã§ãã¡ãã»ãŒãžãžã®åå¿ã®ä»æ¹ãèšè¿°ããããã°ã©ã ãåãã§ããã¡ãã»ãŒãžã«ã¯ã¡ãœãããšåŒã°ããåŠçããã°ã©ã ã衚ãäžçš®ã®ã¿ã°(è·æ)ãã€ããŠãããã¡ãœããããšã«åŠçããã°ã©ã ãèšè¿°ããŸããPythonãå«ããŠã¯ã©ã¹æŠå¿µãããããã°ã©ãã³ã°èšèªã§ã¯ã屿倿°ãã¡ãã»ãŒãžãžã®åå¿ã®ä»æ¹ãèšè¿°ããããã°ã©ã ãäžããŠã¯ã©ã¹ãå®çŸ©ããŸãã
ã¯ã©ã¹ãæ°ãã«å®çŸ©ããå Žåãæ¢åã¯ã©ã¹ã®èšè¿°ãå©çšããããšãå¯èœã§ãããã®æ©èœãã€ã³ããªã¿ã³ã¹(ç¶æ¿)ãšåŒã³ãŸãã
䜿çšããŠããã¿ãŒãã«ã°ã©ãã£ã¯ã¹ã®ã©ã€ãã©ãªã§ã¯ã¿ãŒãã«ãè€æ°åæã«äœ¿ãããšãå¯èœã§ããã¿ãŒãã«ã¯ãããããªããžã§ã¯ããšããŠå®çŸãããŠããŸãã以äžã®äŸã§ã¯2ã€ã®ã¿ãŒãã«ã䜿ã£ãŠè²ãç°ãªã2ã€ã®å³åœ¢ãåæã«æããŸããã¿ãŒãã«ãäžã€ãããªããã°ããäžã€çæããã¿ãŒãã«ã衚ã2ã€ã®ãªããžã§ã¯ããleftãrightãšãã倿°ã«ä»£å
¥ããŠæäœãè¡ããŸããäŸãã°left.forward(i)
ãšããã°leftã«å
¥ã£ãŠãããªããžã§ã¯ãã«forward(i)
(äœãi
ã¯ãã®æç¹ã§ã®i
ã®å€ã«çœ®ãæãããã)ãšããã¡ãã»ãŒãžãéãããŸããleftã¯ããããå±ããTurtleãšããã¯ã©ã¹ã®forward
ã¡ãœããã®å®çŸ©ã«åŸã£ãŠè§£éããŸãããã®å Žåãã®ã¡ãœããã®å®çŸ©ã¯ã¿ãŒãã«ã°ã©ãã£ã¯ã¹ã®ã©ã€ãã©ãªã®äžã§äžããããŠããã®ã§ãŠãŒã¶ãèšè¿°ããå¿
èŠã¯ãããŸããã
from turtle import *
if len(turtles()) == 1: # ã¿ãŒãã«ã1ã€ã®å Žå
right = Turtle() # ããã²ãšã€ã¿ãŒãã«ãçæãã
left = getturtle() # 1ã€ç®ã®ã¿ãŒãã«
right = turtles()[1] # 2ã€ç®ã®ã¿ãŒãã«(çŸåšååšããã¿ãŒãã«ã®2ã€ç®([0]ãšãããš1ã€ç®)ãrightã«ä»£å
¥)
left.speed(0) # 1ã€ç®ã®ã¿ãŒãã«ã®speedã0(æé)ã«èšå®
right.speed(0)
left.penup()
right.penup()
left.goto(-200,0)
right.goto(200,0)
left.pendown()
right.pendown()
left.clear()
right.clear()
left.color('red')
right.color('blue')
for i in range(0,500):
left.forward(i)
left.right(121)
right.forward(i)
right.right(119)
ã¯ãªã¢ãã¿ãŒãã«ããšã«è¡ããããããè€æ°ã«ãŒãœã«ãååšããŠããŠä»¥åã®åäžã¿ãŒãã«ã®ããã°ã©ã ãåã³åããå Žåã«ã¯ä»¥äžã®ããã°ã©ã ã§ç»é¢ã¯ãªã¢ããå¿ èŠããããŸããäœãã¿ãŒãã«ã®æ°ã¯æžããŸãããã¿ãŒãã«ã®æ°ãå ã®1ã«æ»ãã«ã¯ãjupyterã®Kernelã¡ãã¥ãŒããRestartãéžã¶ã®ãäžã€ã®æ¹æ³ã§ããããã¯PythonåŠçç³»ããªã»ãããããã®ã§ãã
for t in turtles(): # çŸåšååšããå
šãŠã®ã¿ãŒãã«ã«ã€ããŠã¯ãªã¢ãè¡ã
t.clear()
以äžã¯æ·±ãåªå ã§æšãæãããã°ã©ã ã§ãã
from turtle import *
def dtree(depth, theta, length):
forward(length) # çŸåšã®æ¹åã«é²ãã
if depth > 1: # èã§ã¯ãªãå Žå
left(theta) # å·Šã«å転
dtree(depth - 1, theta, length/1.2) # é·ããäžå®ã®æ¯çã§çž®ãã
right(2*theta) # å³ã«å転
dtree(depth - 1, theta, length/1.2)
left(theta)
backward(length) # éæ¹åã«æ»ã
goto(0,-250)
clear()
seth(90)
dtree(8,15,120)
以äžã¯æšã®åå²ããšã«ã¿ãŒãã«ãã³ããŒããŠå¢ããã䞊åã«æšãæãããã°ã©ã ã§ããã¿ãŒãã«ã倿°çæããããããå®è¡åŸã«kernel restartããæ¹ãããã§ãããã
from turtle import *
def brtree(ts, depth, theta, length):
ts2 = ts[:] # çŸåšã®ã¿ãŒãã«ã®ãªã¹ããã³ããŒ
for t1 in ts:
t1.forward(length) # çŸåšã®æ¹åã«é²ãã
if depth > 1: # èã§ã¯ãªãå Žå
t2 = t1.clone() # ã¿ãŒãã«ãã³ããŒããåããè²ã¯åã
t1.left(theta) # å·Šã«å転
t2.right(theta) # å³ã«å転
ts2.append(t2) # ã³ããŒããã¿ãŒãã«ããªã¹ãã®æ«å°Ÿã«å ãã
if depth > 1: # èã§ã¯ãªãå Žå
brtree(ts2, depth - 1, theta, length/1.2) # é·ããäžå®ã®æ¯çã§çž®ãã
goto(0,-250)
for t in turtles():
t.clear()
seth(90)
brtree([getturtle()],8,15,120)
ã¿ãŒãã«ã°ã©ãã£ã¯ã¹ã®ã©ã€ãã©ãªãåé ã§import
ããŠå³åœ¢ãæãããã°ã©ã ãäœæãããã¬ãŒã³ããã¹ãã®ãã¡ã€ã«ã«ã³ããŒ&ããŒã¹ãããŠkadai08.pyãšããŠæåºãããå³åœ¢ã¯èªåãéžãã ããããã¯åµäœãããã®ãšããŠããããã ãæç»ã®ããã°ã©ã ã¯èªåã§èšè¿°ããããšããŸããkernel restartåŸã«æåºããã°ã©ã éšåã®ã¿ãå®è¡ã衚瀺ã確èªããããšã衚瀺ãããŠã£ã³ããŠããã£ããã£ããŠç»åãã¡ã€ã«ãšãããã®ãkadai08.pngãªã©ãšããŠæåºããããšãWindowsã®å Žåã察象ãŠã£ã³ããŠãã¯ãªãã¯ããŠéžæãã[Alt]+[Print screen]ããŒãæŒããããããããç»åæç»ããã°ã©ã (MSãã€ã³ãç)ãèµ·åããŠããŒã¹ãããŠä¿åããã°ç»åãã¡ã€ã«ãäœæã§ãããæåºæã«ãã¹ãããšãæåºæ¹æ³ã¯ååãšåãã§ããã
ãããŸã§ã«åŠç¿ããããã°ã©ãã³ã°ã®ææ³ä»¥å€ã®ææ³ãçšããŠããããã¿ãŒãã«ã°ã©ãã£ã¯ã¹ãPythonãã¥ãŒããªã¢ã«ãæšæºã©ã€ãã©ãªã®ãªã³ã¯ãèŠããããµãŒããšã³ãžã³ã§PythonèšèªèŠçŽ ãªã©ã調ã¹ãã°å€æ°ã®è§£èª¬ãµã€ããèŠã€ããã®ã§ãããããåç §ããã°ããŸããŸãªããã°ã©ãã³ã°ã®ææ³ãPythonã®æ©èœãç¥ãããšãå¯èœã§ããã
# kadai08 課é¡åãå
¥ãã
#
from turtle import *
# def æç»æç¶ã
home()
clear()
seth(90)
# æç»æç¶ãåŒã³åºã
æ§ã ãªããã°ã©ãã³ã°èšèªã«åºãŠããåºæ¬çãªæŠå¿µã®äžã€ã§ãããªã¹ãã«ã€ããŠèª¬æããŸããPythonã®å Žåã«ã¯ãªã¹ããé åãšåãããã«æ±ããŸãã
ãªã¹ããšã¯ãäœããå ¥ãç®±ãç¹ãã£ããã®ã§ãç¹ãããéäžã§åã£ããç¹ãã ãã§ãããã®ã§ããç¹ãã£ãŠããç®±ã®æ°ããªã¹ãã®é·ããšèšããŸããé åãšã¯ãäœããå ¥ãç®±ãããã€ã䞊ã³ãç®±ã®äœçœ®ãæ°åã§æå®ããŠäžã®ããŒã¿ãèªã¿æžãã§ãããã®ã§ããç®±ã®äœçœ®ãæå®ããæ°åã®ããšãæ·»å(index)ãšèšãã䞊ãã ç®±ã®æ°ã®ããšãé åã®å€§ãããšèšããŸããé åãšãªã¹ãã¯äŒŒãŠããŸãããç°ãªãããŒã¿åã§ããPythonã®å Žåã«ã¯ãªã¹ãã«ãæ·»ãåã䜿ããŸãããŸãããªã¹ããç®±ã®äžã«å ¥ãç©ã¯åãçš®é¡ã®ããŒã¿ããèš±ããŠããªãèšèªããããŸãããPythonã®ããã«ç®±ããšã«ç°ãªãçš®é¡ã®ããŒã¿ãå ¥ããããèšèªããããŸããäŸãã°ãªã¹ãã®äžã«ãªã¹ããå ¥ããããšãå¯èœã§ãã
Pythonã§ã¯ããªã¹ãããªããžã§ã¯ãã®äžã€ã§ãããªã¹ãããããŒã¿ãèªã¿åºãããæžã蟌ãã ãããã®ãã¡ãã»ãŒãžã«ãããŸãã
a = [1,3,5,7,9] # æåã®èŠçŽ ã1ã2çªç®ã®èŠçŽ ã3...ãšãã倧ãã5ã®ãªã¹ã
a
len(a), type(a) # ãªã¹ãã®å€§ãããšã¯ã©ã¹
[1,3,5,7,9]
ãšããã®ã¯æåã®èŠçŽ ã1ã2çªç®ä»¥äžã®èŠçŽ ã3,5...ãšãã倧ãã5ã®é
åã§ãäžã®æã«ããa
ãšãã倿°ã«ãªã¹ããå
¥ããŸããprint
ã«ãããã®ãŸãŸã®åœ¢ã§è¡šç€ºãããŸãã
æ·»åã0ããå§ãŸãã1ããå§ãŸããã®éããé€ããä»ã®ããã°ã©ãã³ã°èšèªã®å Žåãšã»ãŒåæ§ã«ä»¥äžã®ããã«ãªããŸãã
a[0],a[3]
a[0] = 10
a
a = [1, 2, 3, 4, 5]
a
a.append(6) # ãªã¹ãã®å€§ããã1å¢ãããæåŸã«ããŒã¿ãå
¥ãã
a
a.pop(0) # ãªã¹ãã®æåã®ããŒã¿ãåãé€ããå
¥ããããŒã¿ãé ã«åãåºãä»çµã¿ããã¥ãŒãšåŒã³ãŸã
a
append
ãpop(0)
ãšããã¡ãã»ãŒãžã§ãªã¹ãããã¥ãŒãšããŠäœ¿ããŸããä»ã®å Žåã«ã¯ãæå1,2,3,4,5ãšããããŒã¿ããã®é ã«ãã¥ãŒã«å
¥ã£ãŠãããšãããæåŸã«6ãšããããŒã¿ã远å ãããã®åŸãã¥ãŒããæåã®ããŒã¿ã§ãã1ãåãåºããŸããã
a.pop() # ãªã¹ãã®æåŸã®ããŒã¿ãåãé€ã
a
å
¥ããããŒã¿ãéé ã«åãåºãä»çµã¿ãã¹ã¿ãã¯ãšåŒã³ãŸãappend
ãšpop()
ãšããã¡ãã»ãŒãžã§é
åãã¹ã¿ãã¯ãšããŠäœ¿ããŸãã
a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
a + b # 2ã€ã®é
åããã£ã€ãã
a.remove(3) # èŠçŽ 3ããªã¹ãããåãé€ã
a
ããã§ã¯ãªã¹ãã䜿ã£ãäŸé¡ãšããŠããšã©ãã¹ããã¹ã®ç¯©(ãµãã)ãšåŒã°ããææ³ã«ãããããæ°ãŸã§ã®çŽ æ°ããã¹ãŠæ±ããŠã¿ãŸãã以äžããã®ããã°ã©ã ã§ããNoneã¯éåžžã®ããŒã¿ããªãããšã衚ãããŒã¿ã§ãã
n = 300
a = [None,None] + list(range(2,n)) # ç¯å²ããªã¹ãã«å€æããŠãã®åã«Noneã2ã€å
¥ãã
for i in a:
if i: # None,0以å€ã®å Žå
for j in range(2*i, n, i): # i以å€ã®iã®åæ°ãæ¶ã
a[j] = None
a = [x for x in a if x] # aã®åèŠçŽ ã«å¯ŸãããããNoneã0以å€ã®æã®ã¿çµæã®ãªã¹ãã«å
¥ãã
for i in a:
print(i, end=',')
ãã®ããã°ã©ã ã§ã¯ãæåã«2ã€ã®None
ãããããã®åŸ2以äžäžããããæ°ãŸã§ã®æ°å€ãèŠçŽ ãšããŠæã€é
åã2è¡ç®ã§äœã£ãŠããŸãããã®æç¹ã§ã¯ã0ãš1ã¯çŽ æ°ã§ãªããçŽ æ°ã ãšããã£ãŠããã®ã¯2ã ãã§ã3以éã¯çŽ æ°ã§ããå¯èœæ§ãããæ°å€ãé
åäžã«æ®ã£ãŠããç¶æ
ã§ããããæ·»åã®èŠçŽ ãNone
ã§ãªããã°ãã®æ·»åã®å€èªèº«ããã®æ·»åã®èŠçŽ ãšããŠå
¥ã£ãŠããŸãã
4-6è¡ç®ã§ãé
åã®åèŠçŽ ã«ã€ããŠããããNone
(ãŸãã¯0)ã§ãªããã°ãã®æ°ã®2åã®æ·»åäœçœ®ãããªã¹ãã®æåŸãŸã§ã®ããã®æ°ã®åæ°ã®æ·»åäœçœ®ã®èŠçŽ ãNone
ã«çœ®ãæãããšããæäœãç¹°ãè¿ãè¡ããŸããããã§ã¯ã«ãŒãã2éã«ãªã£ãŠããããšã«æ³šæããŠãã ããããŸããifæã§None
ãFalse
ãšåæ§ã«åœãšããŠæ±ãããããšã«ã泚æããŠãã ããã
äžãã3è¡ç®ã¯ãªã¹ãå
å
衚èšãšãããããã®ã§ãåææ°ã®äœçœ®ã«å
¥ã£ãŠããNone
ãæ¶ããŠããŸãã
3ã€ç®ã®èª²é¡ã¯ãªãã·ã§ã³ã§ããå³ã¡ãæåºããã人ã ããkadai09.pyãšããŠæåºããŠãã ãããæåºæ¹æ³çã¯ååãŸã§ãšåãã§ãã
å
ã®ç¯ã§ããæ°nãŸã§ã®çŽ æ°ããã¹ãŠæ±ããæ¹æ³ãèŠãŠã¿ãŸãããä»åºŠã¯ãŸããããæ°ãŸã§ã®çŽ æ°ã®è¡šãæ±ããããã䜿ã£ãŠæ°mãçŽ å æ°åè§£ããåœæ°factor
ãæžããŠãã ãããmã¯ãåœæ°ã®åŒæ°ãšããŠäžããããã«ããŠãã ããããŸããåºåã®åœ¢åŒã¯ä»¥äžã®ãããªãã®ãšããŠãã ããã
[[çŽ å æ°1, åæ°1], [çŽ å æ°2, åæ°2], ⊠,[çŽ å æ°k, åæ°k]]
çŽ å æ°iã®åæ°iä¹ãi=1,...,k
ã«ã€ããŠãã¹ãŠæãåãããçµæãmãšãªããŸãããŸããåæ°iã¯1以äžã®èªç¶æ°ã§ãããã ãããããããæ±ããçŽ æ°ã®è¡šããmã®åè§£ã«è¶³ããªãå Žåã«ã¯ããã®æšãåºåããããã«ããŠãã ããããã®å ŽåãéäžãŸã§è¡ããåè§£ã®çµæã衚瀺ããŠãã ããã
äŸãã°[2,3,5,7]ãšããçŽ æ°ã®è¡šãæ±ããŠããå Žåã53ã®çŽ å æ°åè§£ã«ã¯7*7 < 53
ãªã®ã§è¡šãè¶³ããŸããã63ã®åè§£ã§ããã°3ã§2åå²ãåããŠ7ãšãªããŸãã®ã§åè§£ã§ããŸãã3339=3*3*7*53
ã®åè§£ã¯ã3ã§2åå²ã£ãŠ7ã§å²ããš53ãšãªãã7*7<53
ãªã®ã§è¡šãè¶³ããŸãããã[[3,2],[7,1],[53,1]]
ãšãããšãããŸã§ã¯åè§£ã§ããŸãããã ããã®å Žåã«ã¯æåŸã®53ãçŽ æ°ãã©ããã¯ããããªããšããããšã«ãªããŸã(ä»ã®å Žåã«ã¯ããŸããŸçŽ æ°ã§ã)ã衚ãè¶³ããªãå Žåã«ã¯ãçŽ æ°ãã©ããããããªãéšåãæç€ºããããã«ããŠãã ãããäŸãã°ã[[3,2],[7,1],[53,1]]
(ãã ãæåŸã®å æ°ã¯çŽ æ°ãšã¯éããŸãã)ããªã©ãšåºåããã°ååã§ãã
ãããŸã§ã«åŠç¿ããããã°ã©ãã³ã°ã®ææ³ä»¥å€ã®ææ³ãçšããŠãæ§ããŸããã
# e81234 kadai09
#
# def factor(m)