Вопрос о поиске совпадающих чисел в списке

#python-3.x #if-statement

#python-3.x #if-оператор

Вопрос:

Я новичок в python и возился со списками и циклами. Я хочу создать игру в кости и бросить кости 5 раз, сохранить ее в списке, а затем найти числа, которые совпадают в указанном списке. но вывод заканчивается тем, что я просто даю мне значение длины списка.

 
import random
        
#I start with an empty list
            
dice = []
            
#Roll 5 random numbers
            
for x in range(0, 5):
    x = random.randint(1,6)
    dice.append(x)
            
#find how many time a number in the list was rolled
            
count = 0
for x in range(6):
    count = dice.count(x)
                
print(“Player rolled:”, dice)
print(count)
        
#The output ends up this:
#Player rolled: [3, 3, 3, 1, 3]
        
#[5]
        ```
#output value I'm looking for is 4
        
#output next run
#Player rolled: [2, 6, 5, 6, 6]
        
#[5]
# output value should be 3
#How do I find and store the matches in the list and store them in count? Sorry #I’m really trying to understand lists and loops but I just can’t figure this out
 

Комментарии:

1. Зик, ваш код все еще не выровнен должным образом. Не могли бы вы это исправить. Что вы ожидаете count напечатать? Последний экземпляр for цикла или каждый экземпляр for цикла?

2. Я просто пытаюсь найти количество совпадающих чисел в списке и сохранить его в count. Игрок откатился: [3, 3, 3, 1, 3] должно быть count = 4, потому что 4 числа одинаковы. количество совпадений игроков или должно быть.

3. Что, если бы выпавшие числа были [3,1,2,2,3] ? Должно ли оно указывать 2?

4. вы должны проверить if count > max_count , если да, то max_count = count . Затем распечатайте max_count . Смотрите мой код ниже

5. Я бы сказал, да, я просто пытался сделать игру типа покерной руки, так что в этом случае это будет 2, как в паре 2. Я видел, как вы кодировали, это должно мне очень помочь. большое вам спасибо.

Ответ №1:

Выведите максимальное количество раз, когда кости выпадали на число

Кроме того, выведите числа на кубиках

Вот обновленный код, который также печатает числа, которые были перенесены максимальное количество раз. Я сохраняю числа, которые были перенесены в список максимальное количество раз. Если есть новое значение max_value, я сбрасываю список для сохранения нового номера. Если значение max_value (counts) совпадает с предыдущим значением max count, то я добавляю его в список (поскольку их два).

 import random

#I start with an empty list
    
dice = []
    
#Roll 5 random numbers
    
for x in range(5):
    x = random.randint(1,6)
    dice.append(x)
    
#find how many time a number in the list was rolled
    
count = 0
max_count = 0
max_value = []

print('Player rolled :', dice)
for x in range(1,7):
    count = dice.count(x)
    if max_count < count:
        max_count = count
        max_value = [x]
    elif max_count == count:
        max_value.append(x)
    print(x, 'was rolled :', count , 'times')

print ('max times a number was rolled is :', max_count)
print ('following numbers were rolled max times :', max_value)
 

Результат нескольких запусков:

 Player rolled : [3, 1, 5, 2, 3]
1 was rolled : 1 times
2 was rolled : 1 times
3 was rolled : 2 times
4 was rolled : 0 times
5 was rolled : 1 times
6 was rolled : 0 times
max times a number was rolled is : 2
following numbers were rolled max times : [3]

Player rolled : [3, 3, 5, 5, 6]
1 was rolled : 0 times
2 was rolled : 0 times
3 was rolled : 2 times
4 was rolled : 0 times
5 was rolled : 2 times
6 was rolled : 1 times
max times a number was rolled is : 2
following numbers were rolled max times : [3, 5]
 

Выведите максимальное количество раз, когда кости выпадали на число

Я думаю, вы хотите узнать, сколько раз было перевернуто каждое число. Если это так, вам нужно вывести подсчет каждого экземпляра цикла for.

Вот код, который это сделает.

 import random

#I start with an empty list
    
dice = []
    
#Roll 5 random numbers
    
for x in range(5):
    x = random.randint(1,6)
    dice.append(x)
    
#find how many time a number in the list was rolled
    
count = 0
max_count = 0

print('Player rolled :', dice)
for x in range(1,7):
    count = dice.count(x)
    if max_count < count:
        max_count = count
    print(x, 'was rolled :', count , 'times')

print ('max times a number was rolled is :', max_count)
 

Результатом этого будет:

 Player rolled : [6, 5, 5, 1, 5]
1 was rolled : 1 times
2 was rolled : 0 times
3 was rolled : 0 times
4 was rolled : 0 times
5 was rolled : 3 times
6 was rolled : 1 times
max times a number was rolled is : 3

Player rolled : [2, 2, 3, 6, 5]
1 was rolled : 0 times
2 was rolled : 2 times
3 was rolled : 1 times
4 was rolled : 0 times
5 was rolled : 1 times
6 was rolled : 1 times
max times a number was rolled is : 2
 

Комментарии:

1. «максимальное количество раз, когда число было перевернуто, равно: 2» Это то, что я пытаюсь сделать, спасибо. так много

2. отлично. Я думаю, вы просто пропустили ту часть, где вы проверяете значение count . Если это решило вопрос, пожалуйста, не стесняйтесь отметить как отвеченный и проголосовать за ответ.

3. Да, я занимаюсь этим python всего неделю, и я все еще выясняю, как все работает, это может быть немного больше, чем я должен был попробовать на данный момент..

4. Вы отлично справляетесь. Продолжайте. Python прост в освоении и увлекателен.

5. Вы спросили меня: «Что, если выпавшие числа были [3,1,2,2,3] ? Должен ли он сказать 2?» как бы я заставил это работать?