次のプログラムで
def say_hi(name, age = 80,address):
print("hi {0} ({1})({2})".format(name, age,address))
say_hi("tom", 23,"hatinohesi")
say_hi("bob",55,"akitasi")
say_hi("steve",90,"kuroisisi")
say_hi(age = 18, name = "rick",address="otarusi")
ではエラーになって結果が表示されないが
def say_hi(name, age = 80,address=""): #address="" とした
print("hi {0} ({1})({2})".format(name, age,address))
say_hi("tom", 23,"hatinohesi")
say_hi("bob",55,"akitasi")
say_hi("steve",90,"kuroisisi")
say_hi(age = 18, name = "rick",address="otarusi")
hi tom (23)(hatinohesi)
hi bob (55)(akitasi)
hi steve (90)(kuroisisi)
hi rick (18)(otarusi)
と表示されるのは何故なんでしょうか
また print("hi {0} ({1})({2})".format(name, age,address))の{0} ({1})({2})は
{0} {1}{2}ではどうしてだめなんでしょうか。
No.2ベストアンサー
- 回答日時:
> エラーになって
> だめなんでしょうか
質問するときは、具体的に書きましょう。
・エラーが出ているのなら、そのメッセージを読みましょう。
エラーになった理由はそこに書いてあります。
質問する場合は、コピペしましょう(個人情報等は編集しましょう)
・何が「だめ」なのかを書きましょう。
エラーになってしまう
と
思ってたのと違う
とでは対処方法が違います。
○エラー
マニュアルを読みましょう。
https://docs.python.org/ja/3.9/reference/compoun …
> 1 つ以上の 仮引数 が parameter = expression の形を取っているとき、関数は "デフォルト引数値" を持つと言います。
> ある引数がデフォルト値を持っている場合、それ以降 "*" が出てくるまでの引数は全てデフォルト値を持っていなければなりません
def say_hi(name, age = 80,address):
は age=80 の形を取っているので、「デフォルト値を持っている」ことになります。
そのため、age=80「以降 "*" が出てくるまでの引数は全てデフォルト値を持っていなければなりません」
ですが、 address はデフォルト値を持っていません。
よって、エラーになります。
○だめ
https://docs.python.org/ja/3.9/library/stdtypes. …
フォーマット文字列.format(対応する値,...(
という形で使われ、フォーマット文字列内の {0}{1}... 等は、それぞれ「対応する値の0番=1つめ」「対応する値の1番=2つめ」... に対応します。
それ以外の文字は、そのまま使われます。
print("hi {0} ({1})({2})".format("tom", 23,"hatinohesi"))
だと
hi tom (23)(hatinohesi)
と出力されます
print("hi {0} {1}{2}".format("tom", 23,"hatinohesi"))
だと
hi tom 23hatinohesi
と出力されます。
・Pythonとしてはどちらも「正しい」ものです。
・「hi tom 23hatinohesi」という出力が、あなたが欲しい結果でなければ{0} {1}{2}では「だめ」です。
No.4
- 回答日時:
>と表示されるのは何故なんでしょうか
書式文字列に忠実に出力されてるけど、
書式文字列の読み方を知りたいってこと?
>print("hi {0} ({1})({2})".format(name, age,address))の{0} ({1})({2})は
>{0} {1}{2}ではどうして駄目なんでしょうか?
何が駄目なのか解らない。
エラ―が起きるなら見えない不正な文字がソースに
紛れているのでしょう。
出力形式が気に入らないならどうしたいのか書こう。
年齢と住所を離したいなら {0} {1} {2} と適宜隙間を
入れればいい。
No.3
- 回答日時:
SyntaxError: non-default argument follows default argument
と出てた筈だよ。
「既定値のある引数の後ろに既定値のない引数がある。」
No.1
- 回答日時:
> エラーになって結果が表示されないが
少なくともどこでどういうエラーになってるかは確認しましょう。単にエラーで動きませんではどうしようもありません。
この場合はprint は全然関係なくて、ただ単に途中の引数だけに省略時引数を与えても駄目だと言う、それだけのことだと思いますよ。
print の括弧は、単に出力の形がどうなるかというだけの問題です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 主組成列 2 2022/08/19 13:21
- 冷蔵庫・炊飯器 炊飯器について 圧力炊飯器とhi炊飯器でhiのみの方がシャッキリの食感に炊き上がりますか、圧力hi炊 2 2022/09/22 05:44
- カラオケ 宮本浩次の音域ってLowG〜Hi Hi Bでかなり広いです? 1 2023/07/04 18:40
- 楽器・演奏 ドラムの楽譜でこの五線譜を飛び出しているのはどこを叩けばいいのでしょうか。 Hi-Tom?? 2 2023/03/18 09:32
- シューズ・ブーツ コンバースオールスターの「CANVAS ALL STAR J HI」と「CANVAS ALL STA 2 2022/12/30 17:22
- ドライブ・ストレージ 「Hi-Disc」ブランド光学メディアの信頼性は上がったのですか? 4 2022/10/16 16:03
- 冷蔵庫・炊飯器 炊飯器について 圧力hi炊飯器の方がhi炊飯器よりも米の種類で食感が大きく変わりますか? 2 2022/06/04 17:06
- アニメ 逆襲のシャアベルトーチカチルドレンは公式ですか? 逆シャアは νガンダム、サザビー Hi-νガンダム 2 2022/07/17 09:31
- Wi-Fi・無線LAN 今のマンションニ、wi-HIをつなげるかもしれません。 私は、パソコンは、使えないのでせ、スマホだけ 2 2022/04/17 16:21
- スピーカー・コンポ・ステレオ フルデジタルアンプを探しているのですが、AVアンプにはあるようですが、HI-FIオーディオアンプにフ 9 2023/04/14 22:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
実行時エラー 3020の対策
-
【メモリ不足で落ちる(python)】
-
パイソンのクラスについて
-
「*:*」って何を意味するのでし...
-
vscode 文字化け
-
UWSC:ポップアップウインドウ...
-
パイソンプログラミング
-
パイソンのクラスのブログラム
-
VBAで特殊文字を出力したい
-
シェイクスピア 英文 タトゥー
-
VB6のLSETをVB2005で実現するに...
-
エクセルVBA シート名の部分一...
-
C++ コマンドプロンプトでの入...
-
Option Strinct On のなかでの...
-
構造体の各データの表示につい...
-
JSONで文字列が長い時
-
formで特定のinputを送信しない...
-
<SELECT>タグの折り返し
-
16進の10進変換について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
実行時エラー 3020の対策
-
[python] 文字列を変数名として...
-
ACCESS テキストボックスを隙...
-
FindFirst を複数条件で検索
-
【メモリ不足で落ちる(python)】
-
VBA他のブックから値のみ貼付す...
-
構造体の各データの表示につい...
-
パイソンプログラミング
-
VBAでPDFのコピーとリネームを...
-
phpでボタンを押したときに変数...
-
vscode 文字化け
-
vbaでxmlからNodeListでデータ...
-
コンボボックスのtag情報の取得...
-
パイソンのクラスのブログラム
-
「*:*」って何を意味するのでし...
-
構造体の変数の値を、動的に取...
-
パイソンのクラスについて
-
C言語について
-
VBAで特殊文字を出力したい
おすすめ情報