Bonjour/bonsoir,

comme vous pouvez le voir, je suis nouveau ici. Je me présente en quelques mots: je suis titulaire d'un bac L et étudiant en philo. J'au beau m'intéresser depuis toujours aux ordinateurs, je me suis rendu compte sur le tard que je ne savais quasiment rien de leur fonctionnement (j'aime mettre ça sur le dos de Windows)
Je pars de loin (toute une adolescence gâchée à bouquiner au lieu de me rapprocher de mon vrai amour - les machines) et j'ai commencé à m'intéresser au ba-ba la programmation; en tant que L le Python est un langage qui m'a immédiatement attiré pour sa lisibilité; tous les bouts de code me semblaient visuellement rébarbatifs jusqu'au mal de ventre, mais le Python au contraire me semblait presque mignon (mon rêve ultime est d'écrire un programme en LOLCODE un jour, mais avant ça il va déjà falloir apprendre à programmer et c'est pas de la tarte!), c'est pourquoi je me retrouve sur ce forum précis. J'ai conscience qu'il y a bon nombre de ressources en ligne sur le Python, et d'excellente qualité pour la plupart, ça se sent et c'est un plaisir à apprendre. Mais néanmoins je galère, ce domaine n'a aucun rapport avec ma formation et j'en sais surtout que je n'en sais rien: c'est pourquoi je me permet de poster ici, je crois que pour ma problématique précise l'aide d'êtres humains me sera plus précieuse que les encyclopédies en ligne ^^. En outre mes rares potes qui touchent un peu à la prog ne jurent que par C et ont été incapables de m'aider.

Trêve de blabla: j'ai naturellement du mal à écrire mon premier script, bien que l'idée soit claire dans ma tête. Le but est de résumer la table de push de Sklansky & Chubukov au poker, pour ceux à qui ça parle. Sinon, concrètement, il s'agit d'attribuer une valeur (x) à chaque main possible au texas hold'em, puis d'appliquer un calcul [(x / 2) / y] où y est le nombre de joueurs suivants, de sorte qu'en indiquant au script ma main (x) et le nombre de joueurs (y), il puisse me m'indiquer la décision mathématiquement raisonnable: "si tu as moins de Z grosses blindes tu devrais push/fold/call". Pour l'instant je bloque sur le push, mais j'ai bon espoir d'arriver à intégrer le reste une fois que cette base tournera.

Pour ça, j'ai d'abord voulu créer un dictionnaire où chaque main de hold'em (string/clé ? je sais pas trop) correspond à une valeur numérique. Puis demander un input de main, du même format. Vérifier que l'input corresponde bien à une entrée du dictionnaire. Puis, en en déduisant x, demander le nombre y de joueurs à suivre. Et enfin, appliquer [(x / 2) / y]. C'est l'idée de base, ça me semble pas sorcier, mais pourtant je sens que je galère sur des choses simples telles que la syntaxe.

Donc voici mon ébauche pour le moment. Je souligne & gras les parties sur lesquelles je doute le plus. Merci par avance à ceux qui prendront le temps de me lire, de m'éclairer et critiquer. J'espère que la simplicité de la tâche à accomplir & la probable naïveté dans mon code vous détendra au lieu de vous irriter j'ai un peu navigué sur le forum et ça n'a pas l'air d'un endroit pour néophytes, mais d'un autre côté, je n'ai pas trouvé de meilleur endroit francophone où tenter ma chance!

PoF.py
/!\ sautez à la fin, le début-milieu n'est que le dictionnaire, a priori inintéressant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
#!/usr/bin/env python

