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

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

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

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

Q&A

解決済

4回答

229閲覧

Python3 print()の引数の定義について

symgc

総合スコア18

Python 3.x

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

0グッド

0クリップ

投稿2019/04/15 07:46

編集2019/04/16 06:48

Python3

1def print_picnic(items_dict, left_width, right_width): 2 print('PICNIC ITEMS'.center(left_width + right_width, '-')) 3 for k, v in items_dict.items(): 4 print((k, ljust(left_width, '.') + str(v).rjust(right_width)) 5 6 7picnic_items = {'sandwiches': 4, 'apples': 12, 'cups': 4, 'cookies': 8000} 8print_picnic(picnic_items, 12, 5) 9print_picnic(picnic_items, 20, 6) 10

上記のコードの4行目のprint()の引数について。
/usr/local/bin/python3.7 /Users/***/PycharmProjects/MyProject/picnicTable.py
---PICNIC ITEMS--
Traceback (most recent call last):
File "/Users/***/PycharmProjects/MyProject/picnicTable.py", line 8, in <module>
print_picnic(picnic_items, 12, 5)
File "/Users/***/PycharmProjects/MyProject/picnicTable.py", line 4, in print_picnic
print(k, ljust(left_width, '.') + str(v).rjust(right_width))
NameError: name 'ljust' is not defined

Process finished with exit code 1
というエラーコードが出ます。ljustをどのように定義したらいいのでしょうか。

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

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

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

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

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

yoorwm

2019/04/15 07:48

インデントが無いとエラーになりますよ
_Victorique__

2019/04/15 07:55 編集

ブラウザバグによる連投失礼しました。
dit.

2019/04/16 04:39

せっかく質問編集したならコード部分をコードブロックにしてください。 LouiS0616さんが回答中で図説してくれていますが、「コード部分を選択し<code>ボタンを押す」、「『ここに言語を入力』の部分をpythonに直す」です。
_Victorique__

2019/04/16 07:08

もうちゃんと一からプログラミングの勉強したらどうでしょう? これからもこんな質問続けるつもりでしょうか?
Y.H.

2019/04/16 07:16

質問内容が丸ごと変わった…
symgc

2019/04/17 10:19

teratailが水準の高い方の集まりであることが理解できました。私はプログラミングの勉強を始めた人間です。しかも一人で勉強していますからどこに質問をするのが妥当なのかわかりません。しかも、『退屈なことはpythonにやらせよう』はおそらくpython2で書かれていてpython3の環境では違う結果が出てくるのだと推測します。本来はそれを質問したのだと思いますが、質問の仕方が悪かったので妥当な回答がなかったのだと思います。 そこで、提案ですがteratailのあり方を入門・中級・上級に切り分ける設定にするのはどうかと思います。そのようにすることが極めて生産的なことだと思います。ただしその場合入門者を担当するのは最も知識が豊富で、しかも忍耐力がある人が担当すべきでしょう。私は長年あまり勉強が得意でない生徒が多数を占める学校の教師をしていましたからこのように感じます。質問を入門・中級・上級に切り分けることは割に簡単なことだと思います。難しいことを教えることが立派なことではないと思います。
symgc

2019/04/17 10:34

追伸 今後プログラミング学習が小学校から行われるようになれば、混乱はこの程度では済まなくなるでしょう。teratailの閉鎖という事態にもみまわれるでしょう。それに対処する必要があるでしょう。閉鎖的になるのか、開放的になってきちんと整理できるようになるのか、今がそのタイミングだと思います。
symgc

2019/04/17 10:48

再追伸 きちんと質問できることは、ほとんど答えに99%近づいたときにできることであって、なんかよくわからないなあという状態の時にできることではありません。質問することの難しさと的確に回答することの困難さを十分わかっておられないと感じます。教師としての長年の経験からそのように思います。
_Victorique__

2019/04/17 12:08

それと利用規約を読めないことは別だと思いますが。
Y.H.

2019/04/17 12:20 編集

一つのこの質問のコメントの中で埋もれてしまうのも勿体ないので teratail の運営に関わる疑問や提案などについては タグ「teratail」を付けて質問(提案)して頂ければと思います。 既に様々な質問・回答が御座いますので一読されるのも良いかと思います。 https://teratail.com/tags/teratail
guest

回答4

0

不可解なSyntaxErrorが出る際は、直前の行にも着目してください。

Python

1print((k, ljust(left_width, '.') + str(v).rjust(right_width)) 2# ^ これなに?

開き括弧と閉じ括弧が適切に対応していません。

コードの書き方について

teratailには、コードを見やすく表示する機能があります。
質問編集画面を開き、コードを選択した状態で<code>ボタンを押して下さい。
Python
特にPythonの場合、インデントが崩れるとコードの意味が変わってしまいます。

投稿2019/04/15 07:48

編集2019/04/15 07:49
LouiS0616

総合スコア35660

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

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

symgc

2019/04/15 14:19

誠にわかっていないのですが。「# ^これなに」の内容は何なのでしょう。
LouiS0616

2019/04/15 14:21

コメント行です。^は↑の代わりに使ってます。
guest

0

4行目のprintの引数のうちljustの前にk.を入れると一応所期のものが出ました。しかし右端がきれいにそろいません。これはどうしたものでしょうか。

投稿2019/04/16 05:12

編集2019/04/16 05:23
symgc

総合スコア18

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

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

Y.H.

2019/04/16 05:28

「なぜSyntaxErrorになるのでしょうか」という質問とは別の問題なので、改めて質問してください。 質問する際は 以下を一読されてから質問してください。回答が得られやすくなりますよ。 ヘルプ https://teratail.com/help 質問するときのヒント https://teratail.com/help/question-tips
guest

0

関数名で調べたら模範解答が出てきますね。

https://github.com/oreilly-japan/automatestuff-ja/blob/master/ch06/picnicTable.py

すでに指摘のあるカッコ以外にも ljust でエラーが発生したりしますね。
写経をするときは、一つ一つミスのないように確認しながら記述しましょう。

投稿2019/04/15 08:03

mather

総合スコア6753

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

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

symgc

2019/04/15 14:02

模範解答にまちがいがあるようにおもいます。
symgc

2019/04/15 14:22

ljustで確かにエラーが発生しますが、どのように解決したらいいのでしょうか。
mather

2019/04/15 15:45

「間違いがあるように思います」という場合は具体的に何が違うと思うのか書きましょう。 発生しているエラーを解決したい場合は「エラーが発生したときのコード(質問に書いたときのコードから変わっているはずです)」と「どんなエラーが出たか」を **元のコードを書き換えずに追記** してください。
guest

0

ベストアンサー

右端の)が足りてません。
×:print((k, ljust(left_width, '.') + str(v).rjust(right_width))
○:print((k, ljust(left_width, '.') + str(v).rjust(right_width)))

投稿2019/04/15 07:50

can110

総合スコア38266

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

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

symgc

2019/04/15 14:04

上で)は足りているのではないでしょうか。
can110

2019/04/15 14:12

足りてません。実際にカッコの数を数えてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問