def meiji():
year = 1900
input ('year>')
if year == 1868 :
print ("明治元年")
else:
if year == 1912 :
print ("大正元年")
else :
print ("明治",year-1867,"年")
>>> meiji()
year>1878
明治 33 年
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
求めるもの 西洋歴換算大正
def taisho():
year = input ('year>')
if int(year) == 1868 :
print ("明治元年")
elif 1869 <= int(year) <= 1911:
#明治の年号
print ("明治",int(year)-1867,"年")
elif 1912 == int(year):
print ("大正元年")
elif 1912 <= int(year) <= 1927:
print ("大正",int(year)-1912,"年")
>>> taisho()
year>1923
大正 11 年
求めるもの 同族会社判定
法人税法上の同族会社に該当するかどうかの判定構文は簡単ですが、
法 税法の正確な読み取りが必要。
def 同族判定():
print ('まず持株割合について質問します。')
第一順位 = input('第一順位の持株数>')
第二順位 = input('第二順位の持株数>')
第三順位 = input('第三順位の持株数>')
合計株数 = input('合計株数>')
持株数 = int(第一順位) + int(第二順位) + int(第三順位)
持株割合 = (持株数) / int(合計株数)
print (持株割合)
print('株主グループの議決権割合について質問します。')
第一議決権 = input('第一グループの議決権数>')
第二議決権 = input('第二グループの議決権数>')
第三議決権 = input('第三グループの議決権数>')
合計議決権 = input('合計議決権数>')
議決権数 = int(第一議決権) + int(第二議決権) + int(第三議決
権)
議決権割合 = int(議決権数) / int(合計議決権)
print(議決権割合)
if 持株割合 > 議決権割合:
判定基準 = 持株割合
if 判定基準 > 0.5 :
print('同族会社に該当します。')
else:
print('非同族会社です。')
else :
判定基準 = 議決権割合
if 判定基準 > 0.5 :
print('同族会社に該当します。')
else:
print('非同族会社です。')
>>> 同族判定()
まず持株割合について質問します。
第一順位の持株数>240
第二順位の持株数>160
第三順位の持株数>100
合計株数>1000
0.5
株主グループの議決権割合について質問します。
第一グループの議決権数>240
第二グループの議決権数>100
第三グループの議決権数>80
合計議決権数>500
0.84
同族会社に該当します。
-------------------------------
求めるもの.消費税の課税対象判定
print('輸入取引を除く消費税に関する質問です。')
print('yes no で答えてください')
q1 =input('国内取引ですか>')
q2 =input('事業者が事業として行った取引ですか')
q3 =input('対価を得て行った取引ですか:みなし譲渡等を含む')
q4 =input('資産の譲渡・貸付・役務の提供ですか')
q5 =input('非課税取引ですか')
q6 =input('免税取引ですか')
if q1=='no' or q2=='no' or q3=='no' or q4=='no':
print('不課税です。')
if q5=='yes':
print('非課税です')
if q6=='yes':
print('免税です。')
if q1=='yes' and q2=='yes' and q3=='yes' and q4=='yes' and q5=='no'
and q6 =='no':
print('課税です。')
-------------------------------
求めるもの 飲み物選択
def nomimono():
print( '飲み物を選んでください')
print( '1 コーヒー 2日本茶 3 ウーロン茶')
i=input ('品番を半角英数で入力してください>')
if int(i) == 1 :
print ('コーヒー')
elif int(i) == 2 :
print ('日本茶')
elif int(i) == 3 :
print( 'ウーロン茶')
else :
print ('ありません')
実行
>>> nomimono()
飲み物を選んでください
1 コーヒー 2日本茶 3 ウーロン茶
品番を半角英数で入力してください>1
コーヒー
>>> nomimono()
飲み物を選んでください
1 コーヒー 2日本茶 3 ウーロン茶
品番を半角英数で入力してください>2
日本茶
>>> nomimono()
飲み物を選んでください
1 コーヒー 2オレンジジュース 3 ウーロン茶
品番を半角英数で入力してください>3
ウーロン茶
飲み物を選んでください
1 コーヒー 2オレンジジュース 3 ウーロン茶
品番を半角英数で入力してください>5
ありません
-------------------------------
求めるもの 暗証番号
def ansho():
print ('暗証番号を入力してください')
i = input('暗証番号>')
if i == 'tt930' :
print( '金庫が開きました')
else :
print( '番号が違います。1')
print ('もう一度入力してください。')
i = input('暗証番号>')
if i == 'tt930' :
print( '金庫が開きました')
else :
print ('番号が違います。2')
print( 'もう一度入力してください。')
if i == 'tt930 ':
print( '金庫が開きました')
else :
print( '')
実行
>>> anshoban()
暗証番号を入力してください
暗証番号>tt9876
番号が違います。
もう一度入力してください。
暗証番号>tt930
金庫が開きました
-------------------------------
求めるもの 問答
>>>def ifq():
print('君の名前は?')
name = input('>')
if name == '戸張':
print(name , '君ようこそ!')
else:
print('さようなら')
>>> ifq()
君の名前は?
>戸張
戸張 君ようこそ!
>>> ifq()
君の名前は?
>山本
さようなら
求めるもの 10人の点数を入力して60点以上を合格とする。合
格・不合格の数を計算する。
>>> gokaku = 0 < 変数の初期化
>>> fugokaku = 0
>>> i = 0
>>> for i in range(10) : <繰り返し回数
tensu = input("点数>)" <ユーザ入力を促
す
if tensu < 60 : <条件分岐
fugokaku += 1 <連続和
elif tensu >= 60 :
gokaku += 1
>54 <ユーザ入力
>67
>78
>98
>45
>78
>36
>70
>59
>60
>>> print (gokaku) < 結果出力
6
>>> print (fugokaku)
4
求めるもの 昭和平成
year = 1950
if year >= 1989:
print (year,'=HEISEI',year - 1989,' nen')
elif year >= 1926:
print( year,'SHOWA ',year - 1925,' nen')
1950 SHOWA 25 nen
(4)for 文
繰り返し処理の1つであるfor文。
for 変数 in オブジェクト:
実行する処理1
実行する処理2
「for」文はシーケンス型のオブジェクトから要素を順に変数に代入し、要素の数だけ繰り返しを行う。文字列が指定された場合は文字を1文字ずつ変数に代入しながら繰り返しを行い、リスト型のオブジェクトを指定した場合はリストの要素を先頭から順に変数に代入しながら繰り返しを行う。オブジェクトに含まれる要素の数だけ繰り返しが行われる。
繰り返しが1回行われる度にブロック内の処理を実行。
シーケンス 順番で処理するデータ構造
for num in [4, 3, 12]:
print ("num = " + str(num))
print( "End")
num = 4
num = 3
num = 12
End
for num in [4, 3, 12]:
print ("num = " + str(num))
else:
print( "End")
num = 4
num = 3
num = 12
End
for文の終了時の処理(for...else)
「for」文はシーケンス型のオブジェクトを変数に代入しながら繰り返しを行うが、繰り返しが終了した時に実行される処理elseを記述できる。
for 変数 in オブジェクト:
実行する処理1
実行する処理2
else:
実行する処理1
実行する処理2
「while」文の場合と同じく「for」文が終了する時に「else」文が記述されていた場合は「else」文のブロック内の処理を実行。「else」文のブロックは実行された後で「for」文全体が終了。
上記ではリスト型のオブジェクト[4, 3, 12]から要素を順に取り出し繰り返し処理を行い、全ての要素を取り出し終わったら「else」文のブロック内の「print ("End"」)が実行される。
「while」文の場合と同じく、繰り返しの中で「break」文によって繰り返し処理が終了した場合には「else」文のブロック内の処理は実行されない。
リスト型のオブジェクト[4, 3, 12]は>>コンテナという。
for文とrange関数を使った指定回数の繰り返し
「for」文はではシーケンス型のオブジェクトから要素を取り出しながら繰り返し処理を行うが、指定した回数だけ繰り返しを行いたい場合にはrange関数を使って連続した数値の要素を持つリスト型のオブジェクトを作成利用。
for var in range(0, 10):
実行する処理1
実行する処理2
range関数は引数に指定した開始と終了の数値から連続する数値の値(終了の値は含まない)を要素として持つリスト型のオブジェクトを作成。
for var in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
実行する処理1
実行する処理2
繰り返し回数が多い場合にrange関数を使う。
sum = 0
for num in range(1, 11):
sum += num;
print( "sum = " + str(sum))
sum = 55 <実行結果
pythonのfor文は、cやpascalとすこし違う。
pascalのように常に等差級数を使って反復をかけたり、cのようにユーザ
に反復と停止条件を定義させたりするのではなく、あらゆるシーケンス(リ
ストや文字列)のアイテムに対し、そのシーケンスの順で反復をかける。次
のようになる。
繰り返し処理はコンピュータの能力を最大に発揮する処理。
重要なのは何度もやるというイメージ。
for文はリストなどを先頭の要素からひとつずつ取り出して順に処理してゆ
く。
>>> # 文字列を計算する
>>> a=['mitukosi','takasimaya','matuya']
>>> for x in a :
print(x,len(x)) lenで文字数を計算
mitukosi 8
takasimat 10
matuya 6
range()関数
数字の連なりに反復をかけるときは、ビルトイン関数range()が便
利。
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
与えられた終端値がリストにはいることはない。range(10)が生成
する10個のリストの値は、ちょうど長さ10のシーケンスの各アイ
テムへのインデックスになる。rangeは他の数字からはじめること
もできるし、増分(ステップ)を指定することもできる。
>>> list(range(5,10))
[5, 6, 7, 8, 9]
>>> list(range(0,10,3)) 3桁ごとの数
[0, 3, 6, 9]
>>> list(range(-10,-100,-30))
[-10, -40, -70]
シーケンスのインデックスに反復をかけたいときは、range()とlen()
を組み合わせる。
>>> a=['taro','had','a','little','toy']
>>> for i in range (len(a)):
print(i ,a[i])
0 taro
1 had
2 a
3 little
4 toy
break文とcontinue文、ループにおけるelse節
break文はそれを囲んだもっとも小さいforまたはwhile文を抜ける。
continue文はループの残りを飛ばして次回の反復に進める。
これらのループ文にelse節を加えられる。else節は、リストを使い果たした
り(for),条件式がfalseになることで(while)ループが終了した場合に実行
さ
れる。break文で終了した場合は実行されない。
繰り返し変数 for文に添えて変数名を記述する。事前に変数定義をしな
い。シーケンスの内容を自動的に変数に代入しながら繰り返し処理する。
下記のコードでは、{ word}が繰り返し変数。
>>> words = ["this" , "is", "a" ,"banana"]
>>> for word in words :
print(word)
this
is
a
banana
>>> numbers = [0,1,2,3,4,5]
>>> for number in numbers : numberが繰り返し
変数
print(number)
0
1
2
3
4
5
range()関数
>>> range(0,5)
>>> list(range(0,5))
[0, 1, 2, 3, 4]
>>> a=range(0,5)
>>> list(a)
[0, 1, 2, 3, 4]
parallel iterationについて
>>> names=["taro","hanako","jiro","hitomi"]
>>> ages=[18,32,26,30]
>>> for i in range(len(names)):
print(names[i], " is" , ages[i],"years old")
taro is 18 years old
hanako is 32 years old
jiro is 26 years old
hitomi is 30 years old
---------------------
zip : return a list of tupleについて
for ループでzip関数を使う。
二つのシーケンスに対して同時にループ処理を行う。
>>> b=zip(names,ages)
>>> list(b)
[('taro', 18), ('hanako', 32), ('jiro', 26), ('hitomi', 30)]
def f():
list_toh=[5349,5478,5344,4644,4968,6259]
<東北各県の一世帯あ
た
り納豆年間購入価額
list_sik=[3148,2991,2966,2457] <四国各県の一世帯
あた
り納豆年間購入価額
for val in list_toh : <val 繰り返し変数
print(val) <リストの内容を表
示
ave_toh=0.0
a=sum(list_toh) <リストの合計値を
計算
ave_toh =a /len(list_toh) <合計値を要素数
で割っ
て
平均値を算出
print("ave_toh=",ave_toh) <平均値を表示
for val in list_sik : <同様に四国各
県につい
て計算し、表示
する
print(val)
ave_sik=0.0
b=sum(list_sik)
ave_sik =b/len(list_sik)
print("ave_sik=",ave_sik)
>>> f()
5349
5478
5344
4644
4968
6259
ave_toh= 5340.33333333
3148
2991
2966
2457
ave_sik= 2890.5
求めるもの: 文字列から要素を取り出す
データ: word
方法: for文 in print
条件: 最初の要素から順番に
>>> for c in 'word': print( c) cが繰り返し変数
w
o
r
d
>>> for word in ('one','word', 'after', 'another'): print (word)
one word繰り返し変数
word
after
another
求めるもの: リストの要素に加工して取り出す
データ: リストmylist
方法: for文 in range len print インクリメン
ト
条件: リストの要素に1回目は最初の要素に1を加
え2回目はさらにそのリストの2番目の要素に
1を加え最後の要素まで繰り返す
def mylist():
myList = [1,2,3,4]
for index in range(len(myList)):
myList[index] += 1
print (myList)
>>> mylist()
[2, 2, 3, 4]
[2, 3, 3, 4]
[2, 3, 4, 4]
[2, 3, 4, 5]
例4
>>> name=['中山','大山','中村','鈴木','高橋']
>>> for i in name :
print(i)
if i =='中村':
breake
中山
大山
中村
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
s = {101:'現金',102:'小口現金',103:'当座預金'}
< 辞書反復制御の条件としてのコンテナ
(タ プル、リスト、辞書、文字列等)
>>> for k, v in s.items(): < 辞書型でitemsメソッドでキーと値
のタブ
ル
を返す
print ('%s :%s' % (k,v,))
101 :現金
102 :小口現金
103 :当座預金
例 名簿を作る
python3.0から、input関数には文字列が
入力される。
漢字がそのまま入力できる。変わりに文字列を数値と
して使いたい場合
はint()関数で変換する。
def meibo():
for i in range(2):
name = input('name名前漢字可>')
sei = input('sei男1女2英数小文字>')
umare = input('umare早生1遅生2>')
kyoudai = input('kyoudai有1無2>')
s = [name,int(sei),int(umare),int(kyoudai)]
print (s)
>>> meibo()
name名前漢字可>高橋
sei男1女2英数小文字>1
umare早生1遅生2>2
kyoudai有1無2>1
['高橋', 1, 2, 1]
name名前漢字可>鈴木
sei男1女2英数小文字>2
umare早生1遅生2>1
kyoudai有1無2>1
['鈴木', 2, 1, 1]
例7-1 繰り返し処理の中断 continue break
continue :それ以降の処理をせず中断し、次の繰り返しに移る
break : 繰り返しそものを抜ける
ーfor item in "1,2,pass,3,4,end,5,6".split(","): < コンテナ
if item =="pass": < 条件
continue < 続行
elif item == "end": < 条件
break < 無条件中断
print (item) < 処理
1
2
3
4
for loop < 繰り返しの回数の回数をあらかじ
め決
めてお
く
for i in range(4) :< range()関数は0から3までの整数のリス
トを変
数
に返す。
if i == 0 : < 変数 i が0の時caseAと出力
print ('case A' ) < 以下変数 i のリストの終わりまで繰り
返す。
if i == 1 :
print( 'case B ')
if i == 2 :
print( 'case C ')
if i == 3 :
print ('case D ')
case A < 出力結果
case B
case C
case D
例
>>> for i in range(10):
print (i,) < コンマがあるので改
行しない
0 1 2 3 4 5 6 7 8 9
>>> for i in range(10): < 二つの文を実行する
print (i,)
print ( i *1)
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
例 確定申告書の最終日前4日間の申告書受理状況
def sinkoku():
sinkokusu=5000 <前日までの申告書数
for i in range(0,4): <最終4日分を計算
s =int(input("kazu>")) <その日の申告書受理数の入力
sinkokusu=sinkokusu+s <累計計算
print(i+1 ,"kai",sinkokusu,"mai") <結果出力
>>> sinkoku()
>>> sinkoku()
kazu>3200
1 kai 8200 mai
kazu>4100
2 kai 12300 mai
kazu>5500
3 kai 17800 mai
kazu>8700
4 kai 26500 mai
(5)while文
前提
whileの基本的な仕組み
def w():
import random
rand_num=0
while rand_num !=4: <条件が真なら繰り返す
rand_num=random.randint(0,9)
print(rand_num)
>>> w()
9
9
7
8
3
0
9
9
9
3
4 <条件が偽なのでwhile文
が終了した
continueとbreakを使う
continueで繰り返しの先頭に戻り、breakで繰り返しが終わる
def w2():
import random
rand_num=0
while True : <Trueである限り無限ループ
rand_num=random.randint(0,9)
print(rand_num)
if rand_num !=4:
continue
else : <Falseであると終了する
break
>>> w2()
2
6
4
特定の値になるまで実効するパターン
一定の条件が成立する間は処理をつづける。条件が成立しなくなる
と、処理の
繰り返しが終了する。
while : 続く条件式が真Trueである間ループを続ける
breakメソッドでも同様
条件式:
条件式が真の時に実行する処理1
条件式が真の時に実行する処理2
「while」文では、条件式が真(True)の間繰り返し実行する。
「while」文はブロック内の処理を実行した後は改めて条件式を評価し、条
件式が真の間は繰り返しブロック内の処理を実行する。
求めるもの: 0から10までの数値を偶数と奇数に判別
データ : 変数 i
方法 : while文 def if else文 print インクリメ
ント %d
条件: 書式表現
def 繰り返し3():
i = 0
while i <10 :
i +=1
if i % 2 :
print ("%d is odd" % i)
else :
print("%d is even " % i )
>>> 繰り返し3()
1 is odd
2 is even
3 is odd
4 is even
5 is odd
6 is even
7 is odd
8 is even
9 is odd
10 is even
例1
>>> x = 10
>>> while x >=0 : <特定の値 x=0
print(x)
x = x - 1 <1ずつ減る繰り返し
10
9
8
7
6
5
4
3
2
1
0
>>>
例2
>>> v = True
>>> count = 0
>>> while v :
count = count + 1 <1ずつ増える繰り返し
if count ==5:
v = False <特定の値
print( count)
1
2
3
4
5
例3
>>> x=10
>>> while x:
x -=1 <1ずつ減る繰り返し
if x % 2 !=0:continue <特定の値 2で割ったあまりが0でない場
合continue
print (x)
8
6
4
2
0
--例4--------------------
def kuri():
i=0
while i < 5 : <繰り返しの条件
print("i= ",i)
i = i+1 <1ずつ増加する
>>> kuri()
i= 0
i= 1
i= 2
i= 3
i= 4
-------------------------------
例5 1から10までの合計値 繰り返し条件
>>> total = 0
>>> i = 0
>>> while i < 10:
i = i + 1 <繰り返し回数iの値が1ずつ増加
total = total + i <増加したiの値が前のiの値に加算される
print (total) <10回繰り返されたときのtotalの値をまで
printする。
1
3
6
10
15
21
28
36
45
55
例6
>>> i=1
>>> while i < 3: < 1との比較をおこなう
print (i,"\n")
i += 1 < iが3より小さいとき実行
< iが3より大きいとき抜ける
1
2
例7
>>> a = 1.0
>>> while a <= 10: < 条件式を書く。値が真の間ループ
が回る。
print( a)
a += 2 <aの値が2ずつ増加する。
1.0
3.0
5.0
7.0
9.0
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
例8
>>> sum = 0
>>> i = 1
>>> while i <= 5: < iについての条件
sum += i
i += 1 < iの値も増やす
print (sum ,"\n")
1 < 0+1=1
3 < 1+2=3
6 < 3+3=6
10 < 6+4=10
15 < 10+5=15
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
例9
>>> x = 1
>>> while x < 100:
print (x)
x = 2 * x
< x
1 < 1
2 < 2*1
4 < 2*2
8 < 2*4
16 < 2*8
32 < 2*16
64 < 2*32
< 2*54>100 計算しない
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
例10
def while7():
n=0
while 1:
if n < 10 :
n = n + 1
print(n)
exit
>>> while7()
1
2
3
4
5
6
7
8
9
10
例11 #フィナボッチ級数
#2項の和により次項がきまる
a,b=0,1
while b < 10 : < b<10 が真であるかぎり実行される
print (b) < 0 偽 1 真 整数
a,b =b, a+b>>
1
1
2
3
5
8
例12
def name():
name=''
while not name:
name=input('please enter your name:')
print('hello ! ',name)
hello ! taro yamada
例13
>>> def p():
a=1
s=''
while a<=5:
s+='*'
a+=1
print(s)
>>> p()
*
**
***
****
*****
>>> def q():
d=5
while True:
d+=1
if d> 1000:
print(d)
break
>>> q()
1001
def r():
d=0
while d<=10:
d+=1
if d %3 != 0:
continue
print (d)
r()
3
6
9
例14
def while10():
n = 0
while 1:
n = n+1
if n > 10:break
print(n)
>>> while10()
1
2
3
4
5
6
7
8
9
10
例15 while True break 待ち条件
for in range( ) 回数
イテレータ : while、 for in は繰り返しに使う基本的なイテレータ。
ループ :ある事象が発生する(待ち条件この場合'bye')まで繰り返す
def while 11():
while True:
s = input('>')
if s == 'bye':break
>'今日は' < 待ち条件が来るまで繰返す。
'今日は'
>'良いお天気ですね' < 自由(任意)な入力
'良いお天気ですね'
>'なんて素敵なんでしょう' < 自由(任意)な入力
'なんて素敵なんでしょう’
>bye < 待ち条件を入力する。
ループを抜け出してブロックを終了。
-----------------ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
(6) 例外処理 try except ブロック内でエラーの
内容を利用する
プログラムの中でエラーが発生したとき、その後の処理切り替える処理をす
る仕組み。
pythonのエラーには2種類ある。
プログラム実行前のエラー
1 文法エラー
2 インデントエラー
プログラム実行後のエラー
1インデックスエラー
その他
pythonではプログラム処理中にエラーが発生すると例外オブジェクトが
発 生します。
エラーの内容を示す英文オブジェクト
exceotという名前のクラスを親として、分類されている。
try --except
>>> def t():
d =[1,2,3,]
try:
print(d[10])
print('実行しない')
except:
print('エラー')
>>> t()
エラー
2.流れ制御をさらに理解する
まず真偽値から True False
(1)比較メソッド 比較演算子
>>> print( 1 > 2) 条件が成り立たない
False 偽のオブジェクトを返す
>>> print (1 < 2) 条件が成り立つ
True 真のオブジェクトを返す
>>> print( 5 >= 5)
True
>>> print (5 <= 4)
False
>>> print( 1 == 1) 同等==
True
>>> print (2 != 1) 等しくない否定 !=
True
>>> print( 'cat' < 'dog' ) 文字列小文字はabcの順序大文字
小 文字
混合で比較のときは統一して比較。
真True偽Falseは分岐で使われている。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
continue 処理を飛ばして実行する
break その時点で反復制御を中断する
a=5
while True:
a+=1
if a>1000:
print(a)
break
1001
3構造の説明
>>> from math import sqrt
>>> for n in range(99,0,-1):
root = sqrt(n)
if root ==int(root):
print (n)
break
81
4論理を少し
分岐その1のテーマを少し変える
名前がChrisでなくても、good name と出力するように直す。
(A)
print( 'hello , what is your name ? ')
name = input('>')
print ('good day, ' + name + '.')
if name == 'Chris' :
print( 'good name !')
else :
if name == 'Tobari' : <名前の入力がChrisでなくても、同じ
< 挨拶文出力
print (' good name !')
(b)論理演算子 or and not 条件と条件をつなげる
>>> I_am_taro = True
>>> I_am_dragon = False
>>> I_like_beer = True
>>> I_eat_book = False
>>> print(I_am_taro and I_like_beer)
True
>>> print (I_like_beer and I_eat_books)
False
>>> print( I_am_dragon and I_like_beer)
False
>>> print( I_am_dragon and I_eat_books)
False
>>> print (I_am_taro or I_like_beer)
True
>>> print (I_like_beer or I_eat_books)
True
>>> print I_am_dragon or I_like_beer)
True
>>> print (I_am_dragon or I_eat_books)
False
>>> print not( I_am_dragon)
True
>>> print( I_am_taro)
True
>>> print not (I_am_taro)
False
論理演算子には、論理積を表す "and"、論理和を表す "or"、否定を表す
"not" などがある。
論理和 and
両方とも真Trueならば結果は真True、それ以外の場合の結果は偽False
である。
論理和 or
与えられたいずれか少なくとも一つが真Trueであれば真True.。.
否定 not
否定とは、真と偽を反転する論理演算である。否定は英語でNotである。
(c) 繰り返し
6 すべてがうまく理解してきているかどうかを確かめる
ために、もう一つ例を見てみましょう。(クリス・パイン・プ
ログラミングより
>>> while reqest != 'bye' :
print 'C君になにをしてもらいたいですか?'
reqest = input('>')
print( '” C君、' + reqest + 'してね。”とあなたは言います。')
print( 'C君の返答')
print ('Cは ' + reqest + 'する。” ')
print ('Papa も' + reqest + 'する。”。')
print ('Mama も' + reqest + 'する。”。')
print ('Python も' + reqest + 'する。”。')
print( 'Ruby も' + reqest + 'する。”。')
print( 'Perl も' + reqest + 'する。” ')
C君になにをしてもらいたいですか?
>'読書'
” C君、'ごはん'してね。”とあなたは言います。
C君の返答
Cは '読書'する。”
Papa も'読書'する。”。
Mama も'読書'する。”。
Python も'読書する。”。
Ruby も'読書'する。”。
Perl も'読書'する。”
C君になにをしてもらいたいですか?
>'掃除'
” C君、'掃除'してね。”とあなたは言います。
C君の返答
Cは '掃除'する。”
Papa も'掃除'する。”。
Mama も'掃除'する。”。
Python も'掃除'する。”。
Ruby も'掃除'する。”。
Perl も'掃除'する。”
C君になにをしてもらいたいですか?
>'おはなし'
” C君、'おはなし'してね。”とあなたは言います。
C君の返答
Cは 'おはなし'する。”
Papa も'おはなし'する。”。
Mama も'おはなし'する。”。
Python も'おはなし'する。”。
Ruby も'おはなし'する。”。
Perl も'おはなし'する。”
C君になにをしてもらいたいですか?
>'ねんね'
” C君、'ねんね'してね。”とあなたは言います。
C君の返答
Cは 'ねんね'する。”
Papa も'ねんね'する。”。
Mama も'ねんね'する。”。
Python も'ねんね'する。”。
Ruby も'ねんね'する。”。
Perl も'ねんね'する。”
C君になにをしてもらいたいですか?
>'bye'
” C君、'bye'してね。”とあなたは言います。
C君の返答
Cは 'bye'する。”
Papa も'bye'する。”。
Mama も'bye'する。”。
Python も'bye'する。”。
Ruby も'bye'する。”。
Perl も'bye'する。”
C君になにをしてもらいたいですか?
(7)for文の基本をもう一度
まずrange()関数の理解
range(x,y,step):xからy-1までの連続する整数から、アイテム間の
間
隔がstepであるリストを作成して返す。
>>>list( range(13))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
>>>list( range(3,13))
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
>>> list(range(3,13,4))
[3, 7, 11]
>>> y =['a,b,c','d,e,f','g,h,i']
>>> len(y)
3
for文の基本形は
1
def for2():
a = 'string'
for i in list(range(len(a))):
print( i)
0
1
2
3
4
5
2.def for3():
a = 'string'
for i in list(range(len(a))):
print( a[1]) あるリストのすべての要素をたどりながら
>>> for3()
t < stringの配列[1]はt
t <stringの要素は6個
t
t
t
t
3.def for4():
a = 'string'
for i in a:
print(i)
>>> for4()
s
t
r
i
n
g
>>>def for3():
ss = ""
for c in "ABC":
ss = c + ss
print (ss)
>>> for3()
A
BA
CBA
>>> for x in [10,20,30]:
for y in [0,1,2,3]:
print (x + y)
print ('---')
10
---
11
---
12
---
13
---
20
---
21
---
22
---
23
---
30
---
31
---
32
---
33
(8)配列を使った一般的例
>>> names = ['awk','perl','python','ruby']
>>> for name in names :
print( name,"\n")
awk
perl
python
ruby
(9)while文をさらに
>>> x = 1
>>> while x < 100:
print (x)
x = 2 * x
x
1 1
2 2*1
4 2*2
8 2*4
16 2*8
32 2*16
64 2*32
2*54>100 計算しない
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
def while 5():
comand = ""
while comand != 'exit':
comand = input('comand>')
>>> while5()
comand>'hello'
comand>'python'
comand>exit
練習問題2 詩人 山村暮鳥の「風景」 の詩を書きだすプログラムを作って
みましょう。
いちめんのなのはな
いちめんのなのはな
いちめんのなのはな
いちめんのなのはな
いちめんのなのはな
いちめんのなのはな
いちめんのなのはな
かすかなるむぎぶえ
いちめんのなのはな
いちめんのなのはな
いちめんのなのはな
いちめんのなのはな
いちめんのなのはな
いちめんのなのはな
いちめんのなのはな
いちめんのなのはな
ひばりのおしやべり
いちめんのなのはな
いちめんのなのはな
いちめんのなのはな
いちめんのなのはな
いちめんのなのはな
いちめんのなのはな
いちめんのなのはな
いちめんのなのはな
やめるはひるのつき
いちめんのなのはな。°
問題 犬語で伝えよう
家の愛犬ポチは犬語で話すとワンと答えます。犬語はすべて大文字です。
大文字以外はウウとうなるだけです。
貴方が犬語でバイバイと3回繰り返していうまで、犬から離れられません。
ポチとの会話のプログラムをつくりましょう。
(10)まとめ
繰り返しとは何か
ある回数行いたい
配列の内容を別のオブジェクトに入れ替えたい
ある条件が成立するまで繰り返したい
繰り返し注意点
何を繰り返すのか
繰り返しをする条件は何か
繰り返しの種類と書き方
構文を利用する for while
メソッドで実現する
(1)
def for5():
for x in list(range(1,10,2)):
print (x)
>>> for5()
1
3
5
7
9
(2)
#フィナボッチ級数
#2項の和により次項がきまる
a,b=0,1
while b < 10 : < b<10 が真であるかぎり実行され
る
print (b) < 0 偽 1 真 整数
a,b =b, a+b
1
1
(3)
x= "love"
if x =="love":
print("i love ruby ,too")
(4)
x = "love"
if x != "love":
print ("i hate ruby ! because...")
(5)
for i in range(10):
print(i)
0
1
2
3
4
5
6
7
8
9
(6)
array=["johon","paul","george","ringo"]
for name in array:
print (name)
johon
paul
george
ringo
まづパスツール研究所のテキストより基礎理論
Chapter 6 while 文
Iteration反復繰り返し
true. If a = b now, then a will always equal b. In Python, an assignment statement設定文 can make two variables変数 equal, but they don’t have to stay that way:
a = 5
b = a # a and b are now equal
a = 3 # a and b are no longer equal
http://www.freenetpages.co.uk/hp/alan.gauld/.
, .
ホーム 戻る