前提・実現したいこと
学校の課題をやっています。構文エラーにはまって困っています。
問題:下に示すプログラム(コード1)は、氏名と氏名から生成されるイニシャルを格納する Profile クラスの
設計を目指し途中まで作成されたものである。このプログラムに対し、イニシャル生成処理の実装と内部デ
ータに直接アクセスさせないようデータの秘匿を行い、クラスの設計を完成させよ。
その際に以下の条件を守ること。
<条件>
- クラスが持つ属性(インスタンス変数)は全て private な属性とする事
- 性・名のデータからイニシャルを生成する private なメソッド__setInitial()を実装する事
- イニシャルの文字列は「(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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/05 20:56