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

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

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

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

Q&A

解決済

3回答

1760閲覧

引数のない空白のprint()になぜ引数がないのか

nomaluu

総合スコア34

Python

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

0グッド

0クリップ

投稿2021/08/23 13:45

質問

なぜ、以下のコードのfor文の最後の行のprint()の引数がなくて実行できるのかご教授お願い致します。

python

1コード 2import csv 3f = open('Sample.csv','r',encoding = 'utf-8') 4 5rd = csv.reader(f) 6 7for row in rd: 8 for col in row : 9 print(col,end = ',') 10 print() 11f.close()

**csvファイル(Sample.csv)
東京,鉛筆,25,
東京,消しゴム,30,
名古屋,ノート,56,
大阪,定規,100,
福岡,ノート,73,

#質問の理由
例えば、以下の「A」と「B」のコードにおいてprint()の引数がない「A」のコードでは実行結果が空白になるに対して、引数のある「B」のコードはリストを出力できているからです。

python

1コード 2a = [4,5,6,7]  #Aのコードとする 3for b in a : 4 print()              5#実行結果(空白)  67 8 910 11a = [4,5,6,7] #Bのコードとする 12for b in a : 13 print(b)        14#実行結果  154 165 176 187

環境

python3.9.5
vscode
windows10

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

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

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

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

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

guest

回答3

0

まずは公式ドキュメントを読みましょう。

公式リファレンスを読むと、

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

とあります。

デフォルト引数として渡されているので、引数無しだと「改行」の役割をします。

投稿2021/08/24 07:04

BeatStar

総合スコア4962

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

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

0

ベストアンサー

print()の引数がない「A」のコードでは実行結果が空白になるに対して

なっていません。きちんと改行を出力しています。

objects(引数) が与えられなければ、 print()end(特に指定しなければ、改行) だけを書き出します。(Python3 リファレンスより)

投稿2021/08/23 13:48

maisumakun

総合スコア145930

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

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

maisumakun

2021/08/23 13:49

上のコードでも、print()は「改行を出力する」役割を果たしています。
nomaluu

2021/08/23 13:52

回答ありがとうございます。つまり、'\n'と同じということでいいですか??
udon-ken

2021/08/23 16:15

> '\n'と同じということでいいですか?? \nと何が同じと言っているのかわかりませんが、 print("\n")とprint()が同じか?と言っているのなら、同じではありません。 print(col,end = ',') の意味を理解しているなら分かると思いますが、pythonのprint()はend=で出力後に付けたして出力する文字列を指定できます。 end=の指定をしなかった場合はend="\n"と指定されたとみなされます。 これが print("abc") print("def") とした時、2行に分かれて出力される理由です。 そして提示のコードはなぜend=","としていて何故提示の結果になるか分かりますよね? それがわかれば、 print("\n")とprint()が違う事が分かると思います。 というか、やってみればわかります。
nomaluu

2021/08/24 15:42

返信ありがとうございます。説明不足ですいません。よくわかりました。
guest

0

print関数*objects可変長位置(var-positional)引数というものです。

parameter

可変長位置: (他の仮引数で既に受けられた任意の位置引数に加えて) 任意の個数の位置引数が与えられることを指定します。

ここで任意の個数というのはは0個でもよいことを示しています。
また、sepなど*object以降のキーワード引数はすべてデフォルト値が指定されているので省略可能です。
以上からprint()のように引数がなくてもよくなっています。

以下は一般的な関数での簡単な動作確認例です。

Python

1def f1(*args): 2 return 3 4def f2(a, *args): 5 return 6 7f1() 8f1(1) 9f1(1,2) 10#f2() # TypeError: f2() missing 1 required positional argument: 'a' 11f2(1) 12f2(1,2)

投稿2021/08/24 08:45

can110

総合スコア38339

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問