Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

TouchDesigner で Python を使ってみよう!(1)

はじめに

TouchDesignerというビジュアルプログラミング環境を用いてPython入門、
およびTouchDesignerでどのようにPythonを使っていくかを書いていきたいと思います。


Pythonとは

文法を極力単純化してコードの可読性を高め、読みやすく、また書きやすくしてプログラマの作業性とコードの信頼性を高めることを重視してデザインされた、汎用の高水準言語である。

Wikipediaより

バージョン

Pythonはバージョン2系と3系が存在しますが、TouchDesignerはバージョン3系となっています。
 2018-09-18 23.30.02.png
ここで確認できます。


準備

TouchDesignerを起動し alt+t でテキストポートを開きます。
(黒いウィンドウ)
 2018-09-17 15.55.34.png

この回ではテキストポートでPythonの文法などを学んでいきます。
TouchDesignerでの使い方のみを学びたい方は(2)にお進みください。


基本文法


"Hello World"

まずは文字列を表示してみましょう!
実行文を記述してEnterキーを押すと、実行結果が次の行に表示されます。

>>> print("Hello World")
Hello World

 2018-09-18 23.23.25.png
こんな感じ
python >>> というのが行のはじめに出てきます。解説では>>>のみに省略いたします。
(テキストポートの場合のみ print すらも省略できてしまいます)


数値演算

数値演算をしていきます。

>>> print(3+5)
8
演算子 演算 例 
+ 加算 1+1 2
- 減算 5-3 2
* 乗算 2*3 6
/ 除算 9/2 4.5
// 除算(整数部のみ) 9//2 4
% 剰余 5%3 2
** べき乗 2**3 8

先に計算して欲しいものは () で囲います。


変数

変数とは値を格納しておく箱のようなものです。

>>> a = 1
>>> print(a)
1

値を更新することもできます

>>> print(a)
1
>>> a = 2
>>> print(a)
2

また、今の値に数値を足したりもできます

>>> a = 1
>>> a = a + 10
>>> print(a)
11

Pythonは動的型付け言語です
変数に型を指定しなくても動的に型が付けられます

型名
str "Hello World!" , "2"
int 2, 100
float 3.14, 0.01
bool True, False
list ["りんご", "みかん"], [2,3,5,7]
>>> print(type(1))
<class 'int'>
>>> print(type("1"))
<class 'str'>

このようにtype()でかっこの中にあるオブジェクトの型を確認することができます。


比較演算子

値の比較をするものになります
条件が一致した場合True, 不一致の場合Falseを返します

比較演算子 記述例 意味
== x == y xとyが等しい
!= x != y xとyが異なる
> x > y xがyより大きい
>= x >= y xがy以上
< x < y xがy未満
<= x <= y xがy以下
is x is y xとyのオブジェクトそのものの同一性を比較(省略)
>>> print(1==1)
True
>>> print(1!=1)
False

練習問題 1

  1. 数値11.0は同じかどうか調べよ
  2. 数値11.0の型が同じかどうかを調べよ

論理演算子

値を論理演算します
こちらも条件にあった場合True、不一致の場合Falseを

論理演算子 記述例 意味
or A or B A または B が真
and A and B A と B が真
not not A A の真偽値を反転
>>> A = True
>>> B = False

>>> print(A or B)
True
>>> print(A and B)
False
>>> print(not A)
false

条件分岐(if - else)

条件によって処理を変える時に用います

>>> a = 1
>>> if a > 0:
...     print(True)   #条件式がTrueの時に実行
... else:
...     print(False)  #条件式がFalseの時に実行
...
True

ここで、今までは一行で済んでいましたがコードが複数行になりました。
if文などは次に文が続くため、改行をしても即座に実行されません。
最後に空白の行を改行すると実行されます。


複合文

if文やfor文などの複数の文からなる処理グループです。
Pythonの最大の特徴は、「インデントの深さで複合文のブロック範囲を決定」することです。
他言語では括弧やbegin-endによる範囲指定を採用しているのに対して、この方式は特殊です。
複合文のキーワード(ifなど)の後にコロン( : )が付き、その後、同じ数の空白でインデントされた文がブロックとみなされます。
インデントは基本スペース4つを使うことが推奨されています。

a = 1
if a > 0:
    print(True)   #if文のブロック
else:
    print(False)  #else文のブロック

このようにブロックを入れ子にすることもできます

A = True
B = False

if A:
    if B:
        print("A:True, B:True")
    else:
        print("A:True, B:False")    #このブロックが実行される
else:
    if B:
        print("A:False, B:True")
    else:
        print("A:False, B:False")

繰り返し(for)

リストなどの要素が複数あるオブジェクトを順に取り出していく処理になります。

>>> for fruit in ["apple", "orange", "banana"]:
...    print(fruit)
...
apple
orange
banana
>>> for i in range(3):    
...    print(i)
...
0
1
2

range(x)は、0からx(整数値)までのリストを作ってくれます この例だと[0,1,2]

練習問題 2

  1. 1~10までの二乗の数を出力せよ
  2. 1~20までの奇数を出力せよ(ヒント ifと%(余り)を使います)

繰り返し(while)

while文は条件式がTrueの間ループ処理を続け、Falseになったところでループが終了します。

>>> x = 3
>>> while x > 0:
...    print(x)
...    x = x - 1

3
2
1

練習問題 3

  1. 上のforの問題をすべてwhileに書き換えなさい

モジュール

他のファイルからプログラムを再利用できるようにしたものを「モジュール」と言います。
自分で作るモジュールの他にもデフォルトで組み込まれている「組み込みモジュール」などがあります。
ここではデフォルトで組み込まれているモジュールを使っていきたいと思います。

今回使用するモジュールは math というモジュールになります。
使い方は簡単です。
プログラムのはじめに

import math

と記述するだけになります。

import math

>>> print(math.pi)
3.141592653589793
>>> print(math.cos(0))
1.0

またよく使うものに random モジュールというものがあります。

import random

>>> print(random.random())    #0.0~1.0の範囲のfloat型のランダムな値を返します
0.7607203658655518

>>> print(random.uniform(3.0, 10.0))    #任意の幅のランダムなfloat値を返す
7.411074375066043

>>> print(random.randint(10, 100))    #任意の幅のランダムな整数値を返す
66


ここまででPythonの基本文法を学びました!(他にも色々基礎的なことはありますが)
次はTouchDesignerでの活用方法を学びましょう!
TouchDesigner で Python を使ってみよう!(2) - Qiita


練習問題 答え

1

  1. print(1 == 1.0)
  2. print(type(1) == type(1.0))

2

1
for i in range(10):
    print((i+1)**2)
2
for i in range(20):
    if ((i+1)%2) == 1:
        print(i+1)

3

1
i = 1
while i <= 10:
    print(i**2)
    i = i + 1
2
i = 1
while i <= 20
    if (i%2) == 1:
        print(i)
    i = i + 1
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
3
Help us understand the problem. What are the problem?