質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
86.12%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

解決済

atcoder abc083_b Some Sums 解答コードで一部わかりません

AK15
la_2022

総合スコア2

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

2回答

0グッド

0クリップ

159閲覧

投稿2022/12/08 10:01

質問

atcoder abc083_b
Some Sums

atcoderの解答コードで一部わからない部分があるので教えていただきたいです。

問題のリンク先
https://atcoder.jp/contests/abc083/tasks/abc083_b

解答のコード

python

1n, a, b = map(int, input().split()) 2ans = 0 3for i in range(1, n+1): 4 lis_i = [int(x) for x in list(str(i))] 5 val = sum(lis_i) 6 if val >= a and val <=b: 7 ans += i 8print(ans)

わからない部分

python

1lis_i = [int(x) for x in list(str(i))]

なぜ、str(i)で文字型にする必要があるのでしょうか?

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答2

1

ベストアンサー

iに23456 などの数値を入れて、以下の式の値を見ればわかるのではないでしょうか。

python

1list(str(i))

投稿2022/12/08 10:29

TakaiY

総合スコア10458

la_2022👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

AK15

2022/12/08 10:40

回答ありがとうございます! list(i) の場合で実行すると、 TypeError: 'int' object is not iterable というエラーが発生します。 これは、for で繰り返し可能なオブジェクト(iterable)ではないため、一旦、文字型に変換させて繰り返し可能なオブジェクト(iterable)にする必要がある、という認識で合ってますでしょうか?
TakaiY

2022/12/08 10:54

iterableでないからというより、この問題は、 数値の各桁の数を全て足したいわけですから、23456 を、 2, 3, 4, 5, 6 に分解する必要があるのです。数値から構成する数字は直接は取り出せませんが、いくつか方法があります。 - 10で割った余りを取っていく - 文字列にして文字列の性質を使う。 などです。 で、2番目の方法を採るとき、pythonでは文字列は文字リストとして扱える=iterable なので、質問のような方法でできるということです。
AK15

2022/12/08 11:07

大変理解しました!! 分解する方法として扱われていたのですね。 ご丁寧な回答ありがとうございます。

1

i = 123の時
str(i) で"123"とした上でlist化すると["1","2","3"]とできるからではないでしょうか

投稿2022/12/08 10:27

red_snow

総合スコア10

la_2022👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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