nlh_hands = dict()
nlh_hands['AA'] = 999999999
nlh_hands['KK'] = 953.99547
nlh_hands['AKs'] = 554.50999
nlh_hands['QQ'] = 478.0082
nlh_hands['AKo'] = 331.88718
nlh_hands['JJ'] = 319.21359
nlh_hands['AQs'] = 274.211119
nlh_hands['TT'] = 239.82102
nlh_hands['AQo'] = 192.67022
nlh_hands['99'] = 191.41393
nlh_hands['AJs'] =183.22134
nlh_hands['88'] = 159.29689
nlh_hands['ATs'] = 138.91308
nlh_hands['AJo'] =136.31047  
nlh_hands['77'] = 134.84771
nlh_hands['66'] = 115.34853
nlh_hands['ATo'] =  106.26471
nlh_hands['A9s'] = 104.12479
nlh_hands['55'] = 98.62987
nlh_hands['A8s'] = 89.86565
nlh_hands['KQs'] = 86.6277
nlh_hands['44'] = 81.97959
nlh_hands['A9o'] =  81.7172
nlh_hands['A7s'] = 79.17591
nlh_hands['KJs'] = 72.62126
nlh_hands['A5s'] =72.29213
nlh_hands['A8o'] = 70.95651
nlh_hands['A6s'] = 70.74453
nlh_hands['A4s'] = 66.65053
nlh_hands['33'] = 65.44082
nlh_hands['KTs'] = 62.80556
nlh_hands['A7o'] =  62.74775
nlh_hands['A3s'] = 62.27532
nlh_hands['KQo'] = 58.77166
nlh_hands['A2s'] = 58.14199
nlh_hands['A5o'] = 56.54209
nlh_hands['A6o'] =  56.15123
nlh_hands['A4o'] = 51.93949
nlh_hands['KJo'] = 50.83879
nlh_hands['QJs'] = 49.51544
nlh_hands['A3o'] = 48.44544
nlh_hands['22'] = 48.05412
nlh_hands['K9s'] = 47.81236
nlh_hands['A2o'] = 45.17234
nlh_hands['KTo'] = 44.94654
nlh_hands['QTs'] = 43.80946
nlh_hands['K8s'] = 39.91081
nlh_hands['K7s'] = 37.33065
nlh_hands['JTs'] = 36.10652
nlh_hands['K9o'] = 35.75415
nlh_hands['K6s'] = 34.89
nlh_hands['QJo'] = 32.81682
nlh_hands['Q9s'] = 32.51971
nlh_hands['K5s'] = 32.30333
nlh_hands['K8o'] = 30.47389
nlh_hands['K4s'] = 30.16328
nlh_hands['QTo'] = 29.7164
nlh_hands['K7o'] = 28.54118
nlh_hands['K3s'] = 28.38181
nlh_hands['K2s'] = 26.73084
nlh_hands['Q8s'] = 26.71855
nlh_hands['K6o'] = 26.67571
nlh_hands['J9s'] = 25.71252
nlh_hands['K5o'] = 24.68097
nlh_hands['Q9o'] = 23.41954
nlh_hands['JTo'] = 23.08525
nlh_hands['K4o'] = 22.84502
nlh_hands['Q7s'] = 22.68524
nlh_hands['T9s'] = 22.49148
nlh_hands['Q6s'] = 21.78516
nlh_hands['K3o'] = 21.78516
nlh_hands['J8s'] = 20.63624
nlh_hands['Q5s'] = 20.32186
nlh_hands['K2o'] = 19.99942
nlh_hands['Q8o'] = 19.81933
nlh_hands['Q4s'] = 18.91635
nlh_hands['J9o'] = 17.79938
nlh_hands['Q3s'] = 17.73401
nlh_hands['T8s'] = 17.46571
nlh_hands['J7s'] = 17.19452
nlh_hands['Q7o'] = 17.07734 
nlh_hands['Q2s'] = 16.64103
nlh_hands['Q6o'] = 16.29514
nlh_hands['98s'] = 15.29334
nlh_hands['Q5o'] = 15.03498
nlh_hands['J8o'] = 14.86776
nlh_hands['T9o'] = 14.83221
nlh_hands['J6s'] = 14.7186
nlh_hands['T7s'] = 14.19943
nlh_hands['J5s'] = 14.04842
nlh_hands['Q4o'] = 13.66217
nlh_hands['J4s'] = 12.95547
nlh_hands['J7o'] = 12.66604
nlh_hands['Q3o'] = 12.50323
nlh_hands['97s'] = 12.25142
nlh_hands['T8o'] = 12.15698
nlh_hands['J3s'] = 12.04034
nlh_hands['T6s'] = 11.92109
nlh_hands['Q2o'] = 11.30295
nlh_hands['J2s'] = 11.13873
nlh_hands['87s'] = 11.11055
nlh_hands['J6o'] = 10.78068
nlh_hands['98o'] = 10.27126
nlh_hands['T7o'] = 10.20476
nlh_hands['96s'] = 10.09767
nlh_hands['J5o'] = 9.98729
nlh_hands['T5s'] = 9.9469
nlh_hands['T4s'] = 9.26007
nlh_hands['86s'] = 8.99475
nlh_hands['J4o'] = 8.90624
nlh_hands['T6o'] = 8.57196
nlh_hands['97o'] = 8.57096
nlh_hands['T3s'] = 8.41572
nlh_hands['76s'] = 8.31842
nlh_hands['95s'] = 8.26104
nlh_hands['J3o'] = 7.91472
nlh_hands['T2s'] = 7.50573
nlh_hands['87o'] = 7.50573
nlh_hands['85s'] = 7.23917
nlh_hands['96o'] = 7.07415
nlh_hands['T5o'] = 6.92096
nlh_hands['J2o'] = 6.88577
nlh_hands['75s'] = 6.59416
nlh_hands['94s'] = 6.58364
nlh_hands['T4o'] = 6.20739
nlh_hands['65s'] = 6.20739
nlh_hands['86o'] = 6.09984
nlh_hands['93s'] = 6.05899
nlh_hands['84s'] = 5.69277
nlh_hands['95o'] = 5.65083
nlh_hands['T3o'] = 5.48042
nlh_hands['76o'] = 5.43913
nlh_hands['92s'] = 5.35930
nlh_hands['74s'] = 5.1092
nlh_hands['54s'] = 4.85029
nlh_hands['T2o'] = 4.83225
nlh_hands['85o'] = 4.81223
nlh_hands['64s'] = 4.76922
nlh_hands['83s'] = 4.46381
nlh_hands['94o'] = 4.34578
nlh_hands['75o'] = 4.2698
nlh_hands['82s'] = 4.129
nlh_hands['73s'] = 4.018
nlh_hands['93o'] = 4.0002
nlh_hands['65o'] = 3.972
nlh_hands['53s'] = 3.851
nlh_hands['63s'] = 3.777
nlh_hands['84o'] = 3.737
nlh_hands['92o'] = 3.5852
nlh_hands['43s'] = 3.4021
nlh_hands['74o'] = 3.3662
nlh_hands['72s'] = 3.2215
nlh_hands['54o'] = 3.2212
nlh_hands['64o'] = 3.1703
nlh_hands['52s'] = 3.115
nlh_hands['62s'] = 3.0548
nlh_hands['83o'] = 2.9948
nlh_hands['42s'] = 2.7962
nlh_hands['82o'] = 2.7958
nlh_hands['73o'] = 2.7319
nlh_hands['53o'] = 2.6402
nlh_hands['63o'] = 2.5913
nlh_hands['32s'] = 2.5674
nlh_hands['43o'] = 2.366
nlh_hands['72o'] = 2.2433
nlh_hands['52o'] = 2.1816
nlh_hands['62o'] = 2.1397
nlh_hands['42o'] = 1.9761
nlh_hands['32o'] = 1.8253

