More Related Content Similar to Python入門 : 4日間コース社内トレーニング (20) Python入門 : 4日間コース社内トレーニング2. ᮏ䝇䝷䜲䝗䛿
Cisco
Japan
♫ෆ䛷㛤ദ䛧䛯
TAC
(䝖䝷䝤䝹
䝅䝳䞊䝔䜱䞁䜾䜢ᑓ㛛䛸䛩䜛䝛䝑䝖䝽䞊䜽䜶䞁䝆䝙䜰)
ྥ
䛡䛾㻌python
䝖䝺䞊䝙䞁䜾䜢୍㒊ಟṇ䛧䛯䜒䛾䛷䛩䚹
₇⩦㎸䜏䛷㻌4㛫
x
4᪥㻌䛷㛤ദ䛧䛶䛔䜎䛩
3. 䝖䝺䞊䝙䞁䜾䛾┠ⓗ
• Python
䜢䛘䜛䜘䛖䛻䛺䜛
• 䝥䝻䜾䝷䝭䞁䜾䛾ᴫᛕ䜢⌮ゎ
• 䝋䞊䝇䝁䞊䝗(diff䛺䛹)䜢ㄞ䜐
• SDN㛵㐃䛾SR䜢䛥䜀䛟
• python䛷ゎᯒ䝒䞊䝹䜢స䛳䛶䝏䞊䝮䛻㈉⊩
Python
ධ㛛
3
5. ⿵㊊
䝖䝺䞊䝙䞁䜾䛾ෆᐜ䛿
Alan
Gauld
䛥䜣䛾
Learning
to
proguram
ver
2
䜢ཧ↷䛧䛶సᡂ䚹
䛾䛂ึ䜑䛶䛾Python䛃䜒ཧ↷䛧䛶
Python
ධ㛛
5
䜎䛯䚸O’REILLY
䛔䜎䛩䚹
Learning
to
Program
h7p://www.alan-‐g.me.uk/
8. Ping
䛾ᣲື
• ICMP
echo
䜢㻌cisco.com
䛻3ᅇ㏦ಙ䛧䚸䛭䛾
reply
䛜ᒆ䛔䛯ྜ䛸RTT䜢⟬ฟ
Python
ධ㛛
8
yuichi$
ping
-‐c
3
cisco.com
PING
cisco.com
(72.163.4.161):
56
data
bytes
64
bytes
from
72.163.4.161:
icmp_seq=0
7l=238
cme=149.949
ms
64
bytes
from
72.163.4.161:
icmp_seq=1
7l=238
cme=149.783
ms
64
bytes
from
72.163.4.161:
icmp_seq=2
7l=238
cme=149.826
ms
-‐-‐-‐
cisco.com
ping
stacsccs
-‐-‐-‐
3
packets
transmi4ed,
3
packets
received,
0.0%
packet
loss
round-‐trip
min/avg/max/stddev
=
149.783/149.853/149.949/0.070
ms
9. Ping䛾ᐇ
(1)ᐄඛ䜰䝗䝺䝇䜢ධຊ(cisco.com)
(2)ᐄඛ䛻ྥ䛡䛶
ICMP
echo
request
䜢ᡴ䛴
(3)⤖ᯝ䜢⾲♧
-‐
ICMP
echo
reply
䛜䛛䛘䛳䛶䛝䛯ሙྜ
฿╔้
-‐
㏦ಙ้㻌䛾
RTT
䜢⾲♧
-‐ ICMP
echo
reply
䛜ᖐ䛳䛶䛣䛺䛛䛳䛯ሙྜ
lost
䛧䛯䛣䛸䜢⾲♧
(4)
(2)-‐(3)
䜢䛒䛸2ᅇ⧞䜚㏉䛩
(5)3ᅇ䛾ICMP䛾⤖ᯝ䜢㞟ィ䛧䚸⾲♧
PC
S
D
1ᅇ┠⾲♧
2ᅇ┠⾲♧
3ᅇ┠⾲♧
3ᅇ䛾⤖ᯝ䜢⾲♧
Python
ධ㛛
9
echo
request
echo
reply
䝃䞊䝞
ping
䛾ᐇ
12. 䝥䝻䜾䝷䝭䞁䜾ゝㄒ
• 䝥䝻䜾䝷䝮䜢グ㏙䛩䜛䛯䜑䛾ゝㄒ
• 䝁䞁䝢䝳䞊䝍(ᶵᲔㄒ)䛸ே㛫(⮬↛ゝㄒ)䛾௰ゝㄒ
• 䛔䛟䛴䛛䛾✀㢮䛜䛒䜛
Python
ධ㛛
12
'hello
world'䜢⾲♧䛥䛫䜛
print('hello
world')
00100101001101010
ே䛜䜔䜚䛯䛔䛣䛸
䝥䝻䜾䝷䝭䞁䜾ゝㄒ
ᶵ䛜ゎ㔘ྍ⬟䛺௧
13. 䛺䛬㻌Python
?
• ᩥἲ䛜䝅䞁䝥䝹䛷ึᚰ⪅ྥ䛡
• 䝟䝽䝣䝹䛺ゝㄒ
• 䜸䝤䝆䜵䜽䝖ᆺᣦྥゝㄒ
Python
ධ㛛
13
14. Python
௨እ䛾㑅ᢥ⫥
• C:
䝝䞊䝗䛻㏆䛔ᴫᛕ䜢ព㆑䛩䜛ᚲせ䛜䛒䜛
OS䛻㏆䛔䛣䛸䜢䛧䛺䛔䛸㛤Ⓨ䛜㠀ຠ⋡
• Java:
Ⰻ䛔ゝㄒ䛰䛜䚸ぬ䛘䜛䛣䛸䛜ከ䛔
Python
䛾䜋䛖䛜⡆༢
• 䛭䛾Script⣔ゝㄒ:
ciscoᶵჾ䛜㠀䝃䝫䞊䝖
• Web⣔ゝㄒ:
cisco
䛷㔜せᗘ䛜ప䛔
• 䛭䛾:
୰⣭⪅-‐>
ୖ⣭⪅㻌䛻䛺䜚䛯䛔ேྥ䛡
Python
ධ㛛
14
15. C,
Java,
Python
䛾ẚ㍑
• ⌧ᅾ䛾䝕䜱䝺䜽䝖䝸௨ୗ䛾ᵓ㐀䜢᭩䛝ฟ䛩䝥䝻䜾䝷䝮
Python
ධ㛛
[/Users/yuichi/Documents/_TRAINING]
CCIE
Java
listFile.py
python
[/Users/yuichi/Documents/_TRAINING/CCIE]
ccie-‐lab.key
[/Users/yuichi/Documents/_TRAINING/Java]
Java
Basic
Training
Day
2.pptx
Java
Basic
Training
Day
3.pptx
Java
Basic
Training
Day
4.pptx
Java
Basic
Training
Day1.pptx
[/Users/yuichi/Documents/_TRAINING/python]
adfunc.py
dict-‐test.py
excepcon.py
func.py
15
_TRAINING
CCIE
Java
Python
ccie-‐lab.key
Java
Basic
Training
Day2
.....
adfunc.py
.....
lismile.py
䝥䝻䜾䝷䝮䛾ฟຊ
21. Agenda
• Day1:
䜲䞁䝇䝖䞊䝹䚸ᇶᮏᩥἲ䚸䝕䞊䝍ᆺ
• Day2:
⥆䝕䞊䝍ᆺ䚸䝰䝆䝳䞊䝹䛸㛵ᩘ
• Day3:
䜸䝤䝆䜵䜽䝖ᣦྥ䚸䜰䝹䝂䝸䝈䝮
• Day4:
ṇつ⾲⌧䚸䜶䝷䞊ฎ⌮䚸䝕䞊䝍䝧䞊䝇
Python
ධ㛛
21
22. Agenda
Day
1
• Python
䛾䜲䞁䝇䝖䞊䝹
• 䝥䝻䞁䝥䝖䛸IDLE䛾䛔᪉
• ᆺ䛸ኚᩘ
• ᮲௳ศᒱ
• 䝹䞊䝥
• ᶆ‽ධຊ
• 㛵ᩘ䛸䝰䝆䝳䞊䝹䛾⏝
• ₇⩦
Python
ධ㛛
22
24. Python
Installacon
• Mac䛿䝍䞊䝭䝘䝹䛷᭱ึ䛛䜙䛘䜛
• 㛤Ⓨ⎔ቃ䜢స䜛䛯䜑䛻䝞䜲䝘䝸䛛䜙䜲䞁䝇䝖䞊䝹
• 䝞䞊䝆䝵䞁䛿
2.7
⣔䛾᭱᪂∧
Python
බᘧ䝨䞊䝆
Python
ධ㛛
24
25. Python
䛾䝞䞊䝆䝵䞁
• Version
3.3.x:
᭱᪂∧䛾䝞䞊䝆䝵䞁
• Version
2.7.x:
䜎䛰䜎䛰ὶ䛾䝞䞊䝆䝵䞁
• Cisco:
2.7.x
䜢⏝
Python
ධ㛛
25
29. Prompt
䛷
python
䜢䜃ฟ䛩
• Windows:
Start
-‐>
python2.7
(command
line)
• Mac:
terminal
䛷
python2.7
䛸ᡴ䛴
Python
ධ㛛
29
30. Prompt
䛷
python
䜢䜃ฟ䛩
• Windows:
Start
-‐>
python2.7
(command
line)
• Mac:
terminal
䛷
python2.7
䛸ᡴ䛴
Python
ධ㛛
30
31. Prompt
䛾⏝
• Prompt
䛷௨ୗ䛾䜘䛖䛺䝁䝬䞁䝗䜢Ⓨ⾜䛧䛶䜏䜛
Python
ධ㛛
31
print('hello
world')
6+1*3
(6+1)*3
5/2
5/2.0
5/0
print("{}
+
{}
=
{}".format(2,3,5))
print
"""hello
I
love
Cisco
I
love
Python
too
"""
import
sys
sys.exit()
32. 䝁䝬䞁䝗䛷
script
䝣䜯䜲䝹䜢ᐇ⾜
• 䝣䜯䜲䝹䛻ฎ⌮䜢グ㏙䛧䚸䛭䜜䜢䝁䝬䞁䝗䛷ᐇ⾜
• Python
䛾䝇䜽䝸䝥䝖䝣䜯䜲䝹䛿ᣑᙇᏊ䛜
.py
• Windows
䛿ᚲせ䛒䜜䜀python
䜢䝟䝇ᣦᐃ䛩䜛
Python
ධ㛛
32
print
“hello
Cisco”
print
“hello
Python”
print
“done!”
test.py
Mac
䛾ᐇ⾜⏬㠃
$
python
䝣䜯䜲䝹ྡ
33. 䝁䝬䞁䝗䛷
script
䝣䜯䜲䝹䜢ᐇ⾜
• 䝣䜯䜲䝹䛻ฎ⌮䜢グ㏙䛧䚸䛭䜜䜢䝁䝬䞁䝗ᐇ⾜
• Python
䛾䝇䜽䝸䝥䝖䝣䜯䜲䝹䛿ᣑᙇᏊ䛜
.py
• Windows
䛿ᚲせ䛒䜜䜀python
䜢䝟䝇ᣦᐃ䛩䜛
䈜
㛫䛾䛒䜛䛸䛝䛻䝟䝇䛾タᐃ䜢ຍ䛘䛶䛚䛟䛸ᴦ
Python
ධ㛛
33
Windows
䛾ᐇ⾜⏬㠃
34. IDLE
• 䛣䛾䝖䝺䞊䝙䞁䜾䛾䝯䜲䞁䛾㛤Ⓨ⎔ቃ
• Windows:
startup
-‐>
python
-‐>
idle
• Mac:
applicacon
-‐>
python
-‐>
idle
Python
ධ㛛
34
IDLE
䝥䝻䞁䝥䝖⏬㠃
35. IDLE
䛾⏝
• IDLE
䛾䜶䝕䜱䝍䜢䛳䛯㛤Ⓨ
• 䝯䝙䝳䞊䜘䜚ඛ䜋䛹స䛳䛯㻌test.py
䜢㛤䛟
• 䜶䝕䜱䝍⏬㠃䜢㑅ᢥ䛧䚸F5
䜢ᢲ䛩䛸ᐇ⾜
Python
ධ㛛
35
36. 䝁䝯䞁䝖䜰䜴䝖
• 䝁䝯䞁䝖:
䝥䝻䜾䝷䝮䛾ὀ㔘䚹ฎ⌮⣔䛻↓ど䛥䜜䜛
• ୍⾜䛾䝁䝯䞁䝖䜰䜴䝖:
#
䝁䝯䞁䝖ᩥ
• 」ᩘᴗ䛾䝁䝯䞁䝖䜰䜴䝖:
"""
」ᩘ⾜ᣦᐃྍ⬟
"""
Python
ධ㛛
36
38. ᆺ
• 䝕䞊䝍䛻䛿ᆺ(✀㢮)䛜䛒䜛
• ᩚᩘᆺ(Integer):
1,5,-‐1
• ᩥᏐิᆺ(String):
"Cisco",
"Python"
Python
ධ㛛
38
40. ኚᩘ
• ኚᩘ:
Data䜢ಖᏑ䛩䜛ᐜჾ
Python
ධ㛛
40
5
print(5)
=>
5
x
=
5
print(x)
=>
5
5
ኚᩘ
X
䝕䞊䝍(ᐃᩘ
5)
௦ධ
print
(
5
)
print
(
5
)
41. ኚᩘ䛸ᆺ
• ᆺᐉゝ:
䛣䛾ኚᩘ䛿䛣䛾ᆺ䜢᱁⣡䛩䜛䛸䛔䛖ᐉゝ
• Python
䛾ኚᩘ䛻䛿ᆺᐉゝ䛜䛺䛔
• ኚᩘ䛻䛹䛾䜘䛖䛺ᆺ䛷䜒䛔䜜䜙䜜䜛
Python
ධ㛛
41
int
x
=
5;
x
=
"Java"
//Error
x
=
5;
print(x)
x
=
"Python"
#
OK
Java
print(x)
Python
42. Python
䛾ᆺ
• ⤌䜏㎸䜏ᆺ
– ᩘᏐ:
int,
float
䛺䛹
– ᩥᏐิ:
ⱥㄒ䚸᪥ᮏㄒ
– 䝸䝇䝖:
㓄ิ䛻ఝ䛶䛔䜛
– Bool:
True
or
False
– 㛵ᩘ:
Python
䛷䛿㛵ᩘ䜒ᆺ䛾୍䛴
– 䛭䛾
• 䝴䞊䝄䛜ᐃ⩏䛧䛯ᆺ(Class)
Python
ධ㛛
42
43. ᩘᏐ
• ᩚᩘ(int)䛸ᐇᩘ(float)䚸」⣲ᩘ䛜䛒䜛
• ୖ㝈䛿Ẽ䛻䛧䛺䛟䛶䜘䛔
Python
ධ㛛
>>>
1234567
*
3456789
4267637625363
(42)
43
䛘䜛₇⟬Ꮚ
ㄝ᫂
M
+
N
㊊䛧⟬
M
–
N
ᘬ䛝⟬
M
*
N
䛛䛡⟬
M
/
N
䜚⟬
M
%
N
వ(䛒䜎䜚)
M**N
䜉䛝
(M
*
M
*
M
…
䜢Nᅇ)
44. ᩘᏐ
• 䜲䞁䜽䝸䝯䞁䝖䛿䛘䛺䛔
• ௦ධ₇⟬Ꮚ䛷௦⏝
Python
ධ㛛
44
₇⟬Ꮚ
ㄝ᫂
M
+=
N
M
=
M
+
N
M
-‐=
N
M
=
M
–
N
M
*=
N
M
=
M
*
N
M
/=
N
M
=
M
/
N
M
%=
N
M
=
M
%
N
Java
int
i
=
0
i++
Python
i
=
0
i
+=
1
ß
i
=
i+1
45. ᩥᏐิᆺ
• 3✀㢮䛾グ㏙᪉ᘧ
Python
ධ㛛
45
䝅䞁䜾䝹䜽䜸䝔䞊䝅䝵䞁
string
=
‘
Hello
Python’
䝎䝤䝹䜽䜸䝔䞊䝅䝵䞁
string
=
“Hello
Python”
䝖䝸䝥䝹䞉䝎䝤䝹䜽䜸䝔䞊䝅䝵䞁
string
=
“””Hello
World
Hello
Python
#
this
isn’t
comment
Hello
CIsco”””
ᨵ⾜䜔≉Ṧグྕ䜒
䛭䛾䜎䜎ᩥᏐิ䛻䚹
46. ᩥᏐิᆺ
• ᩥᏐิ䜒₇⟬グྕ䜢䛘䜛
Python
ධ㛛
46
print
“I
love
“
+
“python”
=>
“I
love
Python”
print
“hello
“
*
3
=>
“hello
hello
hello
“
print
“I
say
“
+
(“hello
“
*
3)
=>
“I
say
hello
hello
hello”
x
=
“I
love
“
y
=
“Python”
print(x+y)
=>
"I
love
Python"
47. Boolᆺ
• 䛔䜟䜖䜛
True,
False
䜢ᣢ䛴ᆺ
• If
ᩥ䛺䛹䛾ไᚚศ䛷䜘䛟⏝䛥䜜䜛
Python
ධ㛛
47
₇⟬Ꮚ
ព
A
and
B
A
䜒
B
䜒
True
䛺䜙
True
A
or
B
A
䛛
B
䛜
True
䛺䜙
True
A
==
B
A
䛸
B
䛜ྠ䛨䛺䜙
True
A
!=
B
A
䛸
B
䛜㐪䛘䜀
True
A
<>
B
ྠୖ
not
A
A
䛜
False
䛺䜙
True
48. Boolᆺ
• 䛔䜟䜖䜛
True,
False
䜢ᣢ䛴ᆺ
• If
ᩥ䛺䛹䛾ไᚚศ䛷䜘䛟⏝䛥䜜䜛
Python
ධ㛛
48
₇⟬Ꮚ
ព
A
>
B
A
䛜
B
䜘䜚䛝䛡䜜䜀
True
A
>=
B
A
䛜
B
௨ୖ䛺䜙
True
A
<
B
A
䛜
B
䜘䜚ᑠ䛥䛡䜜䜀
True
A
<=
B
A
䛜
B
௨ୗ䛺䜙
True
49. Listᆺ
• ᣑᙇ䛜䛷䛝䜛㓄ิ
[x,y,z]
䛸䛔䛖ᙧᘧ䛷సᡂ
• ₇⟬Ꮚ
[x]
䛷䚸㓄ิ䛾
x
␒┠䛻䜰䜽䝉䝇䛩䜛
• ఱ␒┠䛛(index)䛾ᣦᐃ䛿0䛛䜙ᩘ䛘䜛
Python
ධ㛛
49
list1
=
[3,4,5]
print(list1)
=>
[3,
4,
5]
list2
=
[“I”,
“Love”,
“Python”]
print(list2[2])
=>
“Python”
list3
=
[[1,2],
['A',”B”]]
print(list3)
=>
[[1,
2],
[“A”,
“B”]]
print(list3[1][1])
=>
“B”
print(list3[5][0])
=>
#
index
out
of
range
䛾
Error
⾲♧
50. Listᆺ
• 㓄ิ㛗䜢ྲྀᚓ:
len(X)
• 䜸䝤䝆䜵䜽䝖䛾
index
䜢ྲྀᚓ:
index(X)
• 㓄ิ䛻䜸䝤䝆䜵䜽䝖䜢㏣ຍ:
append(x)
• 㓄ิ䛛䜙䜸䝤䝆䜵䜽䝖䜢๐㝖:
del
Python
ධ㛛
50
list1
=
[1,2,3,4,5]
print(list1.index(3))
=>
2
print(len(list1))
=>
5
list1.append(6)
print(list)
=>
[1,2,3,4,5,6]
del
list2[1]
print(list2)
=>
[1,3,4,5,6]
51. 䛭䛾䛾ᆺ(ᚋ᪥)
• Tuple
• Dicconary
• File
• Dates,
Times
• 䝴䞊䝄ᐃ⩏䛾ᆺ(䜽䝷䝇)
• 㛵ᩘ
Python
ධ㛛
51
53. ₇⩦
(₇⟬)
• ௨ୗ䛾ᅗᙧ䛾㠃✚䜢䝥䝻䜾䝷䝮䛷ィ⟬䛧䛶䛟䛰䛥
䛔
• వ⿱䛜䛒䜜䜀䚸import
௨እ䛿୍⾜(䝽䞁䝷䜲䝘
䞊)䛸䛧䛶䛟䛰䛥䛔
Python
ධ㛛
53
4cm
3cm
10cm
5cm
2cm
8cm
༙ᚄ
2cm
䈜
࿘⋡䛿
math
module
䛾
π
䜢
䛳䛶䛟䛰䛥䛔
>>>
import
math
>>>
math.pi
3.141592653589793
54. ₇⩦
(䝗䜻䝳䝯䞁䝖)
• ᩘᏐ
1984
䛸ᩥᏐิ
“cisco”
䜢ᩥᏐิ⤖ྜ䛧䚸⾲
♧䛧䛶䛟䛰䛥䛔
(䛭䛾䜎䜎⤖ྜ䛩䜛䛸䜶䝷䞊䛻䛺䜛
䛾䛷䚸ᩘᏐ䜢ᩥᏐิ䛻ኚ䛩䜛ᚲせ䛒䜚)
• 䜾䜾䜛䛾䛷䛿䛺䛟䚸௨ୗ䛾䝨䞊䝆䛛䜙ᚲせ䛺䛂⤌
䜏㎸䜏㛵ᩘ䛃䜢᥈䛧䛶䛟䛰䛥䛔
Python
ධ㛛
54
Python
ᶆ‽䝷䜲䝤䝷䝸
h7p://docs.python.jp/2/library/index.html
(ⱥ)
h7p://docs.python.org/2.7/library/index.html#python
56. ไᚚᵓ㐀
• ⡆༢䛺䝞䝑䝏ฎ⌮:
ୖ䛛䜙ୗ䛻୍⾜䛪䛴ᐇ⾜䛧䛶䛔䛟
• 䝥䝻䜾䝷䝭䞁䜾
– ୖ䛛䜙ୗ䛻ᐇ⾜䛧䛶䛔䛟
– Ỵ䜑䜙䜜䛯ᩥἲ䛸༢ㄒ(ண⣙ㄒ)䛷ฎ⌮᪉ἲ䜢グ㏙
– ifᩥ䚸loopᩥ䛺䛹䛷䝥䝻䜾䝷䝮䛾ὶ䜜䜢ไᚚ䛩䜛
– 䜽䝷䝇䜔㛵ᩘ䛺䛹䜢䛳䛶ฎ⌮䜢䜎䛸䜑䜛
Python
ධ㛛
56
58. ண⣙ㄒ
• ✵ⓑ䛷༊ษ䜙䜜䛯༢ㄒ䛾㐃⥆䛷䝥䝻䜾䝷䝮䜢グ㏙䛩䜛
• ண⣙ㄒ:
䝥䝻䜾䝷䝮䛾ไᚚ䛾䛯䜑䛾䛂≉ู䛃䛺༢ㄒ
• ண⣙ㄒ௨እ:
ᐃᩘ䚸ኚᩘ䚸㛵ᩘ䚸䜽䝷䝇ྡ䛺䛹⮬⏤䛻䛴
䛡䜙䜜䜛ྡ๓
Python
ධ㛛
58
䝥䝻䜾䝷䝮䛾ไᚚ
if,
for,
while
ᐉゝ
class,
def
ண⣙ㄒ䛾
59. 䝁䞊䝗䝤䝻䝑䜽䛸䜲䞁䝕䞁䝖
• C,Java䛺䛹:
{}
䛸䛔䛖グྕ䛷ฎ⌮䜢䜎䛸䜑䜛
• Python:
䜲䞁䝕䞁䝖(Ꮠୗ䛢)䛷ฎ⌮䜢䜎䛸䜑䜛
Python
ධ㛛
59
for(int
i=0;
i10;
i++){
if(i%2
==
0){
System.out.println(i
+
is
even);
}else{
System.out.println(i
+
is
odd);
}
}
System.out.println(done);
for
i
in
range(10):
if(i%2
==
0):
print({}
is
even.format(i))
else:
print({}
is
odd.format(i))
print(done)
Java
Python
61. ᮲௳ศᒱ
IF
• ≉ᐃ䛾᮲௳䜢‶䛯䛩ሙྜ䛾䜏ฎ⌮䜢⾜䛖
Python
ධ㛛
61
Step1
Test
Condicon
Path1
Path2
62. ᮲௳ศᒱ
IF
• ≉ᐃ䛾᮲௳䜢‶䛯䛩ሙྜ䛾䜏ฎ⌮䜢⾜䛖
Python
ධ㛛
62
if(᮲௳A):
᮲௳A䛜True䛺䜙ᐇ⾜
….
elif(᮲௳B):
᮲௳A䛜False䛛䛴᮲௳B䛜True䛺䜙ᐇ⾜
….
else:
᮲௳A䜒B䜒False䛺䜙ᐇ⾜
….
if
䛾᮲௳ศᒱ䛾⤖ᯝ䛻㛵䜟䜙䛪ᐇ⾜
….
63. ᮲௳ศᒱ
IF
• Python
䛾䝁䞊䝗
Python
ධ㛛
63
i
=
5
if
(i
10):
print
“This
is
never
printed”
else:
print
“This
might
be
printed”
64. (⿵㊊)᮲௳ศᒱ
SWITCH-‐CASE
• ᐇ䛥䜜䛶䛔䛺䛔䚹Ifᩥ䛷స䜛
Python
ධ㛛
64
switch(᮲௳){
case
A:
᮲௳䛜A䛾ሙྜ䛾ฎ⌮
break;
case
B:
᮲௳䛜B䛾ሙྜ䛾ฎ⌮
break
default:
䛭䜜௨እ䛾ሙྜ䛾ฎ⌮
}
if(᮲௳
==
A):
᮲௳䛜A䛾ሙྜ䛾ฎ⌮
elif(᮲௳
==
B):
᮲௳䛜B䛾ሙྜ䛾ฎ⌮
else:
䛭䜜௨እ䛾ሙྜ䛾ฎ⌮
Java
Python
66. 䝹䞊䝥ฎ⌮
for
• ≉ᐃ䛾ฎ⌮䜢Ỵ䜑䜙䜜䛯ᅇᩘ䛣䛺䛩
• Python䛷䛿䝸䝇䝖䛾㉮ᰝ䛻⏝
Python
ධ㛛
66
Repeated
Steps
Test
Condicon
67. 䝸䝇䝖䛸for
• C䜔Java䛺䛹䛾for䛸䛿ู≀
• C䜔Java䛸ྠ䛨䜘䛖䛺䛔᪉䜒䛷䛝䜛
Python
ධ㛛
67
䝸䝇䝖
A
B
C
D
(1)
A䜢䛳䛶ฎ⌮䜢ᐇ⾜
(2)
B䜢䛳䛶ฎ⌮䜢ᐇ⾜
(3)
C䜢䛳䛶ฎ⌮䜢ᐇ⾜
(4)
D䜢䛳䛶ฎ⌮䜢ᐇ⾜
68. forᩥ䛾᭩ᘧ
Python
ධ㛛
68
for
ኚᩘ
in
䝸䝇䝖:
ᐇ⾜䛩䜛ฎ⌮㻌
䝸䝇䝖䛾0␒┠䜢ኚᩘ䛻௦ධ䛧䛶ฎ⌮䜢ᐇ⾜
䝸䝇䝖䛾1␒┠䜢ኚᩘ䛻௦ධ䛧䛶ฎ⌮䜢ᐇ⾜
.....
string
=
for
char
in
[H,e,l,l,o]:
string
+=
char
print(string)
Hello
69. for䛻䜘䜛୍ᐃᅇᩘ䛾ฎ⌮
• ୍ᐃᅇᩘ䛾ฎ⌮䛻䛿
range
㛵ᩘ䜢ే⏝
• range(x):
0
䛛䜙
x-‐1
䜎䛷䛾㐃␒䛾䝸䝇䝖䜢㏉䛩
• range(x,y):
x
䛛䜙
y-‐1
䜎䛷䛾㐃␒䛾䝸䝇䝖䜢㏉䛩
Python
ධ㛛
69
for(int
i=0;
i10;
i++){
System.out.println(i)
}
for
i
in
range(10):
print(i)
Java
Python
70. (⿵㊊)䜲䝔䝺䞊䝍
• python
䛾㻌for
䛿
iterator
䛸䜀䜜䜛⤌䜏
• 䝍䝥䝹䜔䚸ᩥᏐิ䚸㎡᭩䛺䛹䜒
key
䛸䛧䛶䛘䜛
Python
ධ㛛
70
for
char
in
hello:
print(char)
=
h
e
l
l
o
71. 䝹䞊䝥ฎ⌮
while
• ≉ᐃ᮲௳䜢‶䛯䛩䜎䛷䝹䞊䝥䜢⧞䜚㏉䛩
• 䛂ࠥ
䛾㛫䛿䛪䛳䛸䝹䞊䝥䛃䛸䛔䛖䜘䛖䛺䜲䝯䞊䝆
• For
䜋䛹䛿䜟䜜䛺䛔
Python
ධ㛛
71
72. while
䛻㐺䛧䛯䝹䞊䝥ฎ⌮
• ఱ࿘䛩䜜䜀䛔䛔䛛ศ䛛䜙䛺䛔ฎ⌮䛻䛖
• ↓㝈䝹䞊䝥䛻䛺䜙䛺䛔䜘䛖䛻ὀព䛜ᚲせ
䛘䜙䜜䛯ᩘ䜢2㐍ᩘ䛷⾲⌧䛩䜛䛾䛻ᚲせ䛺᱆ᩘ䜢ồ䜑䜛
Python
ධ㛛
72
x
=
6789329
i
=
1
while(2**i
x):
i
+=
1
print(2
^
{}
{}.format(i,x))
2
^
23
6789329
74. ₇⩦
(᮲௳ศᒱ)
• 1
–
100
䜎䛷䛾അᩘ䛾್䜢ᣢ䛴
List
䜢సᡂ䛩䜛
• 1
–
10000
䜎䛷䛾⣲ᩘ䜢⾲♧䛩䜛䚹
䚷䚷䚷㻌⣲ᩘ:
1䛸⮬ศ௨እ䛾ᩚᩘ䛷䜜䛺䛔ᩚᩘ
• Fizz
buzz
䜢
100
䜎䛷⾜䛖
1-‐100䜎䛷䜢⾲♧䚹
3䛷䜚ษ䜜䜛䛿
fizz,
5䛷䜚ษ䜜䜛䛿
buzz
䛸⾲♧
3䛷䜒5䛷䜒䜚ษ䜜䜛䛿
fizz
buzz
䛸⾲♧䛩䜛
Python
ධ㛛
74
78. 㛵ᩘ䛷䝁䞊䝗䛾㔜」䜢ῶ䜙䛩
• 䝁䞊䝗䛾㔜」䜢䛺䛟䛧䚸ಖᏲᛶ䜢ྥୖ䛥䛫䜛
Python
ධ㛛
78
i
=
-‐5
j
=
8
If(i0):
i
=
-‐i
If(j0):
j
=
-‐j
print(i)
=
5
print(j)
=
8
i
=
-‐5
j
=
8
㛵ᩘ
abs
䛾ᐃ⩏
print(abs(i))
=
5
print(abs(j))
=
8
81. 䝰䝆䝳䞊䝹䜈䛾䜰䜽䝉䝇
• 䝰䝆䝳䞊䝹䜢⏝䛩䜛䛻䛿
import
䛩䜛ᚲせ䛜䛒䜛
Python
ධ㛛
81
random()
Traceback
(most
recent
call
last):
File
“stdin”,
line
1,
in
module
NameError:
name
'random'
is
not
defined
import
random
random.random()
0.6019003331149728
import
䛧䛶䛔䛺䛔䛸
⏝䛷䛝䛪䛻䜶䝷䞊
䛂䝰䝆䝳䞊䝹ྡ.㛵ᩘ䛃
䛷䝰䝆䝳䞊䝹䛾㛵ᩘ䜢⏝
84. ᶆ‽ධຊ
• 䝴䞊䝄䛛䜙䛾ධຊ䜢ཷ䛡ྲྀ䜛
䛸ධຊ䛥䜜䜛
ධຊᚅ䛱䛜ゎ㝖䛥䜜䜛
Python
ධ㛛
84
input
=
raw_input()
䝴䞊䝄䛛䜙䛾ධຊ䜢ᚅ䛴
“hello”
print(input)
=
“hello”
85. ᶆ‽ධຊ
• ↓㝈
echo
䝥䝻䜾䝷䝮
Python
ධ㛛
85
while(True):
print
“please
input:”
input
=
raw_input()
print
input
䈜䚷Ctr-‐C
䛷ᢤ䛡䜛㻌
87. 䝁䝬䞁䝗䝷䜲䞁ᘬᩘ
• 䝇䜽䝸䝥䝖䜢䛂䝟䝷䝯䞊䝍䛃䛴䛝䛷㉳ື䛩䜛
• 䝇䜽䝸䝥䝖ෆ䛻┤᥋᭩䛝㎸䜐䜘䜚⼥㏻ᛶ䛜䛒䜛
Python
ධ㛛
87
ping䛾䝥䝻䜾䝷䝮
(1)
ᐄඛ䜢ᘬᩘ䛷ཷ䛡ྲྀ䜛
(1)
ᐄඛ䜈㻌icmp
echo
request
䜢㏦䜛
(2)
ᐄඛ䛛䜙㻌icmp
echo
reply
䜢ཷ䛡ྲྀ䜛
(3)
ཷಙ⤖ᯝ䜢⾲♧
ping.py
cisco.com
python.org
#python
ping.py
cisco.com
#python
ping.py
python.org
88. sys.argv
• 䝁䝬䞁䝗䝷䜲䞁ᘬᩘ䛻䜰䜽䝉䝇䛩䜛䛻䛿
sys
䝰䝆䝳䞊
䝹䜢
import
䛩䜛
• ᘬᩘ䛜argv䛻䝸䝇䝖䛸䛧䛶᱁⣡䛥䜜䛶䛔䜛
Python
ධ㛛
88
import
sys
print(-‐-‐-‐-‐
args
-‐-‐-‐-‐)
print(len(sys.argv))
print(sys.argv[0])
print(sys.argv[1])
print(sys.argv[2])
print(-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐)
a
=
int(sys.argv[1])
b
=
int(sys.argv[2])
print({}
+
{}
=
{}.format(a,b,a+b))
$
python
test.py
1
5
-‐-‐-‐-‐
args
-‐-‐-‐-‐
3
test.py
1
5
-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐
1
+
5
=
6
test.py
ฟຊ
91. ḟᅇண࿌
• 㛵ᩘ䜢స䜛
• 㧗ᗘ䛺ᆺ䜢䛖
• 䝣䜯䜲䝹ฎ⌮
Python
ධ㛛
91
• 䛷䛝䜛䜘䛖䛻䛺䜛䛣䛸
– 䝔䜻䝇䝖ฎ⌮䛻䜘䜛䝻䜾䛾ゎᯒ
– OS䜢᧯స䛩䜛䛯䜑䛾䝅䜵䝹䝇䜽䝸䝥䝖䛾సᡂ
93. Python
ධ㛛
Learning
to
Program
For
Cisco
Network
Engineers
Day
2/4
Japan
TAC
DC
Team.
Yuichi
Ito
94. Agenda
Day
2
• Python
• ⥆䝕䞊䝍ᆺ
• 㛵ᩘ䛾సᡂ
• 䝰䝆䝳䞊䝹䛾సᡂ
• ₇⩦1(Map)
• ᩥᏐิฎ⌮
• 䝣䜯䜲䝹ฎ⌮
• OS䝁䝬䞁䝗䛾⏝
• ₇⩦2(䝻䜾ゎᯒ䚸Linux䛾䝇䜽䝸䝥䝖)
Python
ධ㛛
94
96. Python
• Ⓩሙᮇ:
1990ᖺ
• タィ⪅:
䜾䜲䝗䞉䞂䜯䞁䝻䝑䝃䝮
• ᆺ䛡:
ᙉ䛔ືⓗᆺ䛡
Python
ධ㛛
96
• 1.x:
1994ᖺ
• 2.x:
2000ᖺ䚹䝯䝆䝱䞊ゝㄒ
• 3.x:
2008ᖺ䚹ᚋ᪉ᛶ䛺䛧
98. Python
䛾ᆺ
• 䝴䞊䝄ᐃ⩏䛾ᆺ(Class)
• ⤌䜏㎸䜏ᆺ(python䛜ᥦ౪)
Python
ධ㛛
98
ᩘ್ᆺ
-‐
ᩚᩘ
-‐
㛗〇ᩘ
-‐
ᾋືᑠᩘⅬ
-‐
」⣲ᩘ
䝅䞊䜿䞁䝇ᆺ
-‐
ᩥᏐิ
-‐
䝸䝇䝖
-‐
䝍䝥䝹
-‐
xrangeᆺ
䝬䝑䝥ᆺ
-‐
㎡᭩
䝣䜯䜲䝹ᆺ
-‐
䝣䜯䜲䝹䜸䝤䝆䜵䜽䝖
99. ⏝ㄒ
• 䜸䝤䝆䜵䜽䝖
• 䜲䞁䝕䝑䜽䝇
• 䜶䝺䝯䞁䝖
• 䝸䝔䝷䝹
• ௦ධ
• ᘬᩘ
• ㏉䜚್
Python
ධ㛛
99
100. ㎡᭩ᆺ
• Key
䛸
Value
䛾䝨䜰䜢ಖᣢ䛩䜛䝕䞊䝍ᆺ
• Key䛛䜙Value䜢ྲྀᚓ䛩䜛
Dicconary
Python
ධ㛛
㏣ຍ
100
Apple
:
Red
Lemon
:
Yellow
Grape
:
Purple
Apple䛾Ⰽ䛿?
Red
!!
X
:
Y
ྲྀᚓ
101. ㎡᭩䛾᧯స
• ㎡᭩䛾ᙧᘧ:
{key1:value1,
key2:value2}
• ್䛾ྲྀᚓ:
㎡᭩䜸䝤䝆䜵䜽䝖[key]
• ್䛾㏣ຍ(᭦᪂):
㎡᭩䜸䝤䝆䜵䜽䝖[key]
=
value
• ್䛾๐㝖:
del
㎡᭩䜸䝤䝆䜵䜽䝖[key]
• key୍ぴ䛾ྲྀᚓ:
㎡᭩䜸䝤䝆䜵䜽䝖.keys()
• key䜢ᣢ䛳䛶䛔䜛䛛:
㎡᭩䜸䝤䝆䜵䜽䝖.has_key(key)
Python
ධ㛛
101
102. ㎡᭩ᆺ䛾᧯స
#
㎡᭩䜸䝤䝆䜵䜽䝖䜢సᡂ
d
=
{Apple:Red,
Lemon:Yellow}
#
key
䛛䜙
Value
䜢ྲྀᚓ
d[Apple]
'Red'
#
㎡᭩䜸䝤䝆䜵䜽䝖䛻せ⣲䜢㏣ຍ
d[Grape]
=
Purple
d
{'Grape':
'Purple',
'Lemon':
'Yellow',
'Apple':
'Red'}
#
㎡᭩䜸䝤䝆䜵䜽䝖䛾せ⣲䜢๐㝖
del
d[Apple]
d
{'Grape':
'Purple',
'Lemon':
'Yellow'}
Python
ධ㛛
102
104. ㎡᭩ᆺ䛾䝃䞁䝥䝹
• Arp
Table
䜢
List
䛸㻌㎡᭩䛷ᐇ(䜽䝷䝇䛺䛧)
Python
ධ㛛
104
ipList
=
[]
macList
=
[]
def
registerMAC1(ip,
mac):
if
ip
in
ipList:
index
=
ipList.index(ip)
macList[index]
=
mac
else:
ipList.append(ip)
macList.append(mac)
def
getMAC1(ip):
if
ip
in
ipList:
index
=
ipList.index(ip)
return
macList[index]
else:
return
None
arpTable
=
{}
def
registerMAC2(ip,
mac):
arpTable[ip]
=
mac
def
getMAC2(ip):
return
arpTable.get(ip)
List䛻䜘䜛ᐇ:
᥈⣴䝁䝇䝖
Order(N)
㎡᭩䛻䜘䜛ᐇ:
᥈⣴䝁䝇䝖
Order(1)
List䛻䜘䜛ᐇ
㎡᭩䛻䜘䜛ᐇ
105. 䝉䝑䝖
• 㔜」䚸㡰ᗎ䛾䛺䛔」ᩘ䛾䝕䞊䝍䜢ಖᣢ䛩䜛ᆺ
• Value
䛾䛺䛔
Map
䛻㏆䛔
Python
ධ㛛
105
a
=
set([1,2,3,4,5,3,2])
print(a)
set([1,
2,
3,
4,
5])
a
=
set(hello)
b
=
set(world)
print(a)
set(['h',
'e',
'l',
'o'])
print(b)
set(['d',
'r',
'o',
'w',
'l'])
print(a
b)
set(['l',
'o'])
106. 䝉䝑䝖䛾᧯స
• ึᮇ:
set(䝅䞊䜿䞁䝇ᆺ䛾䜸䝤䝆䜵䜽䝖)
• ㏣ຍ:
set䜸䝤䝆䜵䜽䝖.add(value)
• ๐㝖:
set䜸䝤䝆䜵䜽䝖.discard(value)
Python
ධ㛛
106
107. 䝍䝥䝹ᆺ
• ྍኚ䛺䝕䞊䝍ᵓ㐀
• せ⣲䛾ᩘ䛜Ỵ䜎䛳䛯䛂୍⤌䛾䝕䞊䝍䛃
Python
ධ㛛
107
#
show
logging
Link
down
OSPF
Neighbor
XXX
down
Admin
up
Link
up
OSPF
Neighbor
XXX
up
....
⾜ᩘ(せ⣲ᩘ)䛿ఙ䜃䜛
=
Listᆺ
♫ဨሗ
Yuichi
Ito
2011-‐04-‐01
Tokyo
TAC
⾜ᩘ(せ⣲ᩘ)䛿ఙ䜃䛺䛔
㡰ྠ
=
Tuple
ᆺ
108. 䝍䝥䝹ᆺ䛾᧯స
• Tuple
䛾సᡂ:
tupleObject
=
(elem1,
elem2,...)
• せ⣲䛾ྲྀᚓ:
item
=
tupleObject[index]
• 」ᩘ䛾せ⣲䛾ྲྀᚓ:
• せ⣲䛾᭦᪂:
䛷䛝䛺䛔
Python
ධ㛛
108
109. 䝍䝥䝹ᆺ䛾᧯స
#
Tuple
䛾సᡂ
yuiito
=
(Yuichi,
Ito,
2011)
yuiito
('Yuichi',
'Ito',
2011)
#
せ⣲䛾ཧ↷
yuiito[1]
'Ito'
yuiito
=
(Yuichi,
Ito,
2011)
(name,
famName,
year)
=
yuiito
year
2011
#
せ⣲䛾᭦᪂
yuiito[2]
=
2009
Traceback
(most
recent
call
last):
File
stdin,
line
1,
in
module
TypeError:
'tuple'
object
does
not
support
item
assignment
Python
ධ㛛
109
110. 䝍䝥䝹ᆺ䝃䞁䝥䝹
• 䝕䞊䝍ᵓ㐀䜢సᡂྍ⬟(䜽䝷䝇䛾⡆᫆∧)
• ྍኚ䛺䜸䝤䝆䜵䜽䝖
Python
ධ㛛
110
def
getMinMax(numList):
minNum
=
numList[0]
maxNum
=
numList[0]
for
n
in
numList:
if
n
minNum:
minNum
=
n
if
n
maxNum:
maxNum
=
n
return
(minNum,
maxNum)
114. 䛒䜣䜁䜣䛾〇㐀ᕤ⛬
Python
ධ㛛
114
䛣䛽䜛
ᮦᩱ䜢⏝ព
⢊䛺䛹䜢䜎䛬䜛
䛣䛽䜛
Ⓨ㓝
⏕ᆅ䜢ᩚᙧ
ᨺ⨨
䛒䜣䜁䜣䛾ᙧస䜚
⏕ᆅ䜢㐺㔞䛸䜛
㤆䜢䛔䜜䜛
䜑䜛
↝䛟
䜸䞊䝤䞁䜢 䜑䜛
䝟䞁䜢䛔䜜䜛
୍ᐃ㛫ᚅ䛴
ྲྀ䜚ฟ䛩
115. 䜹䝺䞊䝟䞁䛾〇㐀ᕤ⛬
Python
ධ㛛
115
䛣䛽䜛
ᮦᩱ䜢⏝ព
⢊䛺䛹䜢䜎䛬䜛
䛣䛽䜛
Ⓨ㓝
⏕ᆅ䜢ᩚᙧ
ᨺ⨨
䜹䝺䞊䝟䞁䛾ᙧస䜚
⏕ᆅ䜢㐺㔞䛸䜛
䜹䝺䞊䜢䛔䜜䜛
䜑䜛
ᥭ䛢䜛
Ἔ䜢 䜑䜛
䝟䞁䜢䛔䜜䜛
୍ᐃ㛫ᚅ䛴
ྲྀ䜚ฟ䛩
116. 㛵ᩘ䜢䜟䛺䛔䝧䝍᭩䛝
• ฎ⌮䛾༊ษ䜚䛜ศ䛛䜚䛵䜙䛟䚸㔜」䛜ከ䛔
Python
ධ㛛
116
ᮦᩱ䜢⏝ព
⢊䜢ΰ䛬䜛
䛣䛽䜛
⏕ᆅ䜢ᩚᙧ
ᨺ⨨
⏕ᆅ䜢㐺㔞䛸䜛
㤆䜢ධ䜜䜛
ᩚᙧ
䜸䞊䝤䞁䜢 䜑䜛
䝟䞁䜢䛔䜜䜛
୍ᐃ㛫ᚅ䛴
ྲྀ䜚ฟ䛩
AnPan.py
ᮦᩱ䜢⏝ព
⢊䜢ΰ䛬䜛
䛣䛽䜛
⏕ᆅ䜢ᩚᙧ
ᨺ⨨
⏕ᆅ䜢㐺㔞䛸䜛
䜹䝺䞊䜢ධ䜜䜛
ᩚᙧ
Ἔ䜢 䜑䜛
䝟䞁䜢䛔䜜䜛
୍ᐃ㛫ᚅ䛴
ྲྀ䜚ฟ䛩
CurryPan.py
118. 㛵ᩘ䛻䜘䜛䝁䞊䝗䛾ᩚ⌮
Python
ධ㛛
118
㛵ᩘ:
䛣䛽䜛
ᮦᩱ䜢⏝ព
⢊䜢ΰ䛬䜛
䛣䛽䜛
㛵ᩘ:
Ⓨ㓝
⏕ᆅ䜢ᩚᙧ
ᨺ⨨
㛵ᩘ:
䛒䜣䜁䜣ᙧస䜚
⏕ᆅ䜢㐺㔞䛸䜛
㤆䜢ධ䜜䜛
ᩚᙧ
㛵ᩘ:
↝䛟
䜸䞊䝤䞁䜢 䜑䜛
䝟䞁䜢䛔䜜䜛
୍ᐃ㛫ᚅ䛴
ྲྀ䜚ฟ䛩
௨ୗ┬␎
Pan.py
(䛴䛵䛝)
㛵ᩘ:
make䛒䜣䜁䜣
䛣䛽䜛
Ⓨ㓝
䛒䜣䜁䜣ᙧస䜚
↝䛟
㛵ᩘ:make䜹䝺䞊䝟䞁
䛣䛽䜛
Ⓨ㓝
䜹䝺䞊䝟䞁ᙧస䜚
ᥭ䛢䜛
…..
Pan.py
120. ᘬᩘ
• 㛵ᩘ䜢䜃ฟ䛩㝿䛻㛵ᩘ䛻䛘䜛್
• ௬ᘬᩘ(㛵ᩘ䛾ᐃ⩏ഃ䛷ཷ䛡ྲྀ䜛ኚᩘ)
• ᐇᘬᩘ(㛵ᩘ䛾䜃ฟ䛧ഃ䛷䛘䜛್)
Python
ධ㛛
120
def
㛵ᩘྡ(௬ᘬᩘ䠅
㛵ᩘෆ䛾ฎ⌮
㛵ᩘྡ(ᐇᘬᩘ)
ᐃ⩏
䜃ฟ䛧
123. 㛵ᩘసᡂ䛾᭩ᘧ1
• ᘬᩘ䚸㏉䜚್䛺䛧䛾᭩ᘧ
• ㏉䜚್䜢᫂♧䛧䛺䛔ሙྜ䛿
None
䛜㏉䜛
Python
ධ㛛
123
def
㛵ᩘྡ():
ฎ⌮
def
printHello():
print(hello)
printHello()
=
hello
124. 㛵ᩘసᡂ䛾᭩ᘧ2
• ᘬᩘ䚸㏉䜚್䛒䜚
• ᘬᩘ䛿㛵ᩘྡ䛾ᚋ䛾()䛻ᚲせ䛺ᩘ䛰䛡ᣦᐃ
• ㏉䜚್䛿
return
䛷᫂♧ⓗ䛻᭩䛟
Python
ධ㛛
124
def
㛵ᩘྡ(ᘬᩘ):
ฎ⌮
return
㏉䜚್
def
adder(a,
b):
return
a
+
b
print(adder(3,4))
=
7
125. 㛵ᩘ䛾䝃䞁䝥䝹
def
power(x):
return
x*x
def
absolute(x):
if(x0):
return
-‐x
else:
return
x
print(power(6))
-‐
36
print(absolute(-‐5))
-‐
5
Python
ධ㛛
125
127. global
• 㛵ᩘෆ䛷䜾䝻䞊䝞䝹ኚᩘ䛻䜰䜽䝉䝇䛩䜛䛯䜑䛾ᐉゝ
Python
ධ㛛
127
gv
=
0
def
func1():
gv
=
1
def
func2():
global
gv
gv
=
2
print(gv)
-‐
0
func1()
print(gv)
-‐
0
func2()
print(gv)
-‐
2
129. ₇⩦
• day2-‐1.py.zip
䜢䝎䜴䞁䝻䞊䝗䛧ゎ
• text
=
ࠥ
䛸䛧䛶๓ᐃ⩏䛥䜜䛶䛔䜛ᩥᏐิ䛾
༢ㄒฟ⌧ᩘ䜢䜹䜴䞁䝖䛩䜛䝥䝻䜾䝷䝮䜢సᡂ
• 䛂༢ㄒ:ฟ⌧ᩘ䛃䛸䛔䛖䝣䜷䞊䝬䝑䝖䛷ฟຊ䛩䜛
• ᩥᏐิ䛾ศ:
ᩥᏐิ.split()
-‐
[༢ㄒ䛾㓄ิ]
Ⓨᒎ⦅
Python
ධ㛛
dog:1
cat:2
...
129
• ฟ⌧ᩘ䛜ከ䛔༢ㄒ㡰䛻䝋䞊䝖䛧䛶⾲♧䛩䜛
• 䝠䞁䝖䛿ḟ䝨䞊䝆
130. ₇⩦⿵㊊
• 䝸䝇䝖䜢䛳䛯⡆᫆䝋䞊䝖䜰䝹䝂䝸䝈䝮
• sort㛵ᩘ䜢䛳䛶䜒ᐇྍ⬟䛰䛜䚸䜎䛰ᩍ䛘䛶䛺䛔
䝔䜽䝙䝑䜽䛜ᚲせ
Python
ධ㛛
130
list1
=
[3,6,2,9,0,1,5]
list2
=
[]
while(0
!=
len(list1)):
maxValue
=
max(list1)
index
=
list1.index(maxValue)
list2.append(maxValue)
del
list1[index]
print(list2)
-‐
[9,
6,
5,
3,
2,
1,
0]
135. 䝰䝆䝳䞊䝹䛾ศ
• ᕧ䛺䝣䜯䜲䝹䛿䛂䛹䛣䛻ఱ䛜䛒䜛䛛䛃䜟䛛䜚䛻䛟䛔
• 㐺ษ䛺⢏ᗘ䛷䝣䜯䜲䝹䜢ศ䛩䜛
Python
ධ㛛
135
010101010101010101010101
010101010010101010101010
101010101010101010010101
010101010101010101010101
010010101010101010101010
101010101010010101010101
010101010101010101010010
101010101010101010101010
101010010101010101010101
010101010101010010101010
010101010
101010101
010101010
101010010
101010101
010101010
101010101
010101010
101010010
101010101
010101010
101010101
010101010
101010010
101010101
010101010
101010101
010101010
101010010
101010101
ᕧ䛺䝣䜯䜲䝹
」ᩘ䛾ᑠ䛥䛺䝣䜯䜲䝹
136. 䝰䝆䝳䞊䝹䛾ཧ↷
Python
ධ㛛
136
010101010
101010101
010101010
101010010
101010101
010101010
101010101
010101010
101010010
101010101
010101010
101010101
010101010
101010010
101010101
010101010
101010101
010101010
101010010
101010101
010101010
101010101
010101010
101010010
101010101
010101010
10101010䠍
䝰䝆䝳䞊䝹䜢䛖䝥䝻䜾䝷䝮
య䛾ὶ䜜䜢グ㏙
䝰䝆䝳䞊䝹䜢䛖䝥䝻䜾䝷䝮
య䛾ὶ䜜䜢グ㏙
137. import
• import
䛩䜛䛣䛸䛷䝰䝆䝳䞊䝹䛜䛘䜛
Python
import
mymath
print(mymath.add(2,3))
#
-‐
5
print(mymath.minus(2,3))
#
-‐
-‐1
print(mymath.mulcply(2,3))
#
-‐
6
print(divide(2,3))
#ERROR
HAPPEN
Traceback
(most
recent
call
last):
File
~/main.py,
line
6,
in
module
print(divide(2,3))
NameError:
name
'divide'
is
not
defined
ධ㛛
137
def
add(a,b):
return
a
+
b
def
minus(a,
b):
return
a
-‐
b
def
mulcply(a,
b):
return
a
*
b
def
divide(a,
b):
return
a
/
b
138. from
• from
䝣䜯䜲䝹ྡ(䝟䝑䜿䞊䝆ྡ)
import
*
䛷䝣䜯䜲䝹ྡ
䛾ᣦᐃ䛺䛧䛻䜃ฟ䛧䛜ྍ⬟䛻䛺䜛
Python
ධ㛛
138
def
add(a,b):
return
a
+
b
def
minus(a,
b):
return
a
-‐
b
def
mulcply(a,
b):
return
a
*
b
def
divide(a,
b):
return
a
/
b
from
mymath
import
*
print(add(2,3))
#
-‐
5
print(minus(2,3))
#
-‐
-‐1
print(mulcply(2,3))
#
-‐
6
print(mymath.divide(2,3))
#
ERROR
HAPPEN
Traceback
(most
recent
call
last):
File
~/main.py,
line
6,
in
module
print(divide(2,3))
NameError:
name
'mymath'
is
not
defined
139. (⿵㊊)
ᚠ⎔ཧ↷
• 䝣䜯䜲䝹A䛸B䛜䛔䛻ཧ↷䛧䛒䛳䛶䛔䜛
• ᮃ䜎䛧䛟䛺䛟䚸䜶䝷䞊䛻䛺䜛ሙྜ䛜䛒䜛
Python
ධ㛛
139
import
file2
print(file1)
import
file1
print(file2)
file1.py
$
python
file1.py
file1
file2
file1
file2.py
䛺䜣䛷2ᅇ?
141. ᩥᏐิ䛾ฎ⌮1
• ᩥᏐิ䛾సᡂ:
str1=ᩥᏐิ,
str2='
ᩥᏐิ'
• ᩥᏐิ䛾⤖ྜ:
ᩥᏐิ
+
ᩥᏐิ
• 䜶䝇䜿䞊䝥グྕ:
䛻⥆䛡䛶≉ᐃ䛾ᩥᏐ
• 㛗䛥䛾ྲྀᚓ:
len(ᩥᏐิ)
Python
ධ㛛
141
142. 䝃䞁䝥䝹:ᩥᏐิ䛾ฎ⌮1
#
ᩥᏐิ䛾సᡂ
str1
=
hello
str2
=
'
world'
#
⤖ྜ
print(str1
+
str2)
hello
world
#
䜶䝇䜿䞊䝥
print(str1
+
t
+
str2
+
ncisco)
hello
world
cisco
#
㛗䛥䛾ྲྀᚓ
len(str1)
5
Python
ධ㛛
142
143. ᩥᏐิ䛾ฎ⌮2
• ⧞䜚㏉䛧:
ᩥᏐิ
*
⧞䜚㏉䛧ᅇᩘ
• ᩥᏐิ:
str(ᩥᏐิ௨እ䛾䜸䝤䝆䜵䜽䝖)
• ᩥᏐิ䛾୍ᩥᏐ䜢ྲྀᚓ㻌ᩥᏐิ[index]
• ᩥᏐิ䛾⠊ᅖྲྀᚓ:
ᩥᏐิ[start:end]
Python
ධ㛛
143
144. 䝃䞁䝥䝹:ᩥᏐิ䛾ฎ⌮2
#
⧞䜚㏉䛧
print(cisco
*
3)
ciscociscocisco
#
ᩥᏐิ
print(value:
+
str(5))
#
㠀ᩥᏐิ䜢ᩥᏐิ䛧䛶䛛䜙⤖ྜ
value:
5
#
ᩥᏐิ䛾୍ᩥᏐ䜢ྲྀᚓ
hello
world[4]
'o'
#
ᩥᏐิ䛾୍㒊䜢ྲྀᚓ
hello
world[4:8]
'o
wo'
Python
ධ㛛
144
145. ᩥᏐิ䛾ฎ⌮3
• ⨨䛝䛘:
ᩥᏐิ.replace(old,
new)
• ศ:
ᩥᏐิ.split(༊ษ䜚ᩥᏐ)
• ྵ䜐䛛:
᥈䛩ᩥᏐิ
in
᥈䛥䜜䜛ᩥᏐิ
• ⨨:
ᩥᏐิ.find(᥈䛩ᩥᏐ)
Python
ධ㛛
145
146. 䝃䞁䝥䝹:ᩥᏐิ䛾ฎ⌮3
#
⨨䛝䛘
hello
world.replace(world,
python)
'hello
python'
#
ศ
hello
world.split(
)
['hello',
'world']
#
ྵ䜐䛛
hell
in
hello
world
True
#
⨨
hello
world.find(o)
4
hello
world.find(X)
-‐1
#
ᣦᐃ䛧䛯ᩥᏐิ䛜ྵ䜎䜜䛶䛔䛺䛔ሙྜ䛿
-‐1
Python
ධ㛛
146
148. ṇつ⾲⌧䛸䛿
• ᩥᏐิ䝟䝍䞊䞁䛾ᐃ⩏
• ᰂ㌾䛻ᩥᏐิ䛾䝟䝍䞊䞁䝬䝑䝏䞁䜾䜢⾜䛖䛣
䛸䛜䛷䛝䜛
– 䝟䝍䞊䞁䝬䝑䝏䞁䜾䛻ヱᙜ䛩䜛䛛
– ヱᙜ䛩䜛ᩥᏐิ䛾ྲྀᚓ
Python
ධ㛛
148
149. ṇつ⾲⌧䛾᭷ຠᛶ
• ᩥᏐิ䛜ᩚᩘ䛛䛹䛖䛛ุᐃ䛩䜛䛯䜑䛾䝥䝻
䜾䝷䝮䜢సᡂ䛩䜛
• ṇつ⾲⌧䛾᭷↓䛷䝁䞊䝗㔞䛜ᖜ䛻㐪䛖
Python
ධ㛛
149
def
isIntegerString(string):
numberList
=
['1','2','3','4','5','6','7','8','9','0']
if
len(string)
==
0:
return
false
for
char
in
string:
if
char
not
in
numberList:
return
False
return
True
import
re
def
isIntegerString2(string):
return
re.match('^[d]*$',
string)
!=
None
ṇつ⾲⌧䛺䛧
ṇつ⾲⌧䛒䜚
150. python
䛾ṇつ⾲⌧సἲ
• re:
ṇつ⾲⌧䛾䝟䝑䜿䞊䝆
import
re
• match
:
ྜ⮴䛩䜛ᩥᏐิ⩌䜢ᢤ䛝ฟ䛩
re.match(䝟䝍䞊䞁ᩥᏐิ,
ᩥᏐิ)
• search:
ྜ⮴䛩䜛ᩥᏐิ䛾⨨䜢㏉䛩
re.search(䝟䝍䞊䞁ᩥᏐิ䚸ᩥᏐิ)
Python
ධ㛛
150
151. ṇつ⾲⌧
Python
ධ㛛
151
m
=
re.match(^[d]*$,
12345)
print(m)
_sre.SRE_Match
object
at
0x1005bdbf8
m.group()
'12345'
m.start(),
m.end()
(0,
5)
153. 䝣䜯䜲䝹ฎ⌮䛾ὶ䜜
• 䝣䜯䜲䝹ฎ⌮䛾ὶ䜜
1. file䜢䜸䞊䝥䞁䛧䛶
file䜸䝤䝆䜵䜽䝖䜢ྲྀᚓ
2. file䜸䝤䝆䜵䜽䝖䛻ᑐ䛧䛶ฎ⌮䜢⾜䛖
3. file䜢䜽䝻䞊䝈䛩䜛
Python
ධ㛛
153
154. 䝣䜯䜲䝹䜸䝤䝆䜵䜽䝖
• 䝣䜯䜲䝹䜸䝤䝆䜵䜽䝖䛾సᡂ
open(䝣䜯䜲䝹䝟䝇,
䜸䞊䝥䞁䛩䜛䝰䞊䝗)
– 䝣䜯䜲䝹䝟䝇:
┦ᑐ
or
⤯ᑐ
– 䝰䞊䝗(䝕䝣䜷䝹䝖䛿r)
– r:
ㄞ䜏㎸䜏䝰䞊䝗
– w:
᪂つ᭩䛝㎸䜏䝰䞊䝗
– a:
㏣ຍ᭩䛝㎸䜏䝰䞊䝗
• 䝣䜯䜲䝹䜸䝤䝆䜵䜽䝖䛾䜽䝻䞊䝈
f.close()
Python
ධ㛛
154
155. ㄞ䜏㎸䜏ฎ⌮
• Read
– readline():
୍⾜ㄞ䜏㎸䜏
– readlines():
䛶䛾⾜䜢
list
䛸䛧䛶ㄞ䜏㎸䜏
Python
ධ㛛
155
f
=
open(file.txt,
r)
f.readline()
'hello
world1n'
f.readline()
'hello
world2n'
f.readlines()
['hello
world3n',
'hello
world4n']
hello
world1
hello
world2
hello
world3
hello
world4
file.txt
156. ᭩䛝㎸䜏ฎ⌮
• Write
– write(ᩥᏐิ)
:
ᩥᏐิ䜢᭩䛝㎸䜏
– writelines(ᩥᏐิ䛾䝸䝇䝖)
:
䝸䝇䝖䜢᭩䛝㎸䜏
– flush()
:
䝞䝑䝣䜯䜢䝕䜱䝇䜽䛻䝣䝷䝑䝅䝳
Python
ධ㛛
156
f2
=
open(file2.txt,
w)
f2.write(hello)
f2.write(world)
f2.write(n)
wlist
=
[abc,
def,
ghi]
f2.writelines(wlist)
f2.flush()
f2.close()
helloworld
abcdefghi
file2.txt
157. ୖ᭩䛝䛸㏣グ
• ୖ᭩䛝:
䝣䜯䜲䝹䛾ෆᐜ䜢ᾘ䛧䛶䛛䜙᭩䛝㎸䜐
• ㏣グ:
䝣䜯䜲䝹䛾ᮎᑿ䛻㏣ຍ䛷᭩䛝㎸䜐
Python
ධ㛛
157
160. Pickel
Python
ධ㛛
160
yuichi$
python
data
=
[hello,
world,
1,
2,
3]
import
pickle
f
=
open(dump.txt,
w)
pickle.dump(data,
f)
f.close()
exit()
(lp0
S'hello'
p1
aS'world'
p2
aI1
aI2
aI3
a.
$
python
f
=
open(dump.txt)
import
pickle
data
=
pickle.load(f)
print(data)
['hello',
'world',
1,
2,
3]
dump.txt
162. 䝟䝇
• OSୖ䛾䝣䜯䜲䝹䜔䝕䜱䝺䜽䝖䝸䛾ᡤᅾᆅ䜢♧䛩
Python
ධ㛛
162
/Users/yuichi/Documents/python.pptx
/
Users/
yuichi/
Documents/
python.pptx
etc/
var/
Shared/
Desktop/
Pictures/
java.pptx
VM/
163. ⤯ᑐ䝟䝇䛸┦ᑐ䝟䝇
• ⤯ᑐ䝟䝇:
䝹䞊䝖䛛䜙㎺䜛䝟䝇
• ┦ᑐ䝟䝇:
⌧ᅾ䛾⮬ศ䛾⨨䛛䜙㎺䜛䝟䝇
– ./
:
⮬ศ䛜䛔䜛䝕䜱䝺䜽䝖䝸
– ../
:
⮬ศ䛾ୖ䛾㝵ᒙ䛾䝕䜱䝺䜽䝖䝸
Python
ධ㛛
163
/
Users/
yuichi/
Documents/
python.pptx
etc/
var/
Shared/
Desktop/
test.txt
java.pptx
VM/
/Users/yuichi/test.txt
../test.txt
164. 䝟䝇䛾ྲྀᚓ
• ⌧ᅾ䛾䜹䝺䞁䝖䝕䜱䝺䜽䝖䝸䜢ྲྀᚓ:
os.getcwd()
• 䝕䜱䝺䜽䝖䝸䛾⛣ື:
os.chdir(⛣ືඛ䛾䝟䝇)
• ⤯ᑐ䝟䝇䛾ྲྀᚓ:
os.path.abspath(path)
• OS㠀౫Ꮡ䛾䝟䝇䛾ྲྀᚓ᪉ἲ㻌os.path.join(TUPLE)
Python
ධ㛛
164
yuichi$
ls
|
grep
Documents
Documents
yuichi$
python
import
os
os.getcwd()
'/Users/yuichi'
os.path.abspath(Documents)
'/Users/yuichi/Documents'
os.path.join(/,dir1,dir2,file1)
'/dir1/dir2/file1'
165. 䝟䝇䛻㛵䛩䜛㛵ᩘ
• 䝣䜯䜲䝹㻌or
䝕䜱䝺䜽䝖䝸䛾Ꮡᅾ☜ㄆ:
os.path.exists(䝟䝇)
• 䝕䜱䝺䜽䝖䝸䛛:
os.path.isdir(䝟䝇)
• 䝣䜯䜲䝹䛛:
os.path.isfile(䝟䝇)
Python
ධ㛛
165
166. 䝟䝇䛾᧯స㛵ᩘ
Python
ධ㛛
166
os.path.exists(/Users/yuichi)
True
os.path.isfile(/Users/yuichi)
False
os.listdir(./)
['dir1',
'file1']
os.mkdir(dir2)
os.rmdir(dir2)
167. 䝕䜱䝺䜽䝖䝸䛾᧯స㛵ᩘ
• 䝕䜱䝺䜽䝖䝸䛾సᡂ:
os.mkdir(䝕䜱䝺䜽䝖䝸䛾䝟䝇)
• 䝕䜱䝺䜽䝖䝸䛾๐㝖:
os.rmdir(䝕䜱䝺䜽䝖䝸䛾䝟䝇)
• 䝕䜱䝺䜽䝖䝸䛾୰㌟୍ぴ:
os.listdir(䝟䝇)
• 䝣䜯䜲䝹䚸䝕䜱䝺䜽䝖䝸䛾๐㝖:
os.remove(䝟䝇)
• 䝕䜱䝺䜽䝖䝸䛾ᖐⓗ๐㝖:
os.removedirs(䝟䝇)
Python
ධ㛛
167
169. 䝅䜵䝹䝇䜽䝸䝥䝖
• 䝥䝻䜾䝷䝭䞁䜾:
C
䜔
Java
䛾䜘䛖䛺䝅䜵䝹䜢ព㆑䛧䛺
䛔䝇䝍䜲䝹
• 䝅䜵䝹䝇䜽䝸䝥䝖:
䝅䜵䝹⮬య䜢᧯స䛩䜛䝥䝻䜾䝷䝭䞁
䜾䝇䝍䜲䝹
Python
ධ㛛
169
import
os
currentDir
=
os.getcwd()
files
=
os.listdir(currentDir)
for
fname
in
files:
print(fname)
import
commands
files
=
commands.getoutput(ls).split()
for
fname
in
files:
print(fname)
㏻ᖖ䛾䝥䝻䜾䝷䝭䞁䜾䝇䝍䜲䝹
䝅䜵䝹䝇䜽䝸䝥䝖䛾䝇䝍䜲䝹
171. 䝁䝬䞁䝗䛾䜃ฟ䛧
Python
ධ㛛
171
• os.system(䝁䝬䞁䝗)
:
ฟຊ䛜せ䛺ሙྜ
• commands.getoutput(䝁䝬䞁䝗)
:
ฟຊ䛜ᚲせ䛺ሙྜ
commands.getoutput(ls).split(n)
['CONFIG_FILE',
'Cisco
Mac
Support.webloc',
'Desktop',
'Documents',
'Downloads',
'Dropbox',
'Library',
'MATERIAL',
'Movies',
'Music',
'Pictures',
'Public',
'SR',
'STP-‐BA-‐Dispute_Japan-‐
RSVT.pptx',
'VM',
'appProperces',
'bingo.py',
'bingo.pyc',
'dump.txt',
'file.txt',
'file2.txt',
'get-‐fpath-‐info.py',
'mki-‐fp-‐
capture.zip',
'tcpdump',
'tcpdump.zip',
'test',
'unctled
folder']
172. command.getoutput()
Python
ධ㛛
172
import
commands
result
=
commands.getoutput(ping
-‐c
5
cisco.com)
lines
=
result.split(n)
for
line
in
lines:
print(line)
PING
cisco.com
(72.163.4.161):
56
data
bytes
64
bytes
from
72.163.4.161:
icmp_seq=0
7l=239
cme=195.865
ms
64
bytes
from
72.163.4.161:
icmp_seq=1
7l=239
cme=200.497
ms
64
bytes
from
72.163.4.161:
icmp_seq=2
7l=239
cme=197.125
ms
64
bytes
from
72.163.4.161:
icmp_seq=3
7l=239
cme=197.620
ms
64
bytes
from
72.163.4.161:
icmp_seq=4
7l=239
cme=197.553
ms
-‐-‐-‐
cisco.com
ping
stacsccs
-‐-‐-‐
5
packets
transmi7ed,
5
packets
received,
0.0%
packet
loss
round-‐trip
min/avg/max/stddev
=
195.865/197.732/200.497/1.519
ms
173. exping
䛾ᐇ
• 」ᩘ䛾ᐄඛ䛾ping฿㐩⋡䜢 ᐃ
Python
ධ㛛
173
import
commands
def
ping(dest):
result
=
commands.getoutput(ping
-‐c
5
{}.format(dest))
lines
=
result.split(n)
length
=
len(lines)
packetLoss
=
lines[length
-‐2].split()[6]
r7
=
lines[length
-‐1].split()[3].split(/)[1]
return
(dest,
packetLoss,
r7)
dests
=
[cisco.com,
google.com,
yahoo.com]
for
dest
in
dests:
print(ping(dest))
('cisco.com',
'0.0%',
'196.756')
('google.com',
'0.0%',
'13.317')
('yahoo.com',
'0.0%',
'262.060')
174. Linux䝩䝇䝖ୖ䛷䛾ping
• ≉ᐃIP䜰䝗䝺䝇䛾䝩䝇䝖㛫䛾䜏㏻ಙ䛷䛝䛺䛔
• ㇟Ⓨ⏕☜❧䛿㻌1/16
⛬ᗘ
VLAN
X
VLAN
Y
Nexus5500
Primary
Nexus5500
Secondary
Python
ධ㛛
174
Nexus2000
FEX
L2
Switch
Source
Dest
VPC(VSS)
䝩䝇䝖50ྎ
䝩䝇䝖50ྎ
50
x
50
-‐
2500
flow
177. ₇⩦
• ᮍᡂ䛾䝻䜾ᢳฟ䝥䝻䜾䝷䝮䜢ᡂ䛥䛫䜛
• 䝞䜾䛿3⟠ᡤ䛻䛒䜛
yuichi$
python
log.py
-‐f
log.log
-‐s
2014
Jan
28
12:30:50
-‐e
2014
Jan
29
16:06:15
-‐k
port-‐channel
-‐f
:
Python
ධ㛛
177
䝣䜯䜲䝹ྡ
-‐s
:
䝇䝍䞊䝖้
-‐e
:
⤊้
-‐k
:
䜻䞊䝽䞊䝗
dhcp-‐10-‐141-‐56-‐250:Documents
yuichi$
python
log.py
-‐f
log.log
-‐s
2014
Jan
28
12:30:50
-‐e
2014
Jan
29
16:06:15
-‐k
port-‐channel
2014
Jan
29
12:14:20
N6K-‐2
%ISIS_FABRICPATH-‐5-‐ADJCHANGE:
isis_fabricpath-‐default
[5150]
P2P
adj
L1
n7kb-‐MKI-‐FP
over
port-‐channel50
-‐
DOWN
(New)
on
MT-‐0
2014
Jan
29
12:14:20
N6K-‐2
%ISIS_FABRICPATH-‐5-‐ADJCHANGE:
isis_fabricpath-‐default
[5150]
P2P
adj
L1
n7kb-‐MKI-‐FP
over
port-‐channel50
-‐
INIT
on
MT-‐0
2014
Jan
29
12:14:20
N6K-‐2
%ISIS_FABRICPATH-‐5-‐ADJCHANGE:
isis_fabricpath-‐default
[5150]
P2P
adj
L1
n7kb-‐MKI-‐FP
over
port-‐channel50
-‐
UP
on
MT-‐0
2014
Jan
29
12:24:58
N6K-‐2
%ISIS_FABRICPATH-‐5-‐ADJCHANGE:
isis_fabricpath-‐default
[5150]
P2P
adj
L1
n7kb-‐MKI-‐FP
over
port-‐channel50
-‐
DOWN
(Delete
All)
on
MT-‐0
2014
Jan
29
12:27:01
N6K-‐2
%ISIS_FABRICPATH-‐5-‐ADJCHANGE:
isis_fabricpath-‐default
[5150]
P2P
adj
L1
n7kb-‐MKI-‐FP
over
port-‐channel50
-‐
DOWN
(New)
on
MT-‐0
2014
Jan
29
12:27:01
N6K-‐2
%ISIS_FABRICPATH-‐5-‐ADJCHANGE:
isis_fabricpath-‐default
[5150]
P2P
adj
L1
n7kb-‐MKI-‐FP
over
port-‐channel50
-‐
INIT
on
MT-‐0
2014
Jan
29
12:27:01
N6K-‐2
%ISIS_FABRICPATH-‐5-‐ADJCHANGE:
isis_fabricpath-‐default
[5150]
P2P
adj
L1
n7kb-‐MKI-‐FP
over
port-‐channel50
-‐
UP
on
MT-‐0
178. 䝁䞊䝗(䝞䜾䛿2⟠ᡤ)
Python
ධ㛛
178
import
sys,
os
def
getTimeString(line):
return
line[0:20]
def
parseTime(string):
monthDict
=
{Jan:1,
Feb:2,
Mar:3,
Apr:4,
May:5,
Jun:6,
Jul:7,
Aug:8,
Sep:9,
Oct:10,
Nov:11,
Dec:12}
d1
=
string.split(
)
d2
=
d1[3].split(:)
return
(int(d1[0]),
monthDict[d1[1]],
int(d1[2]),
int(d2[0]),
int(d2[1]),
int(d2[2]))
def
printFile(fname,
start,
end,
keyword):
if(not
os.path.isfile(fname)):
print(File
{}
isn't
exist.
exit.format(fname))
sys.exit()
f
=
open(fname)
for
line
in
f.readlines():
line
=
line.rstrip()
t
=
parseTime(getTimeString(line))
within
=
(start
=
t)
and
(t
=
end)
contains
=
keyword
in
line
if(within
and
contains):
print(line)
䝁䝬䞁䝗ᘬᩘ䛾ึᮇ್
fname
=
start
=
1900
Jan
1
00:00:00
end
=
2100
Jan
1
00:00:00
keyword
=
for
index
in
range(len(sys.argv)):
arg
=
sys.argv[index]
if(arg
==
-‐f):
fname
=
sys.argv[index
+
1]
elif(arg
==
-‐s):
start
=
sys.argv[index
+
1]
elif(arg
==
-‐k):
keyword
=
sys.argv[index
+
1]
if(fname
==
):
s1
=
syntax:
python
log.py
-‐f
FILENAME
-‐s
s2
=
START_TIME
-‐e
END_TIME
-‐k
KEYWORD
print(s1
+
s2)
print(START_TIME,
END_TIME,
KEYWORD
are
opcon.)
else:
printFile(fname,
start,
end,
keyword)
䝻䜾䛾୍⾜䛛䜙㛫䛾ᩥᏐิ䜢ᢳฟ
ᢳฟ䛧䛯ᩥᏐิ䜢ẚ㍑ྍ⬟䛺䝍䝥䝹䛻ኚ
᮲௳䛻䝬䝑䝏䛧䛯⾜䜢printฟຊ
䝁䝬䞁䝗ᘬᩘ䜢ㄞ䜏ྲྀ䜛
䝣䜯䜲䝹ྡ䛜䛘䜙䜜䛶䛔䛯䜙䝥䝻䜾䝷䝮䜢ᐇ⾜
179. ₇⩦
Python
ධ㛛
179
Ⓨᒎ⦅
䜻䞊䝽䞊䝗䜢ṇつ⾲⌧䛷ᣦᐃ䛷䛝䜛䜘䛖䛻䛩䜛
ṇつ⾲⌧䛻䝬䝑䝏䛧䛯ሙྜ䛾䜏⾲♧䜢⾜䛖
䜸䝥䝅䝵䞁
-‐r
䛻⥆䛡䛶ṇつ⾲⌧䜢ᣦᐃ
180. ₇⩦
• 䝷䝪䛾Linux(10.71.224.172)䛻䝻䜾䜲䞁(guest,
c1sco123)䛧䚸௨ୗ䛾䝇䜽䝸䝥䝖䜢సᡂ䛧ᐇ⾜䛩䜛
• 䝣䜯䜲䝹ྡ䛿
cecid.py
䛸䛩䜛
Python
ධ㛛
180
௨ୗ䛾ᶵჾ䛾㛤䛔䛶䛔䜛䝫䞊䝖୍ぴ䜢ྲྀᚓ䛩䜛
-‐
rws1
(1.0.0.1)
-‐
gateway
(1.0.0.100)
-‐
linux(
1.110.120.173)
-‐
esxi
(
10.71.224.170)
-‐
Nexus7000
(1.110.8.1)
181. ⏝䛩䜛䝁䝬䞁䝗
Python
ධ㛛
181
yuichi$
ssh
-‐l
guest
10.71.224.172
pass:
c1sco123
[guest@fedora172
~]$
nmap
127.0.0.1
Starcng
Nmap
6.01
(
h7p://nmap.org
)
at
2014-‐02-‐08
13:05
EST
Nmap
scan
report
for
fedora172.localdomain
(127.0.0.1)
Host
is
up
(0.0016s
latency).
Not
shown:
995
closed
ports
PORT
STATE
SERVICE
22/tcp
open
ssh
23/tcp
open
telnet
25/tcp
open
smtp
111/tcp
open
rpcbind
631/tcp
open
ipp
182. ⾲♧ᙧᘧ
Python
ධ㛛
182
䜰䝗䝺䝇1
TCP:
xxx,
yyy,
zzz,
...
UDP:
xxx,
yyy,
zzz,
...
䜰䝗䝺䝇2
TCP:
xxx,
yyy,
zzz,
...
UDP:
xxx,
yyy,
zzz,
...
...
䜰䝗䝺䝇3
TCP:
xxx,
yyy,
zzz,
...
UDP:
xxx,
yyy,
zzz,
...
183. ḟᅇண࿌
• 䜸䝤䝆䜵䜽䝖ᣦྥ
• 䜽䝷䝇
• 䜰䝹䝂䝸䝈䝮
• pexpect
䛻䜘䜛Ciscoᶵჾ䛾䝥䝻䜾䝷䝮᧯స
Python
ධ㛛
183
185. Python
ධ㛛
Learning
to
Program
For
Cisco
Network
Engineers
Day
3/4
Japan
TAC
DC
Team.
Yuichi
Ito
186. Agenda
Day
3
• 䜽䝷䝇䛾ᴫᛕ
• 䜽䝷䝇䛾సᡂ
• ₇⩦
• 䝗䝷䜽䜶䛾ᐇ䛷Ꮫ䜆䜸䝤䝆䜵䜽䝖ᣦྥ
• ₇⩦1-‐3
• pexpect
䛻䜘䜛
Cisco
ᶵჾ䛾᧯సἲ
• ₇⩦
Python
ධ㛛
186
192. ே㛫䛾ᛮ⪃᪉ἲ
• 䛂ㄡ䛜ఱ䜢䛩䜛䛛䛃䛜㔜せ
• ㄡ䛻䛹䛖䛔䛖䛂䝯䝑䝉䞊䝆䛃䜢㏦䛳䛯䜙䚸䛹䛖䛔䛖䛂⤖
ᯝ䛃䛜ᚓ䜙䜜䜛䛛
Python
ධ㛛
[ෆ㒊ฎ⌮]
䜢䛩䜛
192
[䝯䝑䝉䞊䝆]
䛣䛾䜢䛧䛶䛟䛰䛥䛔
[⤖ᯝ]
ୖྖ
ᡂᯝ≀䛿䛣䜜䛷䛩䚹
㒊ୗ
194. 㛵ᩘ㻌vs
䝯䝋䝑䝗
• 㛵ᩘ:
䜸䝤䝆䜵䜽䝖䜢䛂ᘬᩘ䛸䛧䛶䛃䛖
• 䝯䝋䝑䝗:
䜸䝤䝆䜵䜽䝖䛂䛛䜙䛃ฎ⌮䜢䜃ฟ䛩
Python
ධ㛛
194
string
=
hello
world
python
#
㛵ᩘ
length
=
len(string)
#
䝯䝋䝑䝗
words
=
string.split()
ᩥᏐิ䛾ฎ⌮
195. 㛵ᩘ㻌vs
䝯䝋䝑䝗
• 㛵ᩘ:
䝕䞊䝍䛸ฎ⌮䛾⤖䜃䛴䛝䛜ᙅ䛔
• 䝯䝋䝑䝗:
䝕䞊䝍䛸ฎ⌮䛾⤖䜃䛴䛝䛜ᙉ䛔
㛵ᩘ
䝯䝋䝑䝗
Python
ධ㛛
195
len(
)
string.split()
ฎ⌮䛻䝕䞊䝍䜢䛘䜛
䝕䞊䝍䛻ฎ⌮䜢䛥䛫䜛
len
䛿ఱ䛻䛷䜒䛘䜛
split
䛿
string
䛻䛧䛛䛘䛺䛔
197. ฎ⌮䚸ሗ䛾㞃ⶸ
• ෆ㒊䛾⣽䛛䛔ᣲື䛿⪃䛘䛪≧ែ䛾䜏䜢ព㆑䛩䜛
䝕䞊䝍䜢HDD䛻᭩䛝㎸䜏䛯䛔
(1)
Block
N
䛻᭩䛝㎸䜏
䝇䝖䝺䞊䝆䜸䝤䝆䜵䜽䝖
᭩䛝㎸䜏ฎ⌮
(1)Block
N
䛾Disk
䜢㑅ᢥ
(2)Block
N
䛾䝉䜽䝍䜢ᣦᐃ
(3)᭩䛝㎸䜏䜢⾜䛺䛖
䝴䞊䝄䜰䝥䝸䜿䞊䝅䝵䞁䛾
(ᑓ㛛ᐙ䛜䝥䝻䜾䝷䝮䜢సᡂ)
䜸䝤䝆䜵䜽䝖
(䝇䝖䝺䞊䝆䜢䛖䛰䛡)
䈜
⌧ᅾ䛾䝦䝑䝗⨨䛺䛹䛿Ẽ䛻䛧䛺䛔
198. 䜎䛸䜑
• 䜸䝤䝆䜵䜽䝖ᣦྥ䛾䝁䞁䝉䝥䝖
– 䛂ㄡ䛜ఱ䜢䛩䜛䛛䛃
– 䛂ㄡ䛜ㄡ䛸䛹䛖༠ຊ䛩䜛䛛䛃
– 䛂」㞧䛺ฎ⌮䚸䝕䞊䝍䛿እ㒊䛻ぢ䛫䛺䛔䛃
• 䝁䞊䝗䛾⛛ᗎ
– ᶒ㝈䜢ᣢ䛯䛺䛔䜒䛾䛿᧯స䛜䛷䛝䛺䛔
Python
ධ㛛
198
200. 䜽䝷䝇
• 䜸䝤䝆䜵䜽䝖䛾✀㢮
• 䜽䝷䝇䛿ᒓᛶ䛸䛧䛶䝕䞊䝍䛸ฎ⌮䜢ᣢ䛴
Python
ධ㛛
200
ᒓᛶ
[䝕䞊䝍]
-‐
䜺䝋䝸䞁䛾㔞
[ฎ⌮]
-‐
㉮䜛
-‐
Ṇ䜎䜛
-‐
᭤䛜䜛
201. 䜲䞁䝇䝍䞁䝇
• 䜽䝷䝇⮬య䛷ฎ⌮䛩䜛䛾䛷䛿䛺䛟䚸䜽䝷䝇䛛䜙స䜛䜲
䞁䝇䝍䞁䝇䛷ฎ⌮䜢䛩䜛
• 㒊ୗ䛸䛔䛖ᴫᛕ(䜽䝷䝇)䛷䛿䛺䛟㒊ୗ䛾䖣䖣(䜲䞁䝇䝍
䞁䝇)䛜䜢䛩䜛
Python
ධ㛛
[ෆ㒊ฎ⌮]
䜢䛩䜛
201
[䝯䝑䝉䞊䝆]
䛣䛾䜢䛧䛶䛟䛰䛥䛔
[⤖ᯝ]
䜽䝷䝇:
ୖྖ
ᡂᯝ≀䛿䛣䜜䛷䛩䚹
䜲䞁䝇䝍䞁䝇:
BOB
䜽䝷䝇:
㒊ୗ
䜲䞁䝇䝍䞁䝇:
TOM
202. 䜽䝷䝇䛸䜲䞁䝇䝍䞁䝇䛾㛵ಀ
• 䜽䝷䝇:
䜲䞁䝇䝍䞁䝇䜢స䜛䛯䜑䛾㞮ᙧ
• 䜲䞁䝇䝍䞁䝇:
䜽䝷䝇䛛䜙స䜙䜜䜛䜸䝤䝆䜵䜽䝖
• ᆺ(䜽䝷䝇)
䛸䛭䛾್(䜲䞁䝇䝍䞁䝇)䛸䛔䛖⌮ゎ䛷OK
Python
ධ㛛
202
䜽䝷䝇
䜲䞁䝇䝍䞁䝇
䜲䞁䝇䝍䞁䝇
ᆺ(Class)
String
್(Instance)
Hello
Python,
Hello
Cisco
205. 䜽䝷䝇䛾ᐉゝ
• ௨ୗ䛾せ௳䜢‶䛯䛩䜽䝷䝇䜢స䜛
Python
ධ㛛
205
䜽䝷䝇:
MyClass
ᒓᛶ:
䜲䞁䝇䝍䞁䝇ኚᩘ
string:
ಖᣢ䛩䜛ᩥᏐิ
ᒓᛶ:
䝯䝋䝑䝗
set_string:
string䜢䝉䝑䝖
get_string:
string䜢ྲྀᚓ
double:
string䜢⧞䜚㏉䛩
䝕䞊䝍䛸䛧䛶ᩥᏐิ䜢ෆ㒊䛻ᣢ䛴
䛭䛾ᩥᏐิ䜢タᐃ䛩䜛䝯䝋䝑䝗
䛭䛾ᩥᏐิ䜢ྲྀᚓ䛩䜛䝯䝋䝑䝗
ᩥᏐิ䜢䛂ᩥᏐิ+ᩥᏐิ䛃䛻䛩䜛䝯䝋䝑䝗
206. 䜽䝷䝇䛾ᐉゝ
• 䜽䝷䝇䛾ᐉゝ䛿
class
䜽䝷䝇ྡ:
• 䝯䝋䝑䝗䛾ᐉゝ:
➨୍ᘬᩘ䛜㻌self
䛸䛧䛶ᐃ⩏
• ᒓᛶ䜈䛾䜰䜽䝉䝇䛿㻌self.ᒓᛶ㻌䛸䛩䜛
Python
ධ㛛
206
class
MyClass:
string
=
def
set_string(self,
string):
self.string
=
string
def
get_string(self):
return
self.string
def
double(self):
self.string
*=
2
class
䛾ᐉゝ
䝯䝋䝑䝗䛾ᐉゝ
➨୍ᘬᩘ䜢
self
䛸䛩䜛䛾䛿
python
䛾䝹䞊䝹
class
䛜ಖᣢ䛩䜛䝕䞊䝍䛾ᐉゝ
ᒓᛶ䜈䛾䜰䜽䝉䝇
self.ᒓᛶ㻌䛸䛩䜛
(䛭䛖䛧䛺䛔䛸㛵ᩘ䛰䛡䛾䝻䞊䜹䝹ኚᩘ䛸䛺䜛)
207. 䜲䞁䝇䝍䞁䝇䛾⏝
• 䜽䝷䝇ྡ()
䛷䜲䞁䝇䝍䞁䝇
• 䝯䝋䝑䝗䜢䜃ฟ䛩㝿䛿➨୍ᘬᩘ(self)䛿ᣦᐃ䛧䛺䛔
Python
ධ㛛
207
class
MyClass:
string
=
def
set_string(self,
string):
self.string
=
string
def
get_string(self):
return
self.string
def
double(self):
self.string
*=
2
#
䜲䞁䝇䝍䞁䝇
mc
=
MyClass()
#
䝯䝋䝑䝗䜃ฟ䛧
mc.set_string(hello
)
print(mc.get_string())
hello
mc.double()
print(mc.get_string())
hello
hello
208. ₇⩦
• class
Counter
䜢సᡂ
• ෆ㒊䛻䜹䜴䞁䝍䜢ᣢ䛴䚹ึᮇ್䛿1
• get_value
䝯䝋䝑䝗䛷⌧ᅾ䛾䜹䜴䞁䝍್䜢㏉䛩
• count_up
䝯䝋䝑䝗䛷⌧ᅾ䛾䜹䜴䞁䝍್䜢
+1
䛩䜛
• clear_counter
䝯䝋䝑䝗䛷䜹䜴䞁䝍䜢1䛻ᡠ䛩
Python
ධ㛛
208
209. 䝁䞁䝇䝖䝷䜽䝍䛾⏝
• 䝁䞁䝇䝖䝷䜽䝍:
䜲䞁䝇䝍䞁䝇సᡂ䛻䜃ฟ䛥䜜䜛䝯䝋䝑䝗
• 䝁䞁䝇䝖䝷䜽䝍䛾ᘬᩘ䛿䜲䞁䝇䝍䞁䝇సᡂ䛻ᣦᐃ
Python
ධ㛛
209
class
MyClass:
string
=
def
__init__(self,
string):
print(__init__
is
called)
self.string
=
string
def
set_string(self,
string):
self.string
=
string
def
get_string(self):
return
self.string
def
double(self):
self.string
*=
2
#
䜲䞁䝇䝍䞁䝇
mc
=
MyClass(python
)
__init__
is
called
#
䝯䝋䝑䝗䜃ฟ䛧
print(mc.get_string())
python
210. ₇⩦
• class
Counter
䜢ᨵⰋ
• ෆ㒊䛻䜹䜴䞁䝍䜢ᣢ䛴䚹ึᮇ್䛿䝁䞁䝇䝖䝷䜽䝍䛷ᣦᐃ
• clear_counter
䝯䝋䝑䝗䛷䜹䜴䞁䝍䜢ึᮇ್䛻ᡠ䛩
Python
ධ㛛
210
211. ⿵㊊)ືⓗ䛺䝯䞁䝞ኚᩘ
• ືⓗ䛻䝯䞁䝞せ⣲䜢㏣ຍ䛷䛝䜛
• Java䛸䛿␗䛺䜛䛾䛷せὀព!!
Python
ධ㛛
211
class
MyClass:
def
func(self):
print(func)
mc
=
MyClass()
mc.a
=
Hello
World
mc.a
'Hello
World'
ᐃ⩏䛥䜜䛶䛔䛺䛔
䝯䞁䝞ኚᩘ
a
䛻௦ධ
䝯䞁䝞ኚᩘ
a
䛿
ᐃ⩏䛥䜜䛶䛔䛺䛔
212. 䜽䝷䝇䝃䞁䝥䝹
Python
ධ㛛
212
#
bingo.py
import
random
class
BingoMachine:
ballList
=
[]
def
__init__(self,
min,
max):
self.ballList
=
range(min,
max
+
1)
def
getBall(self):
if(len(self.ballList)
==
0):
return
-‐1
index
=
int(random.uniform(0,
len(self.ballList)))
return
self.ballList.pop(index)
#
ᐇ⾜⤖ᯝ
from
bingo
import
*
b
=
BingoMachine(1,5)
b.getBall()
1
b.getBall()
5
b.getBall()
2
b.getBall()
3
b.getBall()
4
b.getBall()
-‐1
䝡䞁䝂䝬䝅䞊䞁
ᩘᏐ㻌n
–
m
䛾㛫䛾ᩘᏐ䜢䝷䞁䝎䝮䛻㏉䛩
୍ᗘ㏉䛧䛯್䛿㏉䛥䛺䛔
213. 䜽䝷䝇䜎䛸䜑1
• 䝯䝋䝑䝗䛾➨୍ᘬᩘ䛿⮬ศ⮬㌟䛾䜸䝤䝆䜵䜽䝖
• 䝯䞁䝞ኚᩘ䜔䝯䝋䝑䝗䜢䜆䛻䛿䛣䛾䜸䝤䝆䜵䜽䝖䛾ᣦᐃ䛜ᚲせ
䝯䞁䝞ኚᩘ䜔䝯䝋䝑䝗䜢
䜃ฟ䛧䛶䛔䜛
Python
ධ㛛
213
class
MyClass:
var
=
0
def
method1(self):
self.var
=
1
print(method1)
def
method2(self):
print(self.var)
self.method1()
print(method2)
䝯䝋䝑䝗ᐃ⩏䛾➨୍ᘬᩘ䛜
self
䛻䛺䛳䛶䛔䜛
self.ྡ๓㻌䛸䛧䛶
䝯䝋䝑䝗䜃ฟ䛧䛿ᐃ⩏䛾➨୍ᘬᩘ䛿㣕䜀䛩
214. 䜽䝷䝇䜎䛸䜑2
• 䜲䞁䝇䝍䞁䝇:䚷䜽䝷䝇ྡ(䝁䞁䝇䝖䝷䜽䝍䛻Ώ䛩ᘬᩘ)
• 䝁䞁䝇䝖䝷䜽䝍:
Python
ධ㛛
214
__init__
class
MyClass2:
var
=
0
def
__init__(self,
var):
self.var
=
var
def
method(self,
var):
print(str(self.var)
+
+
str(var))
print(method)
m2
=
MyClass2(5)
m2.method(8)
-‐-‐
5
8
method
䛸䛔䛖䝯䝋䝑䝗ྡ
216. ₇⩦䛾┠ⓗ
Python
ධ㛛
216
• 䛝䛺䝥䝻䜾䝷䝮䛾సᡂ᪉ἲ䜢Ꮫ䜆
– 」ᩘ䛾䜽䝷䝇䛾㐃ᦠ
– 䛹䛾䜘䛖䛻䛧䛶䝁䞊䝗䜢ᗈ䛢䛶䛔䛟䛛
– 㢟ᮦ䛿䝗䝷䜽䜶1
218. AA∧䝗䝷䝂䞁䜽䜶䝇䝖(ᡂᅗ)
๓ᚋᕥྑ䛻ື䛟
䛯䛰䛧䚸䝬䝑䝥䛾እ䛻䛿ฟ䛺䛔
⏫ே䛻ヰ䛧䛛䛡䜛
ྥ䛔䛶䛔䜛ྥ䛝䛷䜰䜲䝁䞁䛜ኚ䜟䜛
Python
⏫ே
ධ㛛
218
a:Left,
s:Right,
w:Up,
x:Down
d:Talk,
Ctrl-‐C:Exit
+-‐-‐-‐-‐-‐-‐-‐-‐+
|
|
|
|
|
B
|
|
|
|
M|
|
|
|
|
|
P
|
+-‐-‐-‐-‐-‐-‐-‐-‐+
#######################
Hello
I'm
Bukiya
#######################
ேබ
ேබ䛻ᛂ⟅䛩䜛
䝯䝑䝉䞊䝆ḍ
䝬䝑䝥
220. 䜽䝷䝇⏫ே
Python
ධ㛛
220
䜽䝷䝇:
⏫ே
䝯䞁䝞ኚᩘ
xᗙᶆ
yᗙᶆ
እぢ䛾✀㢮
䝉䝸䝣
䝯䝋䝑䝗:
respond:
ேබ䛻ᛂ⟅䛩䜛
እぢ
B:
Ṋჾᒇ
M:
ၟே
P:
⚄∗
221. 䜽䝷䝇⏫ே䛾䜲䞁䝇䝍䞁䝇
Python
ධ㛛
221
䜲䞁䝇䝍䞁䝇㻌⏫ேA
䝯䞁䝞ኚᩘ
x:
8
y:
4
እぢ:
⏨A
䝉䝸䝣:
䛣䜣䛻䛱䛿
䝯䝋䝑䝗:
respond:
ேබ䛻ᛂ⟅䛩䜛
䜲䞁䝇䝍䞁䝇㻌⏫ேB
䝯䞁䝞ኚᩘ
x:
4
y:
2
እぢ:
㨱ἲ䛔
䝉䝸䝣:
䛔䛔ኳẼ䛨䜓䛾䛖
䝯䝋䝑䝗:
respond:
ேබ䛻ᛂ⟅䛩䜛
222. ேබ
Python
ධ㛛
222
ேබ䛾䜰䜲䝁䞁
:
ᕥྥ䛝
:
ྑྥ䛝
^
:
ୖྥ䛝
V
:
ୗྥ䛝
䜽䝷䝇:
ேබ
䝯䞁䝞ኚᩘ
xᗙᶆ
yᗙᶆ
ྥ䛔䛶䛔䜛᪉ྥ
䝉䝸䝣
䝯䝋䝑䝗:
run:
䜻䞊ධຊ䜢ᚅ䛴(ᶆ‽ධຊ䛾↓㝈䝹䞊䝥)
move:
䜻䞊ධຊ䛷ୖୗᕥྑ䛻ື䛟
talk:
ྥ䛔䛶䛔䜛᪉ྥ䛾⏫ே䛸ヰ䛩㻌
223. 䝬䝑䝥
Python
ධ㛛
223
䜽䝷䝇:
Map
䝯䞁䝞ኚᩘ
-‐
ேබ䛾䜲䞁䝇䝍䞁䝇
-‐
⏫ே䛯䛱䛾䜲䞁䝇䝍䞁䝇
-‐
䝬䝑䝥ሗ
䝯䝋䝑䝗:
-‐
render:
䝬䝑䝥䜢᭩䛝ฟ䛩
-‐
ேබ䛸⏫ே䜢⟶⌮䛩䜛䝯䝋䝑䝗⩌
+-‐-‐-‐-‐-‐-‐-‐-‐+
|
|
|
|
|
B
|
|
|
|
P
|
+-‐-‐-‐-‐-‐-‐-‐-‐+
እᯟ
ேබ
⏫ே(」ᩘ)
225. 䝬䝑䝥ᥥ⏬䛾య䛾ὶ䜜
③
④
Python
ධ㛛
225
Class:
Field
ኚᩘ:
hero
ኚᩘ:
peopleMap
ኚᩘ:
ᆅᙧሗ
renderMap()
ᥥ⏬(render)
ᆅᙧሗ
+
ຬ⪅
+
⏫ே㐩
Class:
Hero
move()
talk()
getXY()
getImage()
keyInputEvent()
Class:䚷People
respond()
getImage()
ධຊ(keyInput)
x,yᗙᶆ䜔ぢ䛯┠
䛺䛹䛾ሗ䜢ྲྀᚓ
䝕䜱䝇䝥䝺䜲䛻ฟຊ
①
②
+-‐-‐-‐-‐-‐-‐-‐-‐+
|
|
|
|
|
B
|
|
|
|
P
|
+-‐-‐-‐-‐-‐-‐-‐-‐+
227. 䝬䝑䝥
• ఱ䜒䛺䛔䝬䝑䝥䜢ᥥ⏬
• ⦪䛸ᶓ䛾㛗䛥䜢ᣦᐃྍ⬟
• ⾜(row)ᣦྥ䛷ᥥ⏬䛩䜛
227
+-‐-‐-‐-‐-‐-‐-‐-‐+
|
|
|
|
|
|
+-‐-‐-‐-‐-‐-‐-‐-‐+
4㝮䛿㻌䛂+䛃
yᗙᶆ0,
್᭱䛿㻌䛂–䛃
xᗙᶆ0,
್᭱䛿㻌䛂|䛃
䛭䜜௨እ䛿✵ⓑ
class
DQMap:
max_x
=
0
max_y
=
0
def
__init__(self,
max_xy):
(self.max_x,
self.max_y)
=
max_xy
def
render_map(self):
map_string_list
=
[]
for
y
in
range(self.max_y):
for
x
in
range(self.max_x):
if(y
==
0
or
y
==
self.max_y
-‐
1):
if(x
==
0
or
x
==
self.max_x
-‐
1):
map_string_list.append(+)
else:
map_string_list.append(-‐)
else:
if(x
==
0
or
x
==
self.max_x
-‐
1):
map_string_list.append(|)
else:
map_string_list.append(
)
map_string_list.append(n)
map_string
=
.join(map_string_list)
print(map_string.rstrip())
228. ேබ
• 䜻䞊ධຊ䛷ேබ䛾x,yᗙᶆ䛸䛂ྥ䛝䛃䜢䜰䝑䝥䝕䞊䝖䛩䜛
• Ctrl-‐C
䛷䝥䝻䜾䝷䝮䜢⤊䛩䜛
228
import
getch,
sys
class
Hero:
x
=
0
y
=
0
direccon
=
N
def
__init__(self,
x,
y):
self.x
=
x
self.y
=
y
self.direccon
=
N
def
run(self):
gc
=
getch.Getch()
while(True):
keycode
=
ord(gc())
self.move(keycode)
print(x:{},
y:{},
dir:{}.format(self.x,
self.y,
self.direccon))
if(keycode
==
3):
sys.exit()
def
move(self,
keycode):
if(keycode
==
97):
#Le
self.x
-‐=
1
self.direccon
=
W
elif(keycode
==
115):
#Right
self.x
+=
1
self.direccon
=
E
elif(keycode
==
119):
#Up
self.y
-‐=
1
self.direccon
=
N
elif(keycode
==
122):
#Down
self.y
+=
1
self.direccon
=
S
hero
=
Hero(10,10)
hero.run()
229. 䝬䝑䝥䛸ேබ(ㄢ㢟)
• 䝬䝑䝥䛾୰䛻ேබ䜢ᥥ⏬
• ྥ䛔䛶䛔䜛᪉ྥ䛷ேබ䛾䜰䜲䝁䞁䜢ኚ䛘䜛
• 䝬䝑䝥䛾⠊ᅖእ䛻ேබ䛜䜰䜽䝉䝇䛧䛺䛔
• 䝥䝻䜾䝷䝮䛾㉳Ⅼ䛿㻌main.py
229
ᐇ䛾䝠䞁䝖
DQMap:
-‐
DQMap
䛜
Hero
䛾䜲䞁䝇䝍䞁䝇䜢ᣢ䛴
-‐
ேබ䛸ྠ䛨㻌x,
y
ᗙᶆ䛾ሙྜ䛿ேබ䛾䜰䜲䝁䞁䜢⾲♧
(ேබ䛾䜲䞁䝇䝍䞁䝇䛛䜙䜰䜲䝁䞁䜢ྲྀᚓ)
Hero:
-‐
᪂䛧䛔ᗙᶆ䛜
Map
⠊ᅖෆ䛷䛒䜛ሙྜ䛰䛡䚸x,y
䜢䜰䝑䝥䝕䞊䝖
(⠊ᅖእ䜈䛾䜰䜽䝉䝇䛿㻌x,y
䜢䜰䝑䝥䝕䞊䝖䛧䛺䛔)
-‐
⾲♧䛩䜛ேබ䛾䜰䜲䝁䞁䛿ேබ䛾ྥ䛝䛷Ỵ䜎䜛
(ྥ䛝䛾ᛂ䛨䛯䜰䜲䝁䞁䜢㏉䛩䝯䝋䝑䝗䜢ᐇ)
231. ⏫ே䛾ᐇ
Python
ධ㛛
231
class
People:
icon
=
x
=
0
y
=
0
comment
=
def
__init__(self,
icon,
x,
y,
comment):
self.icon
=
icon
self.x
=
x
self.y
=
y
self.comment
=
comment
def
get_icon(self):
return
self.icon
def
get_xy(self):
return
(self.x,
self.y)
def
get_response(self):
return
self.comment
⏫ே䛿
-‐
䜰䜲䝁䞁(୍ᩥᏐ)
-‐
x,y
-‐
䝉䝸䝣
䜢䝁䞁䝇䝖䝷䜽䝍䛷タᐃ
䛂䝀䝑䝍䞊䝯䝋䝑䝗䛃䜢ᐇ
䚷䈜
䝟䝷䝯䞊䝍䜢ྲྀᚓ䛩䜛䛯䜑䛾䝯䝋䝑䝗
232. 䝬䝑䝥䛸⏫ே䛾ᐇ
Python
ධ㛛
232
class
DQMap:
...
people_map
=
{}
def
__init__(self,
max_xy,
hero_xy,
people_paramList):
....
for
params
in
people_paramList:
(icon,
x,
y,
comment)
=
params
self.people_map[(x,y)]
=
people.People(icon,
x,
y,
comment)
def
render_map(self,
comment):
map_string_list
=
[]
(hx,
hy)
=
self.hero.get_xy()
for
y
in
range(self.max_y):
for
x
in
range(self.max_x):
if((x,y)
==
(hx,
hy)):
map_string_list.append(self.hero.get_icon())
elif(self.people_map.has_key((x,
y))):
p
=
self.people_map[(x,
y)]
map_string_list.append(p.get_icon())
䝁䞁䝇䝖䝷䜽䝍䛷⏫ே䛾
ሗ䜢䝸䝇䝖ᙧᘧ䛷ᣦᐃ
⏫ே䛾䜲䞁䝇䝍䞁䝇䜢సᡂ
(x,y)䜢䜻䞊䛻䛧㎡᭩䛷⏫ே䜢⟶⌮
ᥥ⏬䛾㝿䛻䚸x,
y
䛻⏫ே䛜䛔䜛䛛☜ㄆ
䜒䛧䛔䜜䜀⏫ே䜢ᥥ⏬䛩䜛
235. ヰᶵ⬟䛾ᐇ
• ேබ䛜ྥ䛔䛶䛔䜛᪉ྥ䛻⏫ே䛜䛔䜛䛛☜ㄆ
• ⏫ே䛜䛔䜜䜀⏫ே䛾䝺䝇䝫䞁䝇䜢ྲྀᚓ䛧⾲♧
• 䛔䛺䛡䜜䜀ㄡ䜒䛔䛺䛔᪨䛾䝯䝑䝉䞊䝆䜢⾲♧
• DQMap䛾䝯䝋䝑䝗render_map䛻䝁䝯䞁䝖䜢Ώ䛧䛶ᥥ⏬(ᐇ῭)
Python
ධ㛛
235
+-‐-‐-‐-‐-‐-‐-‐-‐+
|
|
|
|
|
B
|
|
|
|
M|
|
|
|
|
|
P
|
+-‐-‐-‐-‐-‐-‐-‐-‐+
#######################
Hello
I'm
Merchant
#######################
+-‐-‐-‐-‐-‐-‐-‐-‐+
|
|
|
|
|
B
|
|
^
|
|
M|
|
|
|
|
|
P
|
+-‐-‐-‐-‐-‐-‐-‐-‐+
#######################
No
one
exists
on
that
way
#######################
237. __name__
• __name__䚷
• __name__
䛜㻌__main__
䛾䛸䛝䛿㉳Ⅼ
Python
import
uclity
def
func():
print(func
on
main.py)
print(global
on
main.py)
func()
uclity.func()
if
__name__
==
__main__:
print(__name__
is
__main__
on
main.py)
ධ㛛
237
def
func():
print(func()
on
uclity.py)
print(global
on
uclity.py)
func()
if
__name__
==
__main__:
print(__name__
is
__main__
on
uclity.py)
main.py
uclity.py
238. __name__
Python
ධ㛛
238
def
func():
print(func()
on
uclity.py)
print(global
on
uclity.py)
func()
if
__name__
==
__main__:
True
print(__name__
is
__main__
on
uclity.py)
#
python
uclity.py
global
on
uclity.py
func()
on
uclity.py
__name__
is
__main__
on
uclity.py
ᐇ⾜⤖ᯝ
239. __name__
Python
ධ㛛
239
import
uclity
def
func():
print(func
on
main.py)
print(global
on
main.py)
func()
uclity.func()
if
__name__
==
__main__:
print(__name__
is
__main__
on
main.py)
def
func():
print(func()
on
uclity.py)
print(global
on
uclity.py)
func()
if
__name__
==
__main__:
print(__name__
is
__main__
on
uclity.py)
main.py
True
uclity.py
False
#python
main.py
global
on
uclity.py
func()
on
uclity.py
global
on
main.py
func
on
main.py
func()
on
uclity.py
__name__
is
__main__
on
main.py
ᐇ⾜⤖ᯝ
240. 䝁䝢䞊䛸ཧ↷
• 䝁䝢䞊:
␗䛺䜛䜸䝤䝆䜵䜽䝖
• ཧ↷:
ྠ୍䜸䝤䝆䜵䜽䝖䜢」ᩘ⟠ᡤ䛷⏝
• ཧ↷䛻ᑐ䛧䛶䛿స⏝䛾ὀព䛜ᚲせ
Python
ධ㛛
240
a
=
[1,2,3,4]
b
=
a
b.append(5)
a
[1,
2,
3,
4,
5]
242. Pexpect
• EXPECT
䜢
Python
䛷䛖䛯䜑䛾䝟䝑䜿䞊䝆
• Cisco䛾ᶵჾ䜔Linux䛸䛔䛳䛯CLI᧯స䜢ᚲせ䛸䛩䜛ᶵჾ䜢
䝥䝻䜾䝷䝭䞁䜾䛷つᐃ㏻䜚䛻ື䛛䛩䛯䜑䛻⏝
Python
ධ㛛
242
Python
Script
243. Expect
• Linux䛺䛹䛾䜲䞁䝍䝷䜽䝔䜱䝤䛺CLI䜢ไᚚ䛩䜛
䛯䜑䛾䝥䝻䜾䝷䝮
• pexpect
䛾ඖ䛻䛺䛳䛯䝥䝻䜾䝷䝮
• Teraterm
Macro
䛻ఝ䛶䛔䜛
Python
ධ㛛
243
The
Expect
Home
Page
h7p://expect.sourceforge.net/
Expect
Script
244. Expect
䛾ືస
• spawn:
䝉䝑䝅䝵䞁䜢㛤ጞ
• expect:
ᮇᚅ䛩䜛ᶆ‽ධຊ(from
䝸䝰䞊䝖)䜢ᚅ䛴
• send:
䝸䝰䞊䝖䛻ฟຊ䜢㏦䜛
Python
ධ㛛
244
dhcp-‐10-‐141-‐56-‐250:~
yuichi$
telnet
-‐l
yuiito
rws1
Trying
10.71.231.245...
Connected
to
rws1.cisco.com.
Escape
character
is
'^]'.
Password:
cisco123
Last
login:
Thu
Jan
23
14:53:37
from
dhcp-‐10-‐141-‐56-‐250.cisco.com
unknown
terminal
xterm-‐256color
unknown
terminal
xterm-‐256color
[yuiito@rws1
yuiito]$
echo
hello
test
[yuiito@rws1
yuiito]$
ls
snmpget.sh
test
㟷䛜䝸䝰䞊䝖䛛䜙䛾ᶆ‽ධຊ
㉥䛜䝸䝰䞊䝖䜈䛾ᶆ‽ฟຊ
245. expect
䝃䞁䝥䝹
• Linux
䜈䛾䝻䜾䜲䞁䛸᧯స
Python
ධ㛛
245
Password:
cisco123
yuiito$
echo
hello
test
login-‐to-‐rws1.exp
#!
/usr/bin/expect
spawn
telnet
-‐l
yuiito
rws1
expect
Password:
send
cisco123n
expect
yuiito]$
send
touch
hellon
interact
䜃ฟ䛧
yuichi$
expect
login-‐to-‐rws1.exp
246. Pexpect
• pip
䜢䛳䛶䜲䞁䝇䝖䞊䝹
• 䝁䞊䝗㻌pexpect.py
ྠ୍䝣䜷䝹䝎䛻㓄⨨(⏝)
• import
pexpect
Python
ධ㛛
246
247. Pexpect
䛾సἲ
• spawn
session
=
pexpect.spawn(telnet➼䛾䝁䝬䞁䝗)
• expect
session.expect(ධຊ䛥䜜䜛䛾䜢ᚅ䛴ᩥᏐิ)
• sendline
session.sendline(㏦ಙ䛩䜛ᩥᏐิ䚹⮬ື䛷ᨵ⾜
䝁䞊䝗䛜䛴䛟)
Python
ධ㛛
247
248. pexpect
• 䝬䝑䝏䛧䛯ᩥᏐิᙜ䜢ᢳฟ
Python
ධ㛛
248
session.aer:
䝬䝑䝏䛧䛯ᩥᏐิ
session.before:
䝬䝑䝏䛧䛯ᩥᏐิ䜎䛷䛾ᩥᏐิ
session.buffer:
249. pexpect
䛾䝃䞁䝥䝹
• rws1
䛻䝻䜾䜲䞁䛧䛶䝣䜯䜲䝹㻌pexpect
䜢సᡂ
Python
ධ㛛
249
import
pexpect
child
=
pexpect.spawn(telnet
-‐l
yuiito
rws1)
child.expect(Password:)
child.sendline(cisco123)
child.expect(yuiito]$)
child.sendline(touch
pexpect)
250. pexpext䛾䝃䞁䝥䝹
• Nexus䛾タᐃ䜢䝣䜯䜲䝹ྡ䜢᪥䛻䛧䛶FTP䝃䞊䝞䛻ಖᏑ
Python
ධ㛛
250
import
pexpect,
datecme
def
getLines(string):
lines
=
lines
=
[x.strip()
for
x
in
string.split(n)]
return
filter(lambda
x:
x!=
'',
lines)
def
getHostName(exp):
exp.sendline(show
hostname)
exp.expect(#)
return
getLines(exp.before)[1]
def
getToDay():
d
=
datecme.datecme.today()
return
{}_{}_{}-‐{}_{}_{}.format(d.year,
d.month,
d.day,
d.hour,
d.minute,
d.second)
def
makeFileName(exp):
hostName
=
getHostName(exp)
today
=
getToDay()
return
{}-‐{}.conf.format(hostName,
today)
def
login(exp,
password):
exp.expect(Password:)
exp.sendline(password)
exp.expect(#)
exp.sendline(terminal
length
0)
exp.expect(#)
def
saveFile(exp,
saveFrom,
saveTo,
vrf,
username,
password):
command
=
copy
{}
{}.format(saveFrom,
saveTo)
exp.sendline(command)
exp.expect(Enter
vrf)
exp.sendline(vrf)
exp.expect(Enter
username:)
exp.sendline(username)
exp.expect(Password:)
exp.sendline(password)
exp.expect(#)
child
=
pexpect.spawn(telnet
-‐l
admin
10.71.156.229)
login(child,
cisco)
saveTo
=
p://10.71.224.115/yuiito/
+
makeFileName(child)
saveFile(child,
running-‐config,
saveTo,
management,
anonymous,
)
䝣䜯䜲䝹ྡ䜔䝁䝬䞁䝗䛾⏕ᡂ䛜
python
௵䛫
child.close()
252. ₇⩦
• Nexus䛾⌧ᅾ䛾䝞䞊䝆䝵䞁䜢ྲྀᚓ䛩䜛䝥䝻䜾
䝷䝮䜢సᡂ䛩䜛
Python
ධ㛛
Nexus
ip:
1.110.8.1
user-‐name:
admin
pass:
cisco
252
㋃䜏ྎ
ip:
10.71.224.172
user-‐name:
guest
pass:
c1sco123
254. Python
ධ㛛
Learning
to
Program
For
Cisco
Network
Engineers
Day
4/4
Japan
TAC
DC
Team.
Yuichi
Ito
255. Agenda
Day4
• Python䛾䝥䝻䜾䝷䝮㓄ᕸᡭἲ
• Tkinter
(GUI)
• Tkinter
䛷Ꮫ䜆⥅ᢎ
• እฎ⌮
• NETWORK䝥䝻䜾䝷䝭䞁䜾
• Pexpect
Python
ධ㛛
255
257. 䝋䞊䝇䝁䞊䝗䛾㓄ᕸ
• 㛗ᡤ:
㓄ᕸ䛜⡆༢
• ▷ᡤ:
䝷䜲䝤䝷䝸䛻౫Ꮡ䚹䝁䞊䝗䛜ぢ䛘
Python
ධ㛛
257
python
䝋䞊䝇
䝁䞊䝗
python
䝋䞊䝇
䝁䞊䝗
python
䝋䞊䝇
䝁䞊䝗
㛤Ⓨ⪅
⏝⪅
⏝⪅
258. 䝞䜲䝘䝸䛧䛶ᐇ⾜⎔ቃ䛤䛸㓄ᕸ
• 㛗ᡤ:
⏝⪅䛜䛔䜔䛩䛔䚹
• ▷ᡤ:
సᡂ䛜㞴䛧䛔
.exe
.app
Python
ධ㛛
258
python
䝋䞊䝇
䝁䞊䝗
㛤Ⓨ⪅
⏝⪅(Windows)
⏝⪅(Mac)
260. 㛵ᩘ䛸䝟䝷䝯䞊䝍
• 㛵ᩘ(䝯䝋䝑䝗)䛻䛿䝕䝣䜷䝹䝖್䜢䛘䜛
• 䜃ฟ䛧ഃ䛷ᘬᩘ䜢ዲ䛝䛺㡰ᗎ䛷ᣦᐃྍ⬟
Python
ධ㛛
260
def
func(a,
b=python,
c=cisco):
print(hello
{}
{}
{}.format(a,b,c))
func(world,
PYTHON,
CISCO)
䚷#
=
hello
world
PYTHON
CISCO
func(world)
#
=
hello
world
python
cisco
func(b=world,
a=python)
#
=
hello
python
world
cisco
ᘬᩘ
b,
c
䛻䛿䝕䝣䜷䝹䝖್䜢ᣦᐃ
ᘬᩘ㻌a,b,c
䛻䛶௵ព䛾್䜢タᐃ
ᘬᩘ
a
䛾䜏ᣦᐃ䛧䛶䜃ฟ䛧
௵ព䛾㡰ᗎ䛷ᘬᩘ䜢ᣦᐃ
262. GUI
䛾Ꮫ⩦┠ⓗ
• 䜰䝥䝸䜿䞊䝅䝵䞁䛻GUI୍⯡ⓗ
• ぢ䛯┠䛻ศ䛛䜚䜔䛩䛔䛾䛷୰⣭⪅ྥ䛝
• ⥅ᢎ䛾ᴫᛕ䛺䛹䜢⌮ゎ䛩䜛䛾䛻᭱㐺䛺㢟ᮦ
Python
ධ㛛
262
263. Tkinter
• Python
䛾ᶆ‽ⓗ䛺GUI䝷䜲䝤䝷䝸
• 䜲䞁䝇䝖䞊䝹䛺䛧䛻⏝ྍ⬟
• 䛾GUI䝷䜲䝤䝷䝸(Qt,
wxpython)䛸ᴫᛕ䛜ఝ䛶䛔䜛
Python
ධ㛛
263
264. Hello
Tkinter
Python
ධ㛛
264
import
Tkinter
as
tk
font=(Helevecca,
32,
bold)
label
=
tk.Label(text=Hello
Cisco,
font=font,
bg=red)
label.pack()
label.mainloop()
265. Hello
Tkinter
• GUI
సᡂ䛾ὶ䜜
– Widget䛸䜀䜜䜛䝟䞊䝒䜢ึᮇ
– 䝟䞊䝒䜢㓄⨨
– GUI䜰䝥䝸䜿䞊䝅䝵䞁䜢㉳ື
Python
ධ㛛
265
Widget
䛿GUI䛾㒊ရ䚹
䝪䝍䞁䜔䝔䜻䝇䝖䝪䝑䜽䝇䛺䛹䛾䛶䛾䝟䞊䝒䛿Widget
266. Hello
Tkinter
䛾ゎㄝ
Python
ධ㛛
266
import
Tkinter
as
tk
font=(Helevecca,
32,
bold)
label
=
tk.Label(text=Hello
Cisco,
font=font,
bg=red)
label.pack()
label.mainloop()
Tkinter
䛸䛔䛖䝰䝆䝳䞊䝹䜢䜲䞁䝫䞊䝖䚹䜃ฟ䛧䛿㻌tk
䛸䛔䛖ู⛠䜢䛖
Widget
䛾㻌Label
䜢సᡂ䛩䜛䚹ᘬᩘ䛸䛧䛶ᩥᏐิ䛸䝣䜷䞁䝖䚸⫼ᬒⰍ䜢ᣦᐃ
pack()
䝯䝋䝑䝗䛷㓄⨨
mainloop()
䝯䝋䝑䝗䜢䜃ฟ䛩䛣䛸䛷䜰䝥䝸䜿䞊䝅䝵䞁䜢ᐇ⾜
267. ₇⩦1
• 䝷䝧䝹䛻⾲♧䛩䜛ᩥᏐิ䜢
Hello
Python
䛻ኚ᭦
• 䝣䜷䞁䝖䝃䜲䝈䜢
44
䛻䛩䜛
• ⫼ᬒⰍ䜢
blue
䛻䛩䜛
Ⓨᒎ
• 䜰䞁䝎䞊䝷䜲䞁䜢䛡䜛
• ᖜ䜢50䛻䛩䜛
Python
ධ㛛
267
An
IntroducYon
to
Tkinter
(Work
in
Progress)
h7p://eot.org/tkinterbook/
268. Frame
• Widget
䜢㓄⨨䛩䜛䛯䜑䛾
Widget
• Frame
in
Frame
䜒ྍ⬟(」㞧䛺ᵓᡂ䜢స䜜䜛)
Python
ධ㛛
268
Frame1
Frame2
Frame3
widget
1
widget
2
widget
3
widget
4
widget
5
widget
6
Frame1
|
|-‐-‐
Frame
2
|
|
-‐-‐
Widget1
|
|
-‐-‐
Widget2
|
|
-‐-‐
Widget3
|
|
-‐-‐
Widget4
|
|
-‐-‐
Frame3
|
-‐-‐
Widget5
|
-‐-‐
Widget5
269. Hello
Frame
Python
ධ㛛
269
import
Tkinter
as
tk
frame
=
tk.Frame()
font=(Helevecca,
32,
bold)
label1
=
tk.Label(frame,
text=Hello
Cisco,
font=font,
bg=red)
label2
=
tk.Label(frame,
text=Hello
Python,
font=font,
bg=blue)
label1.pack()
label2.pack()
frame.pack()
frame.mainloop()
270. Hello
Frame
䛾ゎㄝ
• Frame
䛾䜲䞁䝇䝍䞁䝇䜢సᡂ
• Frame
䛾Ꮚせ⣲(୰䛻䛒䜛)䛿➨୍ᘬᩘ䜢
Frame
䛾
䜲䞁䝇䝍䞁䝇䛻䛩䜛
• 䝖䝑䝥䝺䝧䝹䛾
widget
䛷㻌mainloop()
䜢䜃ฟ䛩
Python
ධ㛛
270
import
Tkinter
as
tk
frame
=
tk.Frame()
font=(Helevecca,
32,
bold)
label1
=
tk.Label(frame,
text=Hello
Cisco,
font=font,
bg=red)
label2
=
tk.Label(frame,
text=Hello
Python,
font=font,
bg=blue)
label1.pack()
label2.pack()
frame.pack()
frame.mainloop()
271. ₇⩦
• 3䛴䛾䝷䝧䝹䛜⾲♧䛥䜜䜛䜘䛖䛻ᨵ㐀䛩䜛
• 3␒┠䛾⫼ᬒⰍ䛿
green
Python
ධ㛛
271
• Hello
Cisco,
Hello
World
䛾ᶓ䛾✵ⓑ䜢ᇙ䜑䜛
• Hint:
widget䛾
pack
䛻
fill=tk.X
䜢ᣦᐃ
Ⓨᒎ⦅
272. Frame
䛾⦪ᶓ
• Frame䛜୪䜆䛾䛿䝕䝣䜷䝹䝖⦪᪉ྥ
• Ꮚせ⣲䛾
pack()
䝯䝋䝑䝗䛾ᘬᩘ䛻᪉ྥ䜢ᣦᐃ
• ᶓ᪉ྥ䛿
side=LEFT
䜢ᣦᐃ
272
import
Tkinter
as
tk
frame
=
tk.Frame()
font=(Helevecca,
32,
bold)
label1
=
tk.Label(frame,
text=Hello
Cisco,
font=font,
bg=red)
label2
=
tk.Label(frame,
text=Hello
Python,
font=font,
bg=blue)
label1.pack(side=tk.LEFT)
label2.pack(side=tk.LEFT)
frame.pack()
frame.mainloop()
273. ₇⩦
• Frame
䛻
Frame
䜢ධ䜜䛶௨ୗ䛾䜴䜱䞁䝗䜴䜢
సᡂ䛩䜛
Python
ධ㛛
273
274. ₇⩦䛾ゎ⟅
Python
ධ㛛
274
import
Tkinter
as
tk
frame1
=
tk.Frame()
frame2
=
tk.Frame()
font=(Helevecca,
32,
bold)
label1
=
tk.Label(frame2,
text=Hello
Cisco,
font=font,
bg=red)
label2
=
tk.Label(frame2,
text=Hello
Python,
font=font,
bg=blue)
label1.pack(side=tk.LEFT)
label2.pack(side=tk.LEFT)
label3
=
tk.Label(frame1,
text=Hello
Wodld,
font=font,
bg=green)
label3.pack()
frame2.pack()
label3.pack()
frame1.pack()
frame1.mainloop()
276. ⥅ᢎ
Python
ධ㛛
276
• 䜽䝷䝇䛜ู䛾䜽䝷䝇䛾≉ᛶ䜢ᘬ䛝⥅䛠䛯䜑䛾ᶵ⬟
• ඖ䛾䜽䝷䝇䜢䝇䞊䝟䞊䜽䝷䝇(ぶ䜽䝷䝇)䛸䜆
• ὴ⏕䛥䜜䛯䜽䝷䝇䜢䝃䝤䜽䝷䝇(Ꮚ䜽䝷䝇)䛸䜆
ぶ䜽䝷䝇(㌴)
Ꮚ䜽䝷䝇(䝆䞊䝥)
Ꮚ䜽䝷䝇(䝇䞊䝟䞊䜹䞊)
277. TKinter
䛾⥅ᢎ
• Label
䜔
Bu7on
䛿⥅ᢎ䛷సᡂ䛥䜜䛶䛔䜛
• ⥅ᢎඖ䛷᰿ᮏ䛾ᥥ⏬ฎ⌮䛺䛹䜢ᐇ
• Label
䜔
Bu7on
䛿ᕪศ䛾䜏ᐇ
Python
ධ㛛
277
Widget
Bu7on
Hello
World
ᥥ⏬䛾⤌䜏䛾ᐇ
䝪䝍䞁≉᭷䛾ᶵ⬟䛾ᐇ
䝷䝧䝹≉᭷䛾ᶵ⬟䛾ᐇ
278. ⥅ᢎ䛾䝯䝸䝑䝖
• Ꮚ䜽䝷䝇䛾ᐇ䜢༢⣧䛷䛝䜛
• 䜽䝷䝇⮬య䜒䛭䜜䜢䛖ഃ䜒䝁䞊䝗䛾ಖᏲᛶ䛜ቑ䛩
䛾䝇䞊䝟䞊䜽䝷䝇䛜
䛾Ꮚせ⣲䛸䛺䜛䛣䛸䛜䛷䛝䜛
Python
ධ㛛
278
Label
䛸
Bu7on
Frame
Label
䜒
Bu7on
䜒
Frame
䛾
Ꮚせ⣲䛸䛺䜛䛣䛸䛜䛷䛝䜛
279. Tkinter
䛾⮬స䜽䝷䝇
• ⥅ᢎ䛧䛶䜽䝷䝇䜢స䜛䛸䚸Frame䛻䛔䜜䜛䛣䛸
䛜䛷䛝䜛䝟䞊䝒䛜స䜜䜛
Python
ධ㛛
279
Frame
Frame
⥅ᢎ䛧䛶䛔䛺䛔ሙྜ
Frame
䛻䛔䜜䜙䜜䛺䛔
⥅ᢎ䛧䛶䛔䜛ሙྜ
Frame
䛻䛔䜜䜙䜜䜛
282. 䜽䝷䝇⥅ᢎ䛾సἲ
䜽䝷䝇䛾ᐉゝ
class
Ꮚ䜽䝷䝇(ぶ䜽䝷䝇):
Ꮚ䜽䝷䝇䛾䝁䞁䝇䝖䝷䜽䝍䛷ぶ䜽䝷
䝇䛾䝁䞁䝇䝖䝷䜽䝍䜢䜃ฟ䛩
ぶ䜽䝷䝇䛾䝁䞁䝇䝖䝷䜽䝍䛾ᘬᩘ
䛿䛶ᣦᐃ䚹
Ꮚ䜽䝷䝇䛿ぶ䜽䝷䝇䛾ኚᩘ䛸䝯
䝋䝑䝗䛻䜰䜽䝉䝇ྍ⬟
(ୖ᭩䛝䜒ྍ⬟)
Python
ධ㛛
282
class
Parent:
text
=
def
__init__(self,
text):
print(Parent.__init__())
self.text
=
text
def
get_text(self):
return
self.text
class
Child(Parent):
def
__init__(self,
text):
print(Child.__init__())
Parent.__init__(self,
text)
def
double(self):
self.text
*=
2
283. ₇⩦
• 䜽䝷䝇
Counter
䜢⥅ᢎ䛧䛶
Counter2
䜢స䜛
• Counter2
䛻௨ୗ䛾䝯䝋䝑䝗䜢ᐇ䛩䜛
-‐
double:
⌧ᅾ䛾䜹䜴䞁䝍䞊䛾್䜢2ಸ䛩䜛
-‐
clear_counter:
䜹䜴䞁䝍䞊䜢ึᮇ䛩䜛
Python
ධ㛛
283
class
Counter:
value
=
-‐1
def
__init__(self,
value):
self.value
=
value
def
get_value(self):
return
self.value
def
count_up(self):
self.value
+=
1
284. Tkinter
䛾
Bu7on
• 䝪䝍䞁䜢ᢲ䛥䜜䛯㝿䛻≉ᐃ䛾㛵ᩘ(䝯䝋䝑䝗)䜢䜃ฟ䛩
• Bu7on(command=䛂䜃ฟ䛩㛵ᩘ(䝯䝋䝑䝗)ྡ䛃)
Python
ධ㛛
284
import
Tkinter
as
tk
def
clicked():
print(clicked)
bu7on
=
tk.Bu7on(text=Click,
command=clicked)
bu7on.pack()
bu7on.mainloop()
clicked
click
䛩䜛
⾲♧䛥䜜䜛
285. ⥅ᢎ䜢䜟䛺䛔䜹䜴䞁䝍䞊䛾ᐇ
Python
ධ㛛
285
import
Tkinter
as
tk
class
Counter:
label
=
None
value
=
-‐1
def
clicked(self):
#
Click䛻䜀䜜䜛
self.value
+=
1
self.label.configure(text=self.getText())
def
getText(self):
#
⾲♧䛩䜛ᩥᏐ䜢సᡂ
return
Count:{}.format(self.value)
def
__init__(self,
value):
self.value
=
value
frame
=
tk.Frame()
font
=
(Helevecca,
32,
bold)
self.label
=
tk.Label(frame,
text=self.getText(),
font=font,
bg=red)
bu7on
=
tk.Bu7on(frame,
text=Click,
command=self.clicked)
self.label.pack()
bu7on.pack()
frame.pack()
frame.mainloop()
c
=
Counter(0)
286. ⥅ᢎ䜢䛖䜹䜴䞁䝍䛾ᐇ
Python
ධ㛛
286
import
Tkinter
as
tk
class
Counter(tk.Frame):
label
=
None
value
=
-‐1
def
clicked(self):
self.value
+=
1
self.label.configure(text=self.getText())
def
getText(self):
return
Count:{}.format(self.value)
def
__init__(self,
master=None,
value=0):
tk.Frame.__init__(self,
master)
self.value
=
value
font
=
(Helevecca,
32,
bold)
self.label
=
tk.Label(self,
text=self.getText(),
font=font,
bg=red)
bu7on
=
tk.Bu7on(self,
text=Click,
command=self.clicked)
self.label.pack()
bu7on.pack()
c
=
Counter(value=0)
c.pack()
c.mainloop()