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

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

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

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

Q&A

解決済

3回答

3406閲覧

関数・メインとの関係で、プログラムの処理順序がわからなくなって来ました。

pontoon

総合スコア28

Python

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

0グッド

0クリップ

投稿2020/09/21 21:37

お世話になっております。
Python3.8.5をWindows10下で使っております。

下記プログラムでは、どんな順番で、
プログラムは進行するのでしょうか?
Main routineの方から先に入っていくはずだと思うのですが、
デバッガーを起動すると、
そこは最初は引っかからず、関数のcofactorや、同じ関数のdeterminantの
方に先に入っていくのですが。。。
私の思い違いでしょうか?

coding: Matrix

print("")
print("Kia ora!")
print("")

def cofactor(i,j,A):
n = len(A[0])
B = [ ]
for k in range(n):
if k==i:
continue
x=[ ] # gen row vector
for l in range(n):
if l==j:
continue
x.append(A[k][l])
B.append(x)
print(x)
return B

cofactor expansion

def determinant(A):
n=len(A)
if n==1:
return A[0][0]
det=0
for i in range(n):
det = det + (-1)**(i+0) * A[i][0] * determinant(cofactor(i,0,A))
return det

Main Part

X=[[1,3,2,4,5],
[2,4,3,1,3],

[3,1,2,5,4],

[3,1,2,3,4],
[4,5,3,2,1],
[5,2,1,4,3]]

d=determinant(X)
c=cofactor(i,j,A)

print("*** Determinant ==> ***")
print(d)
print("")

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

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

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

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

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

y_waiwai

2020/09/21 22:31

このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
meg_

2020/09/21 23:51

コードは「コードの挿入」で記入してください。
guest

回答3

0

ありがとうございます。
また、お返事が遅れまして、申し訳ございません。
やはり、メイン側で、インデントが引っ込んでいた部分があって、
今しがた、それを前に出して、
関数2つの頭とその次、メインの頭とその次で引っ掛けたら、
今度は、メインの方から入って来てくれました。
すみませんでした。
C言語をそこが違いますね。
今後は、気をつけます、

投稿2020/09/23 05:00

pontoon

総合スコア28

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

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

0

ありがとうございます。
また、お返事が遅れまして、申し訳ございません。
やはり、メイン側で、インデントが引っ込んでいた部分があって、
今しがた、それを前に出して、
関数2つの頭とその次、メインの頭とその次で引っ掛けたら、
今度は、メインの方から入って来てくれました。
すみませんでした。
C言語をそこが違いますね。
今後は、気をつけます、

投稿2020/09/23 04:54

pontoon

総合スコア28

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

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

0

ベストアンサー

Pythonはコードを上から順番に実行しますが、:で終わる行の次からの複数行インデント(字下げ)は、他の言語での{}のようなコードブロックを表現します。またインデントは多重化(ネスト)できます。

そのため、下記のコードのように適切なインデントをしていれば、コード内にコメントした数字の順番でステップ実行されるはずです。先に関数内に入ってしまうようであれば、インデントが不適切な箇所があるはずです。

Python

1# coding: Matrix 2print("") # 1 3print("Kia ora!") # 2 4print("") # 3 5 6def cofactor(i,j,A): # 4 7 n = len(A[0]) 8 B = [ ] 9 for k in range(n): 10 if k==i: 11 continue 12 x=[ ] # gen row vector 13 for l in range(n): 14 if l==j: 15 continue 16 x.append(A[k][l]) 17 B.append(x) 18 print(x) 19 return B 20 21# cofactor expansion 22def determinant(A): # 5 23 n=len(A) 24 if n==1: 25 return A[0][0] 26 det=0 27 for i in range(n): 28 det = det + (-1)**(i+0) * A[i][0] * determinant(cofactor(i,0,A)) 29 return det 30 31# Main Part 32X=[[1,3,2,4,5], # 6 33[2,4,3,1,3], 34 35# [3,1,2,5,4], 36[3,1,2,3,4], 37[4,5,3,2,1], 38[5,2,1,4,3]] 39 40d=determinant(X) # 7 41c=cofactor(i,j,A) 42 43print("* Determinant ==> *") 44print(d) 45print("")

投稿2020/09/22 01:36

toast-uz

総合スコア3266

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問