def PoF():
	print "This is NashWizard. Pick your hand!"
	hand = raw_input("Unless pairs, specify, strongest card first, if suited or offsuit. F.e. 33, A3o, J8s.")
	if hand in nlh_hands == True:
		huslas = raw_input("How many people to speak after you? (1-9, 1 is default)") 
		def gg(): (hand / 2) / int(huslas)
		if huslas == [1, 9]:
			print "If you have less than %gg() big blinds you should PUSH!"
		elif huslas == 0:
			huslas = 1
			print "If you have less than %gg() big blinds you should PUSH!"
		else:
			print "Woops, you have minimum 1 opponent, 9 maximum, try again please!"
	else:
		print "Start with the strongest card and specify if suited or offsuit. 79, 79o, 97 wont work, 97o will."

PoF()
Environnement: GNU/linux i386
Erreur: le script arrive au premier raw_input, et peu importe ce que j'entre, il saute à la fin "you must start with..."

J'ai pû m'emmêler les pinceaux entre python 2 et 3 vu que je n'ai jamais attention aux versions qu'utilisaient les tutos; mais surtout je sens qu'il faut faire quelque chose pour signifier que le premier raw_input doit correspondre à un objet dans le dictionnaire, seulement aucune idée de quoi. J'ai souligné ce qui me semble douteux. "if hand in nlh_hands == True:" m'a l'air particulièrement fautif, il a l'air de tout le temps être false, j'imagine qu'il faudrait à la fois que je précise que nlh_hands est un dictionnaire, et que "hand" est de même nature que les objets du dictionnaire... Pour l'autre point, j'ignore comment traduire "no-input" autrement que par 0 mais j'ignore si ça marche comme ça? Et j'ignore si le résultat de la fonction gg() ne sera pas sous forme "integer" vu qu'il y a un int() dans la formule ainsi qu'un objet "hand" de nature inconnue.. alors que je souhaiterais plutôt un résultat avec décimales.

Bref merci d'avoir pris le temps, et en recherche d'indices!

Barenziah

/e: mini erreur de retranscription du code