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

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

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

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

Q&A

解決済

1回答

725閲覧

関数の中で関数が呼び出せない

OHASI

総合スコア97

Python

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

0グッド

0クリップ

投稿2021/12/05 10:21

前提・実現したいこと

学校の課題をやっています。構文エラーにはまって困っています。

問題:下に示すプログラム(コード1)は、氏名と氏名から生成されるイニシャルを格納する Profile クラスの
設計を目指し途中まで作成されたものである。このプログラムに対し、イニシャル生成処理の実装と内部デ
ータに直接アクセスさせないようデータの秘匿を行い、クラスの設計を完成させよ。
その際に以下の条件を守ること。

<条件>

  1. クラスが持つ属性(インスタンス変数)は全て private な属性とする事
  2. 性・名のデータからイニシャルを生成する private なメソッド__setInitial()を実装する事
  3. イニシャルの文字列は「(First Name の最初の文字).(Last Name の最初の文字).」の4文字

で構成すること
4. 改変後のコードに示すクラス定義の1行目及び後半のコードはそのまま用いる事
5. 後半のコードの input()では半角文字が入力される想定で、エラー処理は考慮しなくて良い
6. setName()を経由してインスタンスに渡された性・名のデータに対し、Last Name は全て大文字に、
First Name は先頭のみ大文字にして各インスタンス変数に格納する処理を追加する事

python

1#コード1 2 3class Profile(object): 4 def __init__(self): 5 self.firstName = 'fiestName' 6 self.lastName = 'lastName' 7 self.initial = 'initial' 8 9 def __getFirstName(self): 10 return self.firstName 11 12 def __getLastName(self): 13 return self.lastName 14 15 def __getInitial(self): 16 return self.initial 17 18 def __setInitial(first,last): 19 return self.initial 20 21 def __setName(fn,ln): 22 return self.initial 23 24x = Profile() 25print('初期値の入力:', x.__getFirstName(), x.__getLastName(), x.__getInitial()) 26print('First Nameを入力(小文字)') 27fn = input() 28print('Last Nameを入力(小文字)') 29ln = input() 30 31x.setName(fn,ln) 32 33print('設定された名前の出力:', x.getFirstName(), x.getLastName(), x.getInitial()) 34

###このように出力したい

First Nameを入力(小文字) taro ←入力 Last Nameを入力(小文字) nakata ←入力 設定さてた名前の出力:Taro NAKATA T.N.

発生している問題・エラーメッセージ

invalid syntax

該当のソースコード

python

1self.__getFirstName(fn):

###自分が書いたソースコード

python

1class Profile(object): 2 def __init__(self): 3 self.firstName = 'fiestName' 4 self.lastName = 'lastName' 5 self.initial = 'initial' 6 7 def __getFirstName(self): 8 a= self.firstName 9 a = a.capitalize() #1文字目を大文字にする 10 self.firstName = a 11 return self.firstName 12 13 def __getLastName(self): 14 b = self.lastName 15 b = b.upper() #大文字にする 16 self.lastName = b 17 return self.lastName 18 19 def __getInitial(self): 20 return self.initial 21 22 def __setInitial(first,last): 23 c = first + '.' + last + '.' 24 self.initial = c 25 return self.initial 26 27 def __setName(fn,ln): 28 self.__getFirstName(fn): 29 self.__getLastName(ln): 30 31 #文字型にする 32 first = str(fn) 33 last = str(ln) 34 35 #最初の文字を取得 36 first = first[0] 37 last = last[0] 38 #大文字にする 39 first = first.upper() 40 last = last.upper() 41 self.__setInitial(first,last): 42 return 43 44x = Profile() 45print('初期値の入力:', x.__getFirstName(), x.__getLastName(), x.__getInitial()) 46print('First Nameを入力(小文字)') 47fn = input() 48print('Last Nameを入力(小文字)') 49ln = input() 50 51x.setName(fn,ln) 52 53print('設定された名前の出力:', x.getFirstName(), x.getLastName(), x.getInitial()) 54

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

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

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

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

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

guest

回答1

0

ベストアンサー

self.__getFirstName(fn):

末尾にコロンが付いているので文法エラーです。
何を意図して付けたのでしょうか?

投稿2021/12/05 10:41

otn

総合スコア85901

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

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

OHASI

2021/12/05 20:56

ありがとうございました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問