o} yr~ - ie.u-ryukyu.ac.jptnal/2018/prog1/2018prog1-w7.pdf · o}_yr~_1 (#6 )hlf_ '=2 kc` o=...
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;/-
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/.
����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
�����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