o} yr~ - ie.u-ryukyu.ac.jptnal/2018/prog1/2018prog1-w7.pdf · o}_yr~_1 (#6 )hlf_ '=2 kc` o=...

29
o}_yr~_ 1 (#6) hlf_'=2Kc`o==wkfigci=ubv{ 1. Chapter 1 Turing Complete 2. Chapter 4.1.2 Keyword Arguments and Default Values 3. Chapter 4.1.3 Scoping 4. Chapter 4.2 Specifications 1. docstring + doctest (!M?VRF[) 5. Chapter 4.5 Modules 6. %UD1LE 7. 3 2018o}_yr~_1 1 ,$pb: http://ie.u-ryukyu.ac.jp/~tnal/2018/prog1/ 6;985 78:9;<MTWu bv{*S-SZ BWTAMLYA> j]vt~gax~ KwkfigciZ @G0MXT A> 2ZPEKcdf^ n|sN.="1 N/VZ(ETA> 2NMO hn\{iZ) JCW `~mvdNJ?W&evz ~_qa~MH@I+QISTA> %

Upload: vanhanh

Post on 18-Nov-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

o}_yr~_1(#6�)hlf_�'=2�Kc`�o=��=wkfigci=ubv�{

1. Chapter 1 Turing Complete

2. Chapter 4.1.2 Keyword Arguments and Default Values

3. Chapter 4.1.3 Scoping

4. Chapter 4.2 Specifications

1. docstring + doctest (�!�M?VRF[)

5. Chapter 4.5 Modules

6. �%��UD�1LE�

7. �3

2018���o}_yr~_1 1

,$p�b: http://ie.u-ryukyu.ac.jp/~tnal/2018/prog1/

6;985478:9;<MTWubv�{*S-SZ�BWTAMLYA>

j]vt~g�ax~KwkfigciZ�@G0 M�XTA>

2�Z�P�EKcdf^n|�sN.�=�"1N/V�Z�(ETA>

2�N��MOhn\{i�Z)�JCW�

`~mv�dN� J?W�&ev�z~_qa~MH@I+QISTA>

�%

39-75:-1(�7�) KISS��'DRY��%��'��"

1. KISS��%DRY��

2. Chapter 4.3 Recursion

1. �#(��'/01,28;6(��

2. �!(��� vs. ��)�&

3. ���(�

3. Chapter 4.4 Global Variables

4. *'+

5. ��

6. $

2018��<39-75:-1 2

��4;.: http://ie.u-ryukyu.ac.jp/~tnal/2017/prog1/

KISS��ZDRY��

• KISS��– Keep it simple, stupid!– �OK�dA-_�fSeB• �V]> ^�V]�#gN[RB

– �;�(> )gmknReB• "4w�(�g�6ReB

• DRY��– Don’t repeat yourself.– .d7Pg:MeB

2018��yruitsvi1 3

*�: w1> = �1+�w501LcD\[UTc�YI[DG/FX_bEB

w<9Jequlha> ^5_WcKApi\'WI\KKA�)P\KDB

*�: w�Q1or@�1H ��XITcA> ReNZg"3PbEB

w��%0g��`jxoaqulhZPX.d7PX!KZA��piHCeZ�X]>8,�g�&Re�2HCePA%0��gRe?\`�$]�=HGGeB

GM?KIN?1(�7�) KISS��3DRY��,��3��(

1. KISS��,DRY��

2. Chapter 4.3 Recursion

1. �)5��3BCD>FLOJ5��

2. �'5��� vs. ��6�0

3. &%��5�

3. Chapter 4.4 Global Variables

4. 739

5. �!

6. �*

2018��PGM?KIN?1 4

# HOA: http://ie.u-ryukyu.ac.jp/~tnal/2018/prog1/

+���=�$02,"8:1.@OE34<;/� 028;/-

Chapter 4.3 ���

4.3 Recursion (��)

2018������ �1 5

4.3 Recursion (��)factorial function (����)

# )0*�1# �&$�"��'��def factI(n):

"""iterative function>>> factI(1)1>>> factI(3)6"""result = 1while n > 1:

result = result * nn -= 1

return result

# )0*�2# ����'���!#��def factR(n):

"""recursive function>>> factR(1)1>>> factR(3)6"""if n == 1:

return nelse:

return n * factR(n-1)

2018� 1+.(-,/(1 6

factR() �����"���factR()��'#����%�

������&'(#+25/���# %5*�2-2# ����"� ��!��def factR(n):

"""recursive function>>> factR(1)1>>> factR(3)6"""if n == 1:

return nelse:

return n * factR(n-1)

# ��result = factR(3)

• )(,2-1 (Stack no.1)– factR()– result

• factR(3)– 1��!�� (Stack no.2)– n = 3– factR(2) # factR(3) ���

• factR(2)– 2��!�� (Stack no.3)– n = 2– factR(1) # factR(2) ���

• factR(1)– 3��!�� (Stack no.4)– n = 1– return 1 # factR(1)���

2018��6,3$0.4$1 7

��8� �� vs. ��9�-

• �8RUIK–�.��7�-3��(B�)6=!FYOV6EZL76?+5'%?"• FYOV^�;</&!�(</&!MD7�2(</&

• #�.��$8�– ���!DTN!!!

• �8JRUIK– Stack Overflow ( EGK76>'1)• ��'�A?:4GHICNWZQ'�;�6?[��,@0!RSU7�>�*?\"

2018�]OXDTPYD1 8

+)�"B�_�%`• ��– 0 ��5J�&�KA!(/-GL@J�A-F/1_�:���"`

• S^U– https://github.com/naltoma/python_demo_module

• 5;�– case 1

% python maze_simple.py– case 2

% python>>> import maze_simple>>> maze_simple.test_play()

2018��aX\RZY]R1 9

Case1BVOP[�$B��.if __name__ == '__main__':BmainW\TQ6�$:ML/

Case2BimportN;<��.if __name__ == '__main__':BmainW\TQC�$:M@2/

import�AH#�$;>�;[email protected]?,KB�7�?OK/#�$;>�;8@[email protected]\TQN�43/��0__name__1C#'�:ML��@��B�=/�*C#?!(;>EI3/

#!��2�: 9@:2��$�(��)def walk_map_with_step_num(map, y, x, step_num):

if is_upward(map, y, x) == True:step_num += 1map[y-1][x] = step_numwalk_map_with_step_num(map, y-1, x, step_num)

if is_rightword(map, y, x) == True:step_num += 1map[y][x+1] = step_numwalk_map_with_step_num(map, y, x+1, step_num)

if is_downward(map, y, x) == True:step_num += 1map[y+1][x] = step_numwalk_map_with_step_num(map, y+1, x, step_num)

if is_leftward(map, y, x) == True:step_num += 1map[y][x-1] = step_numwalk_map_with_step_num(map, y, x-1, step_num)

2018��A;>8=<?81 10

��map[y][x]2��)� �04%��71. 3*%map1��7 �,6&

�*�(-4%�*'��1��*/%�+��7�5",&

������

2018���������1 11

########s ## ###### # ## ### ## ########

map1

�NG

########s1 ## ###### # ## ### ## ########

map2

�ok

########s12 ## ###### # ## ### ## ########

map3

�ok

�NG

########s123 ## ###### # ## ### ## ########

map4

�ok

�NG

########s1234## ###### # ## ### ## ########

map5

�NG

�NG

�NG

�ok

########s1234##1###### # ## ### ## ########

�ok

map6 ########s1234##1######2 # ## ### ## ########

map7�NG�NG�ok

########s1234##1######23 # ## ### ## ########

�NG

�ok

map8 ########s1234##1######234# ## ### ## ########

map9

�NG

�NG

�NG

�ok

########s1234##1######234# ##3### ## ########

�ok

map10 ########s1234##1######234# ##3### ##4 ########

map11

�NG�NG�NG

�NG

2018��0*-(,+.(1 12

��: https://ja.wikipedia.org/wiki/_(��)

���!�&#������% (,)�

���"!���'��%/����% ���$���

LRFPNSF1(�7�) KISS��8DRY��-��8��)

1. KISS��-DRY��

2. Chapter 4.3 Recursion

1. �+;��8HIJEKQTO;��

2. �(;��� vs. ��=�4

3. '&��;�

3. Chapter 4.4 Global Variables

4. >8?

5. �!

6. ,

2018��ULRFPNSF1 13

$ MTG: http://ie.u-ryukyu.ac.jp/~tnal/2018/prog1/

�%D�%�:�0B387-�"4@529B.>6<��*�;��D�#71BA/:9C/.

Chapter 4.4 ��

4.4 Global Variables (����)

2018����� ��1 14

����XX

4.4 Global Variables (��)• ��806�'3'�F%global&��06*A�(– KWP�: NHLO��

• 9.*A7@��7,C�– ��7,C*A8'56�'>-C8#%.<�+9.*AGIML/DC<*&F�?�-.8+�";:C$

– �"Z��0"'#QJ<��;:B+4$• ��– �E:'; 03.8=:'$– ��806=%����&$9(06@�'3':A#2<��F��03�7��1C.8$

– �(806@#��!;�)C$

2018 �YRUJTSVJ1 15

IOCMKPC1("7 ) KISS�7DRY�.��7��+

1. KISS�.DRY�

2. Chapter 4.3 Recursion

1. �,9�7EFGBHNQL9��

2. �*9���! vs. ���;�4

3. )(�#9�

3. Chapter 4.4 Global Variables

4. <7=

5. %

6. �-

2018��RIOCMKPC1 16

'$JQD: http://ie.u-ryukyu.ac.jp/~tnal/2018/prog1/

*�:����@�2�&:0><5A/�?816�31/

ek]igl]1((7 ) KISS�KDRY�;��K#$6

1. KISS�;DRY�

2. Chapter 4.3 Recursion

1. �8N�K`ab\djmhN��

2. "5N���& vs. ���P�E

3. 43 )N�

3. Chapter 4.4 Global Variables

4. QKS

5. %+

6. �9

2018��nek]igl]1 17

0*fm_: http://ie.u-ryukyu.ac.jp/~tnal/2018/prog1/

:��Z�1EI;/RTF>^mcKLWU?��EIRU?<

�2Z�2'M�@WCKJ;�,ETFBLW<QGO��7!N�Z&.JAWU?MLX?<

5�O���!Z�?�-O=VQH[<�YL>J�D><

PIS

• KISS��IDRY��– 1/�M]kein��'oKA2�'Y`^bBV3or`^b1�. 3

– #U,AGV\mc;6WN2#U,@CK�>J7:%9GQV3

• ��– /�(*Y#U,AO?IH��ATB7[m^;6V3

• ��-lZhd�-– 4���-5M_mi3DL�-K)IA+R�Hgai�H<VI2���WY0=TB7n\mcK)IATB7o3

• ��– ��"�

2018��qejZhfkZ1 18

gai�FG�EX8rp�$�&!�K6U3

>;=A��

• ��1���4: �6,1>;C=A<@?B<

– (1��2�����: google drive/ex1/0-example!0��)4)*�

–��*+1�.��3,57#���&��-'/"��02�)7#�

• ��%���%8�>;:�$9� �

2018��D=A<@?B<1 19

�x��;?

• �x��z���zlqt$–3%,G|�~�• DCB�'w*ou• ECB� w*ou

– JNLPKNHB��w4vs`u]gj��– MIOKNPKNHB(Ys<�^Q.��#��3+�ih��/i�AjcUe:Wu

• FCB}|yj�t5n– @8j�&wgtQX�UwqbeUuY!"_u

» 0 ZqbeuY�Ysi[ibas�krVR– S��f�nTlm�12�j-ou– �6j0=^iZs:Wu79

• GCB�_u

2018�����z���z1 20

��f2,3�:Wep�YsiU��jmQ w�\e>�^rV

�'fmiU�observer=<�^iZs)dUa]gw{���Q�YsiU]gw>��

��• �: ��(�!�����)

• ��: � ���– 5�• 5.1 Tuples• (5.2 Lists and Mutabilities) 4����!��

• �3��(#''-): paiza, progate–*1&.,2&'$/(")% 40+/���� ���

• https://paiza.jp/challenges/info

2018�5*1&.,2&1 21

���

• ���: Introduction to Computation and Programming Using Python: With Application to Understanding Data

• Python 3.5.1 documentation, https://docs.python.org/3.5/index.html

2018����� ��1 22

�� ������

2018����������1 23

�����2�

• ("�! �!0doctest1��– �!���–���.� �

• &�'/+��–&�'/+�%*�!–&�'/+3�*.py�– import�from���&�'/+����

2018��2#,�)$-�1 24

�UMZTvrnpolpb"FUC~

• 9�D��7_T�FGQb=#2I\JFJ`>MZ<– &���+3J`UV5@<

– =��7_>U4D+3.T�F��J`<

– =���>b16J`GQP;��IO@`�@�b,JGQT[S`<

• xsdhmx{i– $0b�NMXX;j|qb%<

• olp:�8*– /!: 8*)�P]F?`('

• =GA@A��D�B^aM T;GA@A��bJ`9�b"@O>

• ��Q��V CNO@`<or C^S@S^;j|qb"E�Z`�T�+TJ`<

– olpbT"FGQP;LU9�bRA��HKM@Cb�+TJ`<

– "@MolpD7`]ATj|qb"F<

2018��}tziwu{i1 25

�-:f{kreUlgyb�WJ=olp:�8*>b�cPY]A:https://thinkit.co.jp/story/2014/07/30/5097

�����

• h"ps://github.com/naltoma/python_intro/blob/master/tutorial-doctest.md

2018����������1 26

�7.;6�KFLQN %!A7$U

• ���%��+.KFLQNB���+=,',A.;�

– ��/(/4���HCDN�3+$��3&5"�

– KFLQN5?�HCDN3<��3&A�

• 5A9'HCDN��*-5">#6,A.;�

– �8�0B�+2+:#�

– ��5"��71<@%�GE6�%A)4<�

– KFLQNRHCDNS4+2��,A5?� 5'4<HCDN��6�#GE8��+5"�

2018��TIOEMJPE1 27

�� &#������

• h"ps://github.com/naltoma/python_demo_module

• !���������� �– my_math.py #�� &#������ �&�– import_case1.py #import�– import_case2.py #from+import�

2018��'�$�"�%�1 28

��+��2�

• >857647FdoctestG+��

–647+��

–&D���

• <3=EA+��

–<3=EA+;@57

–<3=EAI!*.py"– import(from1�#'<3=EA�,�,

2018��H9B2?:C21 29

>8576471�#'� *�/-$

������������*-.<3=EA�,�,1�%.-$*)0$