実現したいこと
Pythonで以下のようなプログラムを作りたいです。
文字列の1文字ずつの2進数の結果表示後に、2つの正整数 n,m を入力(カンマ区切りで入力)させて n番目の第mビットの値を表示させるようにせよ.但しn,mは0から始まるものとする.
実行例:
文字列: ABC
A : 01000001
B : 01000010
C : 01000011
m: 1
n: 3 (1番目(=B)の第3ビット 010[0]0010 を指定)
1番目の文字の第3ビットは 0 です
※注意:「n番目の文字のmビット目」に対応するプログラム内のデータは、「数字」の "0" "1" ではなく、「数値」の 0 または 1 を要素とする2次元のリストの形式にすること。
発生している問題・分からないこと
プログラム自体はできたのですが、上の「※注意」にある、「数字(文字列)」ではなく、「数値」を要素とする2次元のリストの形式にする方法が分かりません。
ご教授いただけたら幸いです。
該当のソースコード
Python
1str = input('文字列:')2binary_representations = []3 4for s in str:5 c=ord(s)6 7 b=bin(c)8 b=b[2:]9 b="00000000"+b 10 b=b[-8:]11 binary_representations.append(b)12 print(s+":"+b)13 14m = int(input('m:'))15n = int(input('n:'))16target_char_binary = binary_representations[n-1]17ans = target_char_binary[m-1]18print(f'{m}番目の文字の第{n}ビットは{ans}です')
試したこと・調べたこと
上記の詳細・結果
Googleで「map関数」というものがあったので、以下のようにプログラムを作り変えました。
Python
1str = input('文字列:')2binary_representations = []3 4for s in str:5 c=ord(s)6 7 b=bin(c)8 b=b[2:]9 b="00000000"+b 10 b=b[-8:]11 binary_representations.append(b)12 print(s+":"+b)13 14m = int(input('m:'))15n = int(input('n:'))16binary_representations = list(map(int, binary_representations))17target_char_binary = binary_representations[n-1]18ans = target_char_binary[m-1]19print(f'{m}番目の文字の第{n}ビットは{ans}です')
しかし、以下のようなエラーが出てしまいました。
TypeError Traceback (most recent call last)
Cell In [12], line 18
16 binary_representations = list(map(int, binary_representations))
17 target_char_binary = binary_representations[n-1]
---> 18 ans = target_char_binary[m-1]
19 print(f'{m}番目の文字の第{n}ビットは{ans}です')
TypeError: 'int' object is not subscriptable
補足
特になし
0 コメント