Def compute_score(tebak, posisi, kata)

# word = 'castle'
# guess comes from previous function (e.g. 'ran')
# position = 0, 1, 2 --> where guess starts in relation to word
    # EG1 - 'ran' at pos=0 'ran', 'castle' --> a in rat and a in castle match
    # EG2 - 'ran' at pos=1 '_ran', 'castle'----> no matches

Saya ingin cara untuk mencocokkan setiap karakter dari tebakan ke setiap karakter dari kata yang diberikan di posisi yang sama dan memberikan skor +100 Jadi untuk EG1 -> a di kedua kata dan posisi yang sama tetapi untuk EG2 -> a dalam kedua kata tetapi tidak dalam posisi yang sama. Setelah karakter diperiksa, ia dimasukkan ke dalam variabel terpisah 'dicentang'

# Then I want to check just characters that are the same in each word
checked = 'a'
for c in guess and not in checked:
    if c in word:
    score = score + 20

Saya tidak tahu bagaimana melakukan bagian pertama -> periksa karakter yang sama DAN di posisi yang sama.

-2
turtle power 19 Agustus 2017, 14:07

2 jawaban

Jawaban Terbaik

Jika Anda menyatukan kedua string, Anda mendapatkan pasangan karakter:

>>> zip("ABC", "aBCde")
[('A', 'a'), ('B', 'B'), ('C', 'C')]

Karakter dari kata yang lebih panjang dengan mudah dibuang. Sekarang masalah Anda adalah memeriksa di mana dua karakter berpasangan sama:

score = 0
for first, last in zip(word, guess):
    if first == last:
        score += 20

Jika Anda ingin menghitung skor dalam satu ekspresi, Anda dapat menggunakan fakta bahwa True == 1 dan False == 0 dan menjumlahkan pemahaman:

score = 20*sum(first==last for (first, last) in zip(word, guess))

Tapi ini terlalu jauh untuk selera sebagian orang, dan bisa membingungkan bagi pemula.

0
holdenweb 11 September 2017, 15:19

Anda dapat menggunakan enumerate() untuk memeriksa indeks saat iterasi karena mengembalikan daftar tupel indeks/karakter, enumerate('test') akan mengembalikan [(0, 't'), (1, 'e'), (2, 's'), (3, 't')]. Jadi Anda dapat melakukan sesuatu seperti:

for i, c in enumerate(guess):
    if c not in checked:
        if word[i] == c:
            score += 20
        checked += c
0
Mohd 19 Agustus 2017, 11:38