2

今、私は自分のバージョンのゲームの手がかりを作ろうと試みていますが、どうすればよいのかわかりません。推測が間違っている場合、他の推測から、本当の「キラー」ではなく、以前の推測ではないヒントが得られるようにしようとしています。似たような例を挙げます:

    a = input()
    b = input()
    c = input()
    d = input()
    e = input()
    f = input()
    hint = random.choice([a,b,c,d,e,f])
    hint != killer
    hint != previous_guess

これで、ヒント != killer と ヒント != previous_guess は実際には何もしないことがわかりました。ヒントは以前に割り当てられているからです。キラーまたは以前の推測ではない変数からランダムに選択するようにする方法があるかどうか疑問に思っています。前もって感謝します!また、私はPythonを使用していることを指摘したいと思います。

4

2 に答える 2

1

セットを使用して、不要なものを差し引くことができます。

hint = random.choice(list({a, b, c, d, e, f} - {killer, previous_guess}))
于 2012-10-30T01:00:00.660 に答える
0

これがあなたがそれを行うことができる基本的な方法です。これは、効率的な方法でリストを生成するために、いわゆるリスト内包表記の概念を使用します。.format()は文字列の書式設定を示します。これにより、変数をさまざまな形式の文字列に渡すことができます (ドキュメントはこちらですが、今のところ、 が{0}の最初の引数を参照していることがわかりますformat())。

names前述のリスト内包表記を使用して生成され、構文的には次と同等です。

names = []
for i in range(6):
    names.append(raw_input('Enter a name: ')

このパターンは、キラーや以前の推測なしでリストを生成するために後で使用されます。意味をなさない部分を喜んで説明します(私がそこに残した奇妙な点を指摘してくれた@JonClementsに感謝します):

import random


# Choose your names
names = [raw_input('Enter killer name: ') for i in xrange(6)]

# Choose a killer
killer = random.choice(names)

# Run for as many times as you want (here we do 6; could also be len(names)
max_guesses = 6

for guessno in xrange(max_guesses):
  guess = raw_input('Guess the killer: ')
  # If the guess is not the killer...
  if guess != killer:
    # This line creates a list that does not include the killer nor the guess
    hint = random.choice([n for n in names if n not in [killer, guess]])
    print 'Hint, the killer is not {0}'.format(hint)
  else:
    print 'Correct! The killer is {0}'.format(guess)
    break
于 2012-10-30T00:57:51.940 に答える