2017-09-28 1 views
1

J'ai du mal à trouver ma compréhension de la liste en python. J'ai 3 conditions que je cherche, et je sais comment faire deux d'entre eux, mais l'une des conditions ne semble pas fonctionner correctement.Vérifiez si la condition correspond à python

Mes conditions sont les suivantes:

  1. Si tous les numéros dans ma liste sont les mêmes et ils sont tous un nombre précis, puis ajouter des points
  2. Si tous les numéros dans ma liste sont les mêmes, mais ils le font pas égal à un nombre spécifique puis faire autre chose
  3. Si les nombres dans la liste ne correspondent pas, mais ils égalent un nombre spécifique que faire quelque chose d'autre.

J'ai 1 travail, et je sais comment faire le numéro 3, mais je ne peux pas obtenir le numéro 2 fonctionne correctement. Peu importe les numéros que j'ai mis dans ma liste (rouleaux), cette condition correspond toujours à True. Quelqu'un peut-il aider s'il vous plaît? Voici mon code actuel:

def check_conditions(rolls, round_number): 
    """ 
    Check if number on rolled die matches one of three conditions 
    :param rolls: 
    :param round_number: 
    :return round: 
    """ 
    round_score = ROUND_TOTAL 
    rolls = str(rolls) 

    bunco = all(roll == ROUND_NUMBER for roll in rolls) 
    mini_bunco = all(roll == roll[0] and roll != ROUND_NUMBER for roll in rolls) 

    if bunco == True: 
     print("BUNCO!") 
     round_score += 20 
    elif mini_bunco == True: 
     print("MINI-BUNCO!") 
     round_score += 5 
    else: 
     pass 

    return round_score 

SORTIE:

Starting Round Number 1 
You rolled: [2, 3, 3] 
MINI-BUNCO! 
Points this round: 5 
+0

Donc ce serait si tous les nombres sont égaux au premier nombre, mais pas ROUND_NUMBER? – jonrsharpe

+0

Indice: vérifiez d'abord que tous les nombres de 'rolls' sont identiques à' rolls [0] ', et si c'est vrai, alors testez' rolls [0] == ROUND_NUMBER'. –

+0

Utilisez ce qui est suggéré [ici] (https://stackoverflow.com/questions/3844801/check-if-all-elements-in-a-list-are-identical), puis, comme @ PM2Ring suggéré, vérifiez si les rouleaux [0 ]! = ROUND_NUMBER – ShreyasG

Répondre

1

Quelque chose comme cela devrait vous arriver ...

rolls = [5,5,5,5,5,5] 

specificNum = 6 

if len(set(rolls)) == 1: 
    if rolls[0] != specificNum: 
     print 'Do something' 
0
#imports 

    import random 

    #variables 

    Roll_1_return = False 
    Roll_2_return = False 
    round_score = ROUND_TOTAL 

    #assuming you only want to roll twice 

    def Rolls(): 
     Roll_1 = random.randrange(1, 10) 
     Roll_2 = random.randrange(1, 10) 
     While True: 
      if Roll_1 == 3: 
       Roll_1_return = True 
       return Roll_1_return 
       break 
      else: 
       break 
     While True: 
      if Roll_2 == 7: 
       Roll_2_return = True 
       return Roll_2_return 
       break 
      else: 
       break 

    Rolls() 

    if Roll_1_return == True: 
     print('Roll 1 is correct!') 
     round_score + 25 
    else: 
     print('Roll 1 is incorrect..') 

    if Roll_2_return == True: 
     print('Roll 2 is correct!') 
     round_score + 25 
    else: 
     print('Roll 2 is incorrect..') 

    if round_score == 50: 
     print('You won $100!') 
    elif round_score == 25: 
     print('You won $50!') 
    else: 
     print('Too bad, you lost!') 

Si je comprends bien, cela devrait donner vous ce dont vous avez besoin! Si ce n'est pas ce que vous vouliez, SVP ne pas downvote moi! J'ai essayé de mon mieux de comprendre.