More Related Content Similar to はじめてのPython (20) More from Katsumi Honda (18) はじめてのPython10. Pythonの基本 : 数値の演算
加算 : +
減算 : -
乗算 : *
除算 : /
余り : %
べき乗 : **
>>> a = 10
>>> b = 3
>>> a + b
13
>>> a - b
7
>>> a * b
30
>>> a / b
3
>>> a % b
1
>>> a ** b
1000
11. Pythonの基本 : 文字列
文字列は、' か “ で囲みます。
クォーテーションの前にuをつけるとUnicode文字列になります。
日本語の文字列を扱う時は、Unicode文字列を使うようにしておいたほ
うが問題が起こりにくいので、uをつけるようにしましょう。
長い文字列はクォーテーションを3つ繋げて囲むと便利です。
>>> fruit = 'apple'
>>> fruit = u'りんご'
>>> print(fruit)
りんご
>>> long_text = u'''今日は
... はじめてのPythonに
... 参加しています'''
>>> print(long_text)
今日は
はじめてのPythonに
参加しています
14. Pythonの基本 : 論理演算
真偽値の組み合わせて判断する時に、論理演算を行います。
and or not を使います。
>>> True and True
True
>>> True and False
False
>>> False and False
False
>>> True or True
True
>>> True or False
True
>>> False or False
False
>>> not True
False
>>> not False
True
15. Pythonの基礎 : 文字列の操作
>>> 'hello ' + 'world'
'hello world'
■連結
文字列と文字列を + で繋げられます
>>> 'hello' * 10
'hellohellohellohellohellohellohellohellohellohello'
■繰り返し
文字列に数字を掛けると、文字列を繰り返します
■フォーマット
%sや%d等を含んだフォーマット文字列に、%演算を行うと値を埋め込めます
>>> 'hello %dst %s' % (1, 'python')
'hello 1st python'
17. Pythonの基本 : リスト
>>> mylist = ['apple', 100]
>>> mylist[0]
'apple'
>>> mylist[1]
100
>>> mylist[2]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> mylist.append(True)
>>> mylist
['apple', 100, True]
1つのリストに色々な型の値を入れることができます。
リストの変数の後に [] で数字を指定すると、その場所の値が得られます
(この数字を添字といいます)
appendでリストに追加できます
18. Pythonの基本 : タプル
>>> mytuple = ('abc', 123)
>>> mytuple[0]
'abc'
>>> mytuple[1]
123
>>> mytuple[1] = 234
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
リストと同じように使えますが、変更だけできません。
19. Pythonの基本 : 辞書
>>> mydict = {'name': 'apple', 'price': 100, 1: True}
>>> mydict
{1: True, 'price': 100, 'name': 'apple'}
>>> mydict['name']
'apple'
>>> mydict[1]
True
キーには、文字列以外に数値など、使用出来ます。
が、文字列を使うことがほとんどです。
タプルもたまにキーに使うことがあります。
リストはキーには使えません。
>>> mydict[(1,1)] = 'red'
>>> mydict
{1: True, 'price': 100, 'name': 'apple', (1, 1): 'red'}
24. Pythonの基本 : 繰り返し
>>> for food in ['toriten', 'karaage', 'tatutaage']:
... print '%s : %d' % (food, len(food))
...
toriten : 7
karaage : 7
tatutaage : 9
任意のリストを順番に処理できます。任意のリストを順番に処理できます。
ここでは、それぞれの文字数を表示しています。
len()関数で、文字の長さや、リストの長さを取得できます。
26. Pythonの基本 : 関数
>>> def oita_check(food):
... if 'toriten' == food:
... return 'nice'
... elif 'karaage' == food:
... return 'so-so'
... else:
... return 'what?'
...
>>> oita_check('tatutaage')
'what?'
>>> oita_check('toriten')
'nice'
>>>
大分チェック関数を作ってみる
27. Pythonの基本 : モジュール
様々な機能がモジュールとして提供されています。
モジュールの機能を使う為には、 import で、モジュールをインポート
します。
>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2013, 4, 18, 15, 45, 32, 263188)
datetimeモジュールをインポートして、現在日時を取得しています。
datetime.datetimeというのが冗長ですが、
from モジュール名 import インポートするもの
という形式を使用することもできます
>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2013, 4, 18, 15, 51, 4, 803230)
28. Pythonの基本 : クラス
オブジェクト指向とかいうので出てくるクラスです。
class Food(object):
def __init__(self, name, price):
self.name = name
self.price = price
def how_match(self, gram):
print '%sの値段は%d円です' % (self.name,
self.price * gram / 100.0)
toriten = Food(u'とり天', 200)
toriten.how_match(150)
こんな感じで使います。
クラスの名前は、大文字で始めるのが一般的です。
クラス名(パラメータ...)で、オブジェクトが作られます
__init__関数は、オブジェクトが作られる時に呼ばれます
32. エディタでコードを書いてみる
#!/usr/bin/env python
# -*- coding: utf8 -*-
class Food(object):
def __init__(self, name, price):
self.name = name
self.price = price
def how_match(self, gram):
unit = gram / 100.0
print('%s : %d' % (self.name, self.price * unit))
if __name__ == '__main__':
karaage = Food('karaage', 200)
toriten = Food('toriten', 180)
karaage.how_match(200)
toriten.how_match(300)
38. import webapp2
template = u'''<!doctype html>
<html>
<head><title>ゲストブック</title></head>
<body>
<h1>ゲストブック</h1>
<form method="post">
<label>お名前<input type="text" name="name"></label><br>
<label>メッセージ<input type="text" name="message"></label><br>
<input type="submit" value="書き込む">
</form>
</body>
</html>
'''
class MainHandler(webapp2.RequestHandler):
def get(self):
self.response.write(template)
app = webapp2.WSGIApplication([
('/', MainHandler)
], debug=True)
41. import webapp2
template1 = u'''<!doctype html>
<html>
省略
<input type="submit" value="書き込む">
</form>'''
template2 = u'''</body>
</html>
'''
class MainHandler(webapp2.RequestHandler):
def get(self):
self.response.write(template1)
self.response.write(template2)
def post(self):
self.response.write(template1)
name = self.request.POST['name']
message = self.request.POST['message']
append = "%s : %s" % (name, message)
self.response.write(append)
self.response.write(template2)
42. import webapp2
template1 = u'''<!doctype html>
<html>
省略
<input type="submit" value="書き込む">
</form>'''
template2 = u'''</body>
</html>
'''
class MainHandler(webapp2.RequestHandler):
def get(self):
self.response.write(template1)
self.response.write(template2)
def post(self):
self.response.write(template1)
name = self.request.POST['name']
message = self.request.POST['message']
append = "%s : %s" % (name, message)
self.response.write(append)
self.response.write(template2)
43. 保存してみる
データを保存するためのクラスを定義します。
from google.appengine.ext import db
class Greeting(db.Model):
author = db.StringProperty()
message = db.StringProperty(multiline=True)
date = db.DateTimeProperty(auto_now_add=True)
postした時に、Greetingオブジェクトを保存するようにします
greeting = Greeting()
greeting.author = name
greeting.message = message
greeting.put()
46. def get(self):
self.render()
def post(self):
name = self.request.POST['name']
message = self.request.POST['message']
greeting = Greeting()
greeting.author = name
greeting.message = message
greeting.put()
self.render()
getとpostから、render関数を呼ぶように変更します。