質問するログイン新規登録
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

4回答

699閲覧

2進数から10進数に変換するpythonのコードが書けない

kirio

総合スコア13

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/07/18 04:01

編集2023/07/18 04:38

0

0

実現したいこと

整数N(8桁以内)が二進数表記で与えられます。Nを十進法に変換した値を出力するプログラムを作成したいです。

前提

pythonで実行しています。

発生している問題・エラーメッセージ

2進数から10進数への変換方法は理解しているのですが、それをコードに書き起こすことが出来ません。何度か試してみたのですが、エラーになったり、標準入力からの2進数をそれぞれ要素として取り出す方法が分かっていません。私の意味不明なコードより、参考にしている文献の付録のコードの方が分かりやすいと感じたので、コードを挙げていますが、自分で書いたコードを載せた方が良いのであれば、ご指摘ください。

該当のソースコード

Python
ソースコード
N = int(input())

for x in [9,8,7,6,5,4,3,2,1,0]:
wari = (2 ** x)
print((N // wari) % 2, end='')

print("")

これは参考にしている2進数に変換するプログラムです。

#自分で書いたプログラム
N = list(map(int, input().split())

for x in [9,8,7,6,5,4,3,2,1,0]:
for y in N:
kake = (N[y] * 2 ** x)
print(kake)

#エラーメッセージ
File "./Main.py", line 5
for x in [9,8,7,6,5,4,3,2,1,0]:
^
SyntaxError: invalid syntax

試したこと

for分の1行目をそのままに、掛け算、足し算するプログラムを書きましたが、二進数をinput()を用いて分割する方法が分からず、完成させることが出来ませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakaiY

2023/07/18 04:04

> 自分で書いたコードを載せた方が良いのであれば、ご指摘ください。 ぜひそのコードも提示ください。 その方がわからないところの的確なアドバイスが得られると思います。
guest

回答4

0

解決ずみですが、累乗を何度も計算するのは大変 (誰が?) なので

python

1bin = input() 2 3dig = 0 4for c in bin: 5 dig = dig * 2 6 if c == '1': 7 dig = dig + 1 8 9print(dig)

投稿2023/07/19 09:30

ikedas

総合スコア4441

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kirio

2023/07/19 09:40

ありがとうございます。前回の質問にも答えて頂きまして、大変ありがたい次第です。とても分かりやすいです。
kirio

2023/07/19 09:46

無言でフォローしまして、申し訳ないです。分かりやすく、丁寧な対応をして頂きましたので、フォローさせて頂きました。
ikedas

2023/07/19 10:10

いや、いいと思った人は気兼ねなくフォローして構わないです。されたほうも悪い気はしません。 質問に回答するのも勉強になるのでやっています。これからも勉強させてください。
kirio

2023/07/20 02:52

あたたかいお言葉ありがとうございます。とても向上心が強い方のようで、尊敬致します。今後ともよろしくお願いいたします。だいぶ先にはなってしまうと思うのですが、いつか回答者側に立ち回れるよう、精進してまいります。ikedas様のような、分かりやすく、優しい回答者を目指していきます。
guest

0

自己解決

input2hex = input()
list2hex = list(input2hex)
input_len = len(input2hex)
output = 0

for i in range(input_len):
output += int(list2hex[i]) * (2 ** (input_len - i - 1))

print(output)

解決しました。

投稿2023/07/18 06:37

kirio

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2023/07/19 09:58 編集

以下の様にしてもよいかと。 input2hex = input() output = sum(1<<i for i, b in enumerate(input2hex[::-1]) if b == '1') print(output)
kirio

2023/07/20 02:54

コメントありがとうございます。参考にさせて頂きます。
guest

0

二進数をinput()を用いて分割する方法

何がわからのいのか今一つわかりませんが、こういうことでしょうか?

python

1 2nishin = input('2進数を入力してください。: ") 3 4# for文で回せます 5for digit_base2 in nishin: 6 print(digit) 7 8# リストとして取得することもできます。 9digit_list = list(nishin) 10print(digit_list)

pyhonの文字列は、文字の配列としての性質を持っていますので、for文にそのまま与えると、1文字ずつ取り出せます。
また、リストにしたければ、list()関数に与えると1文字ずつのリストになります。

投稿2023/07/18 04:12

TakaiY

総合スコア14574

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

整数N(8桁以内)が二進数表記で与えられます。Nを十進法に変換した値を出力するプログラムを作成したいです。

python

1N = input() 2digit = int(N, 2) 3print(digit)

bash

1$ python3 2to10base.py 210111 323

詳しいことは int のヘルプメッセージを参照してみてください。

python

1>>> help(int) 2 3class int(object) 4 | int([x]) -> integer 5 | int(x, base=10) -> integer 6 | 7 | Convert a number or string to an integer, or return 0 if no arguments 8 | are given. If x is a number, return x.__int__(). For floating point 9 | numbers, this truncates towards zero. 10 | 11 | If x is not a number or if base is given, then x must be a string, 12 | bytes, or bytearray instance representing an integer literal in the 13 | given base. The literal can be preceded by '+' or '-' and be surrounded 14 | by whitespace. The base defaults to 10. Valid bases are 0 and 2-36. 15 | Base 0 means to interpret the base from the string as an integer literal. 16 | >>> int('0b100', base=0) 17 | 4

投稿2023/07/18 04:11

編集2023/07/18 04:16
melian

総合スコア21343

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問