私は、何かが真実である場合は文字列を出力し、そうでない場合は別の文字列を出力するためにターナリを使用しようとしていました(十分に単純ですよね?)。エラーは発生せず、問題は発生しないようです。ただし、実行中は...
print('[',dr+1,']\t',d[dr] if fullpath else '[',dr+1,']\t',d[dr].split("/")[len(d[dr].split("/"))-2], sep='')
...印刷します
'[',dr+1,']\t'
2回。たとえば、次のように出力します。
[1] [1] Accoustic
[2] [2] Classical
[3] [3] Epic
[4] [4] Rock
[5] [5] Spoof
[6] [6] Techno & Electronic
必要に応じて、変数が何であるかを確認するために(これは単なる概念の問題であるため、問題ではありません)、ここで残りのコードを確認できます。
それが変数かもしれないと思って、私はステートメントを別々に(三元なしで)印刷しようとしました、そしてそれらは私が期待したように(すなわち奇妙な重複なしで)出てきました。変数が問題ないことを知って、(文字列が混ざらないように)括弧で文字列を囲んでみましたが、Pythonはそれらを文字通りに解釈するため、文字列ではなく配列として出力されました。また、Pythonはデータ型を組み合わせることができないため、(コンマの代わりに)+記号は機能しません。私はステートメントをに変更することになりました
print('[',dr+1,']\t',d[dr]) if fullpath else print('[',dr+1,']\t',d[dr].split("/")[len(d[dr].split("/"))-2], sep='')
そしてそれはうまくいきます。
コーディングはさておき、最初の文字列が2回印刷されるのはなぜですか?