Python検定試験と云うのがあるらしいと別項に上げましたが、学習して損することは無いので始めて見ましょう。
まず基本的な事のおさらいですね、Q & A形式で書いてみたいと思います。 自分の学習に都合の良いQ&Aにしてあります。
Pythonの簡単アプリに必要なものをQ&Aスタイルであげていきます。
新しいQ&Aが上に来ます。
———————————-
Q37: 今度は少し難しいです。
次のプログラムを実行した時にどんな出力が出ますか?
print(“実行結果:” , end=””) |
A37:
実行結果: 例外が発生しました 終わり
理由:
・まず最初のprintで「実行結果:」が表示されます。
・次にtryでNameErrorを発生させます。 この時NameErrorは
すべての例外を含むスーパークラスExceptionのサブクラスです。
そのため「例外が発生しました」が表示されます。
・except文は順に確認していき、最初に当てはまるものがあれば
それ以後は無視され、最後のfinallyに行きます。
・最後のfainallyはいつも「終わり」を表示されます。
———————————-
Q36: プログラムを実行させると、エラーや例外が良く発生します。
プログラムが正しくても、実行時に起きるのが例外エラーです。
NameError:変数が定義されていないとき
ZeroDivisionError: ゼロで割り算するハメに陥ったときに発生
TypeError: 数値と文字列を合わせようとしたときなど発生
ValueError:文字列を整数に変換氏しようとしたときなどに発生
次の処理を実行した場合に発生する例外エラーはどれでしょう
s=”Python”
print(s+ 11)
A36:
sは文字列ですから整数の11とは加えられませんので、
TypeErrorが発生します。
———————————-
Q35: 複数コマンドボタンのGUIウインドーへの貼付け
次にようなコマンドボタン4個を張り付けるcodeを書きなさい。
A35: コマンドボタンの自動作成
ボタンの自動作成なので、見た目は非常にスッキリしていますね。
変数は普通半角英数字を使いますが、分かり易いように日本語で書いてみました。
これでどのボタンが押されたかが判断できるので、四択問題作成に使えそうです。
from tkinter import* root = Tk() 格納バッファ = StringVar() label = Label(root, textvariable = 格納バッファ) def ボタンを作る(個数): for ボタン番号 in range(4): root.mainloop() |
Q34/A34: パスワード作成 Q33のcodeを少し簡単にしました。
import string
import secrets
alphabet = string.ascii_letters + string.digits
password = ”.join(secrets.choice(alphabet) for i in range(int(8)))
print(password)
結果–>P4AGDBYE, 0Q9OyNOz, He271ORx, vROyWEFO, SgbCEtm1
#大文字だけだったり、数字が無かったり偏りが多いけど大丈夫なのかな~?
#やはり「数字は3個以上入れろ」とか指定した方が良さそうだね。その時はQ33のWhile Trueを使います。
パスワード作成編はこれで完了。
————————————-
注意:
他でも発生していることですが、ここにcodeをアップすると文字コードが「SJIS」になるようですので、
そのままコピペをして動作させようとするとすとerrorとなります。 次の文字をUTF-8に直すと開発環境では
作動します。 主に次の文字列がその対象です。
括弧、空白、符号、コロン・ダブル・セミコロン、インデント、カンマ、句読点 etc etc
Q33/A33:安全なパスワードを作成するのに適したモジュールを見つけました。
次のような効用がPython.orgのサイトに述べてありました。
secrets モジュールを使って、パスワードやアカウント認証、セキュリティトークンなどの
機密を扱うのに適した、暗号学的に強い乱数を生成することができます。
特に、 random モジュールのデフォルトの擬似乱数よりも secrets を使用するべきです。
random モジュールはモデル化やシミュレーション向けで、セキュリティや暗号学的に設計されてはいません。
では早速安全なsecretsモジュールをimportして、簡単なものからやってみましょう。
アルファべットと数字からなり、小文字を少なくとも1つと数字を少なくとも3つ含む、
8文字のパスワードを生成するプログラムは下記です。
import string
import secrets
alphabet = string.ascii_letters + string.digits
while True:
password = ”.join(secrets.choice(alphabet) for i in range(int(8)))
if (any(c.islower() for c in password) and any(c.isupper() for c in password)
and sum(c.isdigit() for c in password) >= 3):
break
print(password) —> j2EaZ8t3
考察:
・string.ascii_letters やstring.digitsはstringモジュールの中で宣言されているらしい。
・c.islower() for c in password)のcはdでもfでもなんでも自由らしい。
・確かに小文字+数字は5個入っているので、 sum(c.isdigit() for c in password) >= 3): を満足していますね。
4文字のpasswordをこの方式で作る場合は次のようにします。
while True:
password = ”.join(secrets.choice(alphabet) for i in range(int(4)))
if (any(d.islower() for d in password)
and any(d.isupper() for d in password)
and sum(d.isdigit() for d in password) >= 2):
break
print(password) –> mK05
う~ん、Q32の方が簡単じゃん!
————————————-
Q32/A32: Q31からの続き 全文字をリストに入れる方法
import random
password_all = [“a”,”b”,”c”,”d”,”e”,”f”,”g”,”H”,”I”,”J”,”K”,”L”,”M”,”N”,1,2,3,4,5,6,7,8,9]
for i in range(4):
password2 = random.choice(password_all)
print(password2,end=””) #Ke2L
でけた~! でも余りスマートじゃないね~。
他にもっと良いモジュールがないかどうか探してみよう。
———————————–
Q31:今までの知識で英文字でのpwを作りましょう。
import random
password_e = [“a”,”b”,”c”,”d”,”e”,”f”,”g”] #本来はa~zまで書きます。
for i in range(4):
print(random.choice(password), end=””) –>fcbg
では、これに全角英文字と数字を入れたpasswordを作って下さい。
A31: 分かり易くこんなのはどうだろう?
import random
password_e = [“a”,”b”,”c”,”d”,”e”,”f”,”g”]
password_E = [“H”,”I”,”J”,”K”,”L”,”M”,”N”]
password_n = [1,2,3,4,5,6,7,8,9] #数字の0は英文字のoと間違えるので入れない。
for i in range(4):
pw_e = random.choice(password_e)
pw_E = random.choice(password_E)
pw_n = random.choice(password_n)
print(pw_e + pw_E + str(pw_n))
runしたらこうなりました。 それぞれのリストから選択されたものが4個出来てしまいました。
fJ7
bM2
bL8
eJ3
ではこうすれば?
for i in range(4):
pw_e = random.choice(password_e)
pw_E = random.choice(password_E)
pw_n = random.choice(password_n)
print(pw_e + pw_E + str(pw_n)) –> eJ7
これも違いますね! 欲しいのは、c7Hk とか4文字のpasswordなんだけれどな~!
分かった! すべての文字・数字を一つのリストに纏めれば出来るはず。
Q32へ続く
———————————-
Q30: 一番簡単な4文字のpassword発生器を作ります、まずその準備です。
まず数字だけのpasswordを作ります。
import random
password = [0,1,2,3,4,5,6,7,8,9]
for i in range(4):
print(random.choice(password))
このままでは
4
7
0
5
等と表示されます、これを4705と表示されるようにしてください。
A30:次のように修正します。 end=””を追加すると改行せずに文字・数字がつながります。
print(random.choice(pasword), end=””) –> 4705 これが最初のpasswordになります。
———————————–
Q29:random関数
一番簡単な乱数発生関数は;
import random
乱数=random.random()
ですが、これは1未満の小数の乱数を作ります。
import random
乱数=random.random()
print(乱数) #–> 0.1908280076394565
では1から10迄の整数乱数を作る関数を作って下さい。
A29:自作整数関数
import random
乱数=random.random()
乱数1=乱数*10+1 #10倍して1を加える
整数乱数1=int(乱数1) #それを整数にする
print(整数乱数1) #–> 2 #無事1から10まで整数を発生させる関数が出来ました。
実は希望する整数の乱数を発生する簡単な関数が有ります。
整数乱数2=random.randint(1,10)
print(整数乱数2) #–>10
———————————–
Q28: 今まで何日生きたかのcodeを書きなさい。
A28:
Q26、Q27の関数を使えば次のようになります。
import datetime
今日=datetime.date.today()
誕生年=datetime.date(1990,1,1)
print(今日-誕生年) —> 11080 days, 0:00:00
おう、1万年以上生きて来たんだ、凄いね。
———————————–
Q27: 日にち、時刻の表示
import datetimeで日にち・時刻関数が分かりました。
では今日の、今の時刻をそれぞれ書き出すにはどうしますか?
A27: よく使いますので覚えてしまいましょう。
import datetime
d = datetime.datetime.now()
print(d.day)
print(d.hour)
print(d.minute)
print(d.second)
runするとこうなります。
2 –> 二日
8 –> 午前8時
32 –> 32分
53 –> 53秒
———————————–
Q26:日時を扱うdatetimeモジュールをimportしましょう。
今日の日付を表示する基本的なcodeはこうなります。
import datetime
今日=datetime.date.today()
print(今日)—> 2020-05-01と表示されます。
では、現在の日付と時刻を表示する関数を書いて下さい。
A26:
import datetime
日時=datetime.datetime.now()
print(日時) —> 2020-05-01 19:14:24.824602
秒数の表示が無意味に長いですが、そのうち二桁にします。
———————————–
Q25:閏年確認関数
2020年は閏年ですが、それを確認する関数を書きなさい。
もし閏年なら「閏年です」、そうでなければ「閏年ではありません」と表示しなさい。
A25:
関数はcalendar.isleap()ですので、解答は次のようになります。
import calendar
ans=calendar.isleap(2020) #閏年の場合はans=Trueとなります。
if ans == True :
print(“うるう年です。”)
else:
print(“うるう年では有りません。”)
>>>うるう年です。
注意:等しい場合の等号は==を使います。
Pythonの条件式や何かを調べるときは、結果はTrueとかFalseとなるbool型関数が多数あります。
———————————–
Q24:calendar関数
今月のカレンダーを作るには、次のように書きます。
import calendar
print(calendar.month(2020,4))
runするとこのように表示されます。
では2020年1月から12月まで表示するにはどうするでしょうか?
A24:
簡単で~す。
import calendar
print(calendar.prcal(2020))
import calenderとやらないようにね! いつも間違えてエラーと言われてます。
———————————–
Q23:range()関数の例
次のcodeをrunしたら、どんな出力が得られるか?
for i in range(10, 5, -2):
print(i, end=’ ‘)
A23:
—> 10 8 6 と出力される。
for i in range(10, 5, -2):の意味は、10から6(5の前)まで逆順に二つ置きに出力するというもの。
———————————–
Q22:リストの要素の取り出し方を簡単に示します。
果物 = [“リンゴ”, “ミカン”, “バナナ”, “オレンジ”, “ボンタン”, “スイカ”] –>0,1,2,3,4,5の6個が有ります。
–>逆から指定するときのindex番号は、-6, -5, -4, -3, -2, -1となります。
要素の取り出し方は、0番からスタートするインデック番号で指定します。
print(果物[1]) —> ミカン
print(果物[-3]) —> オレンジ
print(果物[1]) #ミカン
では、次のcodeはどのような出力となるか?
print(果物[1:])
print(果物[:5])
print(果物[-2:])
print(果物[:-2])
A22:下記のような出力となる。[1:]は2番目から最後まで、 [:5]は最初から4番目まで、
[-2:]は後ろから2番目から最後まで、 [:-2]は後ろ3番目から最初迄をそれぞれ抽出する。
indexがマイナスの場合は後ろから数えて、右へ抽出していく。
print(果物[1:]) –>[‘ミカン’, ‘バナナ’, ‘オレンジ’, ‘ボンタン’, ‘スイカ’]
print(果物[:5])–>[‘リンゴ’, ‘ミカン’, ‘バナナ’, ‘オレンジ’, ‘ボンタン’]
print(果物[-2:])–>[‘ボンタン’, ‘スイカ’]
print(果物[:-2])–>[‘リンゴ’, ‘ミカン’, ‘バナナ’, ‘オレンジ’]
非常に混乱し易い作りですが、try & errorで完成させるしかない。 試験に出たら間違いなく間違える!
———————————–
Q21:整数の入ったリストをrange()関数で作ります。
thelist1 = list(range(-5, 6)) #-5~5の入ったリスト
print(thelist1) # [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5]
thelist2 = list(range(0, 10, 2)) #偶数のリストを作ります
print(thelist2) #[0, 2, 4, 6, 8]
では、0~20の中から3の倍数だけ抽出しなさい。
A21:
thelist3 = list(range(0, 20, 3))
print(thelist3) –> [ 0, 6, 9, 12, 15, 18]
このやり方だと、0も3の倍数として抽出されてしまう。
別のやり方
thelist4 = [n for n in range(1, 20) if n % 3 == 0] #3で割った余りがなければ、3の倍数である
print(thelist4) # [3, 6, 9, 12, 15, 18]
このやり方はスマートだね。 覚えよう!
———————————–
Q20:リストを簡潔に高速で生成する方法として内包表記があります。
次のように書きます。
prime = [2, 3, 5, 7, 11, 13] # いわゆる素数のリストですね。
prime_square = [x**2 for x in prime] #上の素数を二乗する内包表記です。
print(prime_square) —> [4, 9, 25, 49, 121, 169]
では、上の例の変数を全て日本語で書け。 <—絶対に試験に出ない設問。
A20:
素数 = [2, 3, 5, 7, 11, 13]
素数の二乗 = [二乗**2 for 二乗 in 素数]
print(素数の二乗)
こうして日本語で書かれると、意味が分かり易くないですか?
———————————–
Q19:continue文とbreak文
ある条件が満たされる場合はそのまま続け(continue)、満たされないときはbreakで終わらせる。
では、100までの数字が偶数でかつ5で割り切れる数字を列挙するプログラムを書け。
A19:
for i in range(1,100):
if i % 2 == 1:
print(i, end= ‘ ‘)
continue
if i % 20 == 0:
break
—> 1 3 5 7 9 11 13 15 17 19
結果的には、単に1~19までの数字の書き出しだが、for文・continue文・break文を使った。
———————————–
Q18:Pythonでイテレータを使用する反復を記述するときには、for文を使用する。
では、次のリストをfor文を使い順番に取り出す式を書け。
districts = [‘北海道’, ‘東北’, ‘関東’, ‘中部’, ‘近畿’, ‘中国’, ‘四国’, ‘九州’ ]
A18:
for district in districts:
print(district, end=’ ‘) —> 北海道 東北 関東 中部 近畿 中国 四国 九州
このやり方はよく使われるので理解が必須です。
おまけ:
・リスト名は複数形(districtsのように)で書き、取り出される要素を入れる変数は単数形(districtのように)で書くのが分かり易いです。
・イテレータとは、リスト、タプルなど要素を持つデータ型のことであり、順に要素を取り出せるオブジェクトである。 なんかよく分からない説明が有りますね。 またイテレータを作る関数をジェネレータと云います。
———————————–
Q17: While文を使って1から10まで出力するプログラムを書け。
A17:
x=1
while x<11:
print(x, end=’ ‘)
x +=1
else:
print(‘END’)
x +=1までで、1 2 3 4 5 6 7 8 9 10 と出力される。
else項があると、1 2 3 4 5 6 7 8 9 10 ENDと出力される。
———————————–
Q16: 反復処理用にはWhileとforがある。まずはwhile文。
x=input(‘Enter between 1 to 9’ )
x=int(x)
while x<10:
print(x, end=’ ‘)
このプラグラムは、次の場合それぞれどのような出力をするか?
1.5を入力したとき
2.19を入力したとき
3.x=int(x)は何のためあるか
A16:
1.5555555555・・・と出力し、^cが入力されると終了する。
2.範囲外の入力に値する処理がなので、何も出力されない。
3.input(x)は文字列なので、printの場合はintで整数化する必要がある。
こんな簡単な問題は出ないが、段々難しくなります。
———————————–
Q15: 前問題では辞書の最初から読みだしたが、今度は乱数で取り出すプログラムを作れ。
import random
words = {
’cant ‘: ‘御託、専門語、傾ける、角、堤防、傾斜 ‘,
’gaunt ‘: ‘やせた ‘,
’ransack ‘: ‘くまなく捜す ‘,
’clarion ‘: ‘明るく響き渡る ‘,
’chasm ‘: ‘深い割目 ‘,
}
A15:
print(‘ Enter to start, or CTRL+c to finish.’) #ユーザーの入力待ち
input() # 見かけよくするための改行
while True:
word = random.choice(list(words.keys()))
print(word, end = ”)
try: # 例外が発生するかもしれないが、実行したい処理。
input() #enterでstart
except KeyboardInterrupt: #KeyboardInterruptはエラー名で、例外発生時に行う処理
# CTRL+cが押されたらループ終了
break
else: # CTRL+Cが押されなかったら答えを表示
print(‘ : ‘ + words[word] + ‘\n’)
runすると、
ransack
: くまなく捜す
cant
: 御託、専門語、傾ける、角、堤防、傾斜
clarion
: 明るく響き渡る
chasm
: 深い割目
と、^c入力するまで延々と続く。
これで簡単なQ&Aプログラムが作れる。一度codeの意味を理解したら、この構図を必要に応じてコピペして使用するのが効率的!
———————————–
Q14:リストからfor~inで要素を取り出すには次のようにする
locations =[‘Tokyo’,’Sendai’,’Osaka’,’kochi’,’kumamoto’]
for location in locations:
print(location) —>
Tokyo
Sendai
Osaka
kochi
kumamoto
では次のような辞書がある。順番に出力するcodeを書け(ヒント: for~inを使う)
words = {
’cant ‘: u’御託、専門語、傾ける、角、堤防、傾斜 ‘,
’gaunt ‘: u’やせた ‘,
’ransack ‘: u’くまなく捜す ‘,
’clarion ‘: u’明るく響き渡る ‘,
’chasm ‘: u’深い割目 ‘,
}
A14:
for 英単語, 意味 in words.items():
print(英単語, 意味)
—> | cant 御託、専門語、傾ける、角、堤防、傾斜 gaunt やせた ransack くまなく捜す clarion 明るく響き渡る chasm 深い割目 |
list.items()関数を使うのがミソ! 非常に有益な関数です。 俳句、百人一首、単語集などすべてこの関数を使ってます。
———————————–
Q13:辞書とは、キーと値をペアとして格納できるデータ型です。ただし、順番を持たないのでキーの重複は認められない。
locations = {‘Tokyo’,’Sendai’,’Osaka’,’kochi’,’kumamoto’}
print(locations) –> {‘Tokyo’, ‘Sendai’, ‘Osaka’, ‘kochi’, ‘kumamoto’}
では、次の場合はどのように同表示されるか?
print(locations[3]) –> ?
print(locations(3)) –> ?
A13:
print(locations[3]) –> Osaka
print(locations(3)) –> ’dict’ object is not callable
要素の取り出しは、リストのように[ ]を使用するのでしたね。 いつもerrorで気が付きます。
———————————–
Q12:タプルの結合
numbers = (1,2,3,4,5)*2
print(numbers) –> (1, 2, 3, 4, 5, 1, 2, 3, 4, 5)
では、次の場合はどうか?
locations = (‘Tokyo’,’Sendai’,’Osaka’,’kochi’,’kumamoto’)*2
print(locations)
A12
print(locations) –> (‘Tokyo’, ‘Sendai’, ‘Osaka’, ‘kochi’, ‘kumamoto’, ‘Tokyo’, ‘Sendai’, ‘Osaka’, ‘kochi’, ‘kumamoto’)
いずれもタプルを2回結合したものとなる。
———————————–
Q11:タプルのアンパック。
・タプルやリストの要素を展開して複数の変数に代入することができる。
・シーケンスのアンパック (sequence unpacking) やアンパック代入などと呼ばれる。
次の場合はどのような出力となるか?
a, b, c, d, e = (‘Tokyo’, ‘Sendai’, ‘Osaka’, ‘kochi’, ‘kumamoto’)
print(c+d) ???
A11
print(c+d) –> Osakakochi
———————————–
Q10:タプルの要素は変更不可(イミュータブル)なので、生成後に要素の追加や削除は出来ない。
numbers = (1, 4, 9, 16, 25)
では print(numbers(3)) の結果は?
A10
print(numbers(3)) –> TypeError: ‘tuple’ object is not callable
要素を取り出す時はリストのように[ ]を使用する
print(numbers[3]) –> 16
タプルはリストと同じように、複数の値を一つにまとめて扱いたい場合に手軽に使えるオブジェクトです。
タプルは、辞書などのキーとして使用するのに適している。
———————————–
Q9:リストのメソッド
主なものには下記があるが、必要な時の覚書として載せておきます。
list.append(x) | リストの末尾に要素を追加する | |
list.extend(x) | xのすべての要素をリストに追加し、リストを拡張する | |
list.insert(i, x) | iの位置にxを挿入する | |
list.remove(x) | xと等しい値の最初の要素を削除する | |
list.del(i) | iの位置の要素を削除する | |
list.pop([i]) | iの位置にある要素を削除し、その要素を返す、iがない時は末尾要素削除 | |
list.clear() | 全ての要素の削除 | |
list.index(x) | xと等しい値もつ最初の要素の位置を添字で返す | |
list.count(x) | xの出現回数を返す | |
list.sort(key, reverse) | インプレース演算でソートする | |
list.reverse() | インプレース演算で逆算する |
list = [1, 2, 3, 4, 5]
del lsit[2]の出力は?
A9 :
del lsit[2] –> [1, 2, 4, 5] 3番目の要素が先所される
———————————–
Q8:リスト要素の変更は、要素の位置を指定して行う。
リストは、他の言語では配列に相当する機能です。
languages = [‘Python’ , ‘Jave’ , ‘VBA’ , ‘PHP’ ,’C++’]
languages[1:4] = [‘HTML’,’C’,’VB’] <–これで2~4番目の値が’HTML’,’C’,’VB’に変更される。
print(languages) = [‘Python’, ‘HTML’, ‘C’, ‘VB’, ‘C++’]
ではprint(languages = [] )はどう出力されるか?
A8:
languages = [‘Python’, ‘HTML’, ‘C’, ‘VB’, ‘C++’]
languages = []
print(launguages) –> [ ] 全要素を削除、初期化と同じになります。
一寸引っ掛け問題みたいだね。
———————————–
Q7:要素を持つデータ型の代表的なものに、リスト・タプル・辞書・集合がある。
最も汎用性が高く、よく使われる型がリストである。
まずリストの問題。
要素の取り出しからは次のように行う。
添字は前部から 0, 1, 2, 3, 4となり、後ろから数えるときは-5, -4, -3, -2, -1となる。
前から数えるときは添字は0から始まるが、後ろからは-1で始まる。 <– 重要
A7: では次の呼び出し方で要素はどのように表示されるか?
languages = [‘Python’ , ‘Jave’ , ‘VBA’ , ‘PHP’ ,’C++’]
print(languages) –> [‘Python’, ‘Jave’, ‘VBA’, ‘PHP’, ‘C++’]
print( languages[3]) –> PHP 文字列として取り出される
print(languages[2:4]) –> [‘VBA’, ‘PHP’] リストとして取り出される
print(languages[-3]) –> VBA
リストを使うと間違いなくエラーを連発します。 簡単な例で練習が必要です。
———————————–
Q6:次は数値演算子と呼ばれるものである。 +、-、/、*は周知なので説明商省略。
a//b a/bの商の整数値(小数点以下切捨て)
a%b a/bの割り切れれなかった余り(剰余)
a**n aのn乗, pow(a,n)とも書ける
では箱にボ-ルが350個入っている箱が有り、12個づつに分けると何個の箱と端数が出きるか?
A5:・balls=350, per=12の変数を作る
・出来る箱数は balls//per=29で29箱 表示はprint(balls//per)と書く
・剰余はballs%per=2で2個の端数が出来る 表示はprint(balls%per)と書く
———————————–
Q5:文字列メソッドの主なものに、次のようなものがある。
・str.lstrip() 文字列の先頭の空白を除去する
・str.rstrip() 文字列の末尾の空白を除去する
・str.strip() 文字列の先頭及び末尾の空白を除去する
・str.lower() 文字列の大文字を全て小文字にする
・str.upper() 文字列の小文字を全て大文字にする
・str.split(sep) 文字列をsepを区切りに分離してリストにする
では、次の文字列をこれらのメソッド(上の関数)で実行したときの結果をどうなるか?
str=’_ aBc_ ,_deF_’ _は半角空白を意味している
A5:
print(str.lstrip()) –> aBc_ , _deF_
print(str.rstrip()) –> _aBc_ , _deF
print(str.strip()) –> aBc_ , _deF
print(str.lower()) –> _ abc_ , _def_
print(str.upper()) –> _ ABC_ , _DEF_
print(str.split(‘,’)) –> [‘ aBc ‘, ‘ deF ‘]
文字列メソッドの英文スペルを見れば、関数の意味が理解できるでしょう。
・str.strip() — strはstringで文字列ですね。 strip()は削除ですね。
・lstrip() — 先頭のlはleftのlなので、一番左即ち先頭を意味します。
・rstrip() — 先頭のrはrightのrなので、一番右即ち最後を意味します。
・lower() — lowerは小文字を意味します。
・upper() — upperrは大文字を意味します。
・sprit(sep) — sep=separation(区切り文字)を使って分離してリストにするという意味です。
これが分かれば、Q5の答えも納得ですね。
———————————–
Q4:ビット演算の基本は次のようになっている。
bit単位の論理和 = x | y <– ANDと同じ
bit単位の論理積 = x & y <– ORと同じ
bit単位の排他的論理和 = x ^ y <– XORと同じ
xのビット反転 = ~x <– NOTと同じ
xのnビット左シフト = x << n <– 桁上げ
xのnビット右シフト = x >> n <– 桁下げ
x=0b10101000, y=0b1111000の論理積は幾らか?
A4:論理積はANDだから、両ビットが共に1の場合に1となる(それぞれのビットの掛け算 x|y)ので、答えは、0b10100000 となる。
ビット演算は画像の合成などに使われているらしい。
———————————–
Q3:10進数の19を2進数、8進数、16進数で表すとどうなるか?
A3:bin(19)–> 0b10011
oct(19)–> 0o23
hex(19)–> 0x23
いつどう使うのかまだ不明。
———————————–
Q2:2進数、8進数、16進数の11を10進数で表せ
A2:2進数では、0b11と書き10進数では3となる
8進数では、0o11と書き10進数では9となる
16進数では、0x11と書き10進数では17となる
使ったことない。
———————————–
Q1:Pythonの主なデータ型は何か?
A1: 1.数値型(number) – 整数リテラル(int) 及び 浮動小数点型(float)がある
2.文字列型(string)
3.論理型(boolean)
4.リスト型(list)
5.タプル型(tuple)
6.辞書型(dict)
7.集合型(set)
8.バイナリー(byte)
9.数値シーケンス(range)
今まで出てきたのは1-6までだったので、他も学習必要らしい。