0

「mylist」には、「video」、「audio」、「visual」、または 3 つすべての値を含めることができると仮定します。文字列が「mylist」にある場合、スクリプトで一致するデータをリスト「files」に追加する必要があります。これは、「mylist」に文字列が1つしかない場合に機能しますが、複数の文字列がある場合は最初の文字列のみ「mylist」で一致します。「and if」と同等の「elif」の代わりに使用できるものはありますか?

 if request.method == 'POST':
    mylist = request.POST.getlist('list')
    files = []
    if 'video' in mylist:
      files.append('/home/dbs/public_html/download/codex/codex.html')
    elif 'audio' in mylist:
      files.append('/home/dbs/public_html/download/audio/audio_player.html')
    elif 'visual' in mylist:
      files.append('/home/dbs/public_html/download/visual/visual.html')
    return HttpResponse(files)
  else:
    return http.HttpResponseForbidden()
4

2 に答える 2

10

ifの代わりに使用するだけですelif

if 'video' in mylist:
    files.append('/home/dbs/public_html/download/codex/codex.html')
if 'audio' in mylist:
    files.append('/home/dbs/public_html/download/audio/audio_player.html')
if 'visual' in mylist:
    files.append('/home/dbs/public_html/download/visual/visual.html')

`... in mylistマッピング オブジェクトとループを使用することもできます。これは、コードを繰り返す必要がないため、複数の項目がある場合に適しています。

paths = {
    'video': '/home/dbs/public_html/download/codex/codex.html',
    'audio': '/home/dbs/public_html/download/audio/audio_player.html',
    'visual': '/home/dbs/public_html/download/visual/visual.html'
}

files += [path for key, path in paths.iteritems() if key in mylist]
于 2012-06-14T20:16:19.637 に答える
5

なぜそうしないのですか?発生する場合は、それぞれのケースが必要です。各句の間に関係はありません。:)

于 2012-06-14T20:16:53.443 に答える