Python リストのデータを文字列から数値に変換したい

実現したいこと

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 コメント