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

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

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

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

Python

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

Q&A

解決済

3回答

2548閲覧

Pythonでチェックディジットの算出プログラムについて

APython

総合スコア1

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2022/01/28 13:28

JANコードの12桁を入力してチェックディジットを計算するプログラムを
勉強しているのですが、色々な方のプログラム見て勉強しているのですが
わからないコードがあります。

jan = str(input('JANコードを入力'))
odd_sum = 0
even_sum = 0

for i in range(0,12): #inputで入力されたデータi[0]~i[11]まで
if (i + 1) % 2 == 0: # 偶数桁
even_sum += int(jan[i])
else: # 奇数桁
odd_sum += int(jan[i])

sum1 = int(str(3 * even_sum + odd_sum)[-1])

質問1
for の中にあるif ( i + 1 )%2==0:の【 i+1 】は何をしているのでしょうか?
偶数番目を探して2で割って余りが0と見ているのでしょうか?

質問2
sum1の中にある [-1] は何を表しているのでしょうか。

初心者にもわかるように説明していただけると嬉しいです。
よろしくお願いします。

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

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

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

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

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

guest

回答3

0

質問1:
Pythonを含む多くのプログラミング言語で添え字(この場合文字位置)はゼロから始まりますが、日常の言葉遣いでは1から始まります。例:「ABCの1番目の文字はAだ」
JANコードの「奇数文字目」「偶数文字目」も最初の文字が1番目(奇数番目)という位置づけなので、ゼロ始まりの添え字に1を足して1始まりにします。

質問2:
Pythonを含む多くのプログラミング言語で添え字-1は最後の要素(この場合は右端の文字)を意味します。

投稿2022/01/28 14:25

otn

総合スコア84533

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

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

APython

2022/01/29 00:18

添字という概念を理解しないといけないですね。 ありがとうございました。
guest

0

質問1
for の中にあるif ( i + 1 )%2==0:の【 i+1 】は何をしているのでしょうか?
偶数番目を探して2で割って余りが0と見ているのでしょうか?

そのようですね。
変数 i が 0 のときは 1行目(奇数行目)、1 の ときは 2行目(偶数目) なのでしょう。
(0 + 1) % 2 は 1 で奇数、(1 + 1) % 2 は 0 で偶数と判定できます。

質問2
sum1の中にある [-1] は何を表しているのでしょうか。

インデックスのマイナスは最後から数えます。-1 は最後の要素という意味です。
str(数値) で数桁の文字列になった場合に最後の1文字を取り出すことになります。

投稿2022/01/28 14:23

shiracamus

総合スコア5406

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

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

APython

2022/01/29 00:18

インデックスの後方から数えるときに使うのですね。 ありがとうございました。
guest

0

ベストアンサー

  • 質問1
    for の中にあるif ( i + 1 )%2==0:の【 i+1 】は何をしているのでしょうか?
    偶数番目を探して2で割って余りが0と見ているのでしょうか?

Pythonでは配列のインデックスは0から始まりますが、日本人を含む多くの国では数字を1から始める習慣です。
そのため、i=0を1行目とするために1を足しています。
すると、iが1とか3の時に偶数行だと考えてよいことになります。

  • 質問2
    sum1の中にある [-1] は何を表しているのでしょうか。

str(3 * even_sum + odd_sum)という文字列の一番後ろの文字であることを表しています。

投稿2022/01/28 14:23

ppaul

総合スコア24666

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

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

APython

2022/01/29 00:19

str(3 * even_sum + odd_sum)の一番最後を表すというのがとても分かりやすかったです。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問