2017-06-08 12 views
1

私はこのプログラムを作っており、リストを印刷する必要があります。リストがもう少し正しいなら、私は好きです。私はそれが正しいようにするためにリストの最後の要素の前に "and"を追加することが可能かどうか疑問に思っていました。ありがとう。リストの最後の要素の前に "and"を追加するには?

def inputEat(self): 
     input('What would you like to eat? Your choices are {}.'.format(', '.join(healthItems))) 
     Fighter.Health(x) 
     if self.health >= 100: 
      self.health = 100` 

答えて

4

あなたは参加リストにあなたが望む方法を構築する機能を持つことができ:

def join_and(items): 
    return ', '.join(items[:-1]) + ' and '+items[-1] 

コンマで最後以外のすべての項目に参加し、で、その後、追加します'と'最後の項目の前に。

:(。あなたの裁量でオックスフォードのコンマを追加すること自由に感じなさい)

>>> join_and(['alpha', 'beta', 'gamma']) 
'alpha, beta and gamma' 

を使用すると、長さが1または0のリストについては、適切な結果を与える機能をしたい場合は、このような何かを行うことができます

def join_and(items): 
    if len(items)==0: 
     return '' 
    if len(items)==1: 
     return items[0] 
    return ', '.join(items[:-1]) + ' and '+items[-1] 
+0

'join_and(['oneitem'])'は 'とoneitem 'を返します。 'items'の長さを確認することをお勧めします。 'return '、' .join(items [: - 1])+ '、' + str(items [-1]) 'も推奨します。 – Baldrickk

+0

@Baldrickk 1つの項目のリストが何であるかを知ることができますが、非文字列のリストを持っていれば、その文字列を関数に渡すときに文字列にマップすると思います。 str'を使用して変換する必要があります。 ['str.join'](https://docs.python.org/2/library/stdtypes.html#str.join)は文字列シーケンスでのみ機能します。 – khelwood

+0

ああ、もちろん。 – Baldrickk

1

これを試してみてください:

  • は、あなたが最後のものを除いて、やっていたようなすべての項目に参加。
  • 最後の項目をとで明示的に連結します。

input('What would you liketo eat? Your choices are {}.'.format(', '.join(healthItems[:-1]) + ' and '+healthItems[-1]))

関連する問題