Le palais est un grand carré de taille 10×10, et le robot se trouve au départ dans le coin en bas à gauche, comme représenté ci-dessous :
Votre robot doit passer une et une seule fois dans chacune des pièces, puis se retrouver dans sa case de départ.
Ton énoncé est incomplet et ce n'est pas un exercice du cours Python, poste ton message dans un nouveau fil de discussion (pas Exercices du cours Python) et avec l'énoncé complet sinon on ne peut pas répondre.
i = 0
liste = [32,5,12,8,3,75,2,15]
longueur = len (liste) -1
compteur = 0
while (compteur < longueur):
if (liste[0]>liste[1]):
del(liste[1])
else:
del(liste[0])
compteur +=1
print("le plus grand élément de cette liste a la valeur",liste)
Le résultat est le suivant:
le plus grand élément de cette liste a la valeur [75]
J'aimerais que le chiffre 75 ne soit pas affiché comme une liste, donc sans les crochets. Quelqu'un pourrait il m'indiquer comment faire (s'il existe une solution)?
Je suis sur l'exercice du cours python développement sur les casinos. Je ne comprends pas pourquoi mon code ne marche pas. J'ai lu la correction et j'ai fait quelque chose de similaire mais j'ai une erreur
TypeError: not all arguments converted during string formatting
J'ai l'impression que cette erreur est du a ma fonction couleur. Pourtant celle ci fonctionne bien en la testant séparement. Pouvez vous m'aider?
from random import randrange
from math import ceil
import os
def couleur (numero) :
if numero % 2 == 0 :
return "rouge"
else :
return "noir"
argent = 50
while argent > 0 :
numerochoisi = input ("quel numéro voulez vous jouer?")
mise = input ("quelle somme voulez vous miser?")
numerogagnant= randrange(50)
print ("le numéro gagnant est" ,numerogagnant)
couleurnumerogagnant = couleur(numerogagnant)
couleurnumerochoisi = couleur(numerochoisi)
print ("la couleur du numéro gagnant est" ,couleurnumerogagnant)
print ("la couleur du numéro choisi est", couleurnumerochoisi)
if numerogagnant == numerochoisi :
argent = argent + (mise+ mise*3)
print ("jackpot! votre argent est de ", argent)
elif couleurnumerogagnant == couleurnumerochoisi :
argent = argent + (mise + ceil(mise/2))
print ("même couleur! Votre argent est de", argent)
else :
argent = argent - mise
print ("raté! Votre argent est de ", argent)
Je suis sur l'exercice du cours python développement sur les casinos. Je ne comprends pas pourquoi mon code ne marche pas. J'ai lu la correction et j'ai fait quelque chose de similaire mais j'ai une erreur
TypeError: not all arguments converted during string formatting
J'ai l'impression que cette erreur est du a ma fonction couleur. Pourtant celle ci fonctionne bien en la testant séparement. Pouvez vous m'aider?
L'erreur est assez vicieuse. Si tu écris maVariable % 2 et si ma variable est une chaîne alors l'opération n'est pas un calcul de reste mais un formatage de chaîne, ce qui suppose que maVariable ait une certaine syntaxe. Dans ton cas, maVariable est du genre la chaîne "42" qui n'a pas la bonne syntaxe, d'où l'erreur.
Remède : convertir numero en int (tu le fais la première fois mais pas la 2e).
La fonction couleur fonctionne bien quand tu lui passes un nombre entier.
Mais dans ton code, input renvoie une variable de type str, donc numerochoisi est une chaîne de caractères, pas un nombre. Et là ça plante (l'opération % n'a pas la même signification).
Je suis en train de faire un exercice Python. Voilà le sujet :
Ce que doit faire votre programme :
Votre programme devra lire le nombre d'emplacements nbEmplacements (au maximum 1 000), puis pour chaque emplacement à partir de 0, le numéro du marchand à qui est attribué l'emplacement (entre 0 et nbEmplacements − 1).
Ensuite, pour chaque marchand de 0 à nbEmplacements − 1, votre programme devra afficher le numéro de l'emplacement qui lui est attribué.
ET voici mon début de programme :
nbEmplacements = int(input())
if nbEmplacements < 1001:
for nbEmplacement in range(0, nbEmplacements):
marchand = int(input())
for marchand in range(0, nbEmplacements):
Je suis vraiment bloqué et je ne sais pas comment avancer.
Tu ne donnes pas l'énoncé complet qui est ICI. Assure-toi d'avoir bien compris l'énoncé et d'être capable de donner la réponse sans Python, à la main.
Ta ligne 2 ne sert à rien.
Lignes 3-4 : OK sauf que tu utilises deux fois nbEmplacements (en écrasant le premier) et que tu ne fais rien de marchand. A rectifier.
Il y a plusieurs façons de faire à partir de là. Le plus simple serait de construire une liste marchands de nbEmplacements valeurs 0 et de remplir cette liste au fur et à mesure que es dans ta boucle ligne 4.
- Edité par PascalOrtiz 22 février 2020 à 17:24:52
Tu dois revoir l'essentiel de ton programme et sa logique et t'assurer d'avoir bien compris ce qu'il faut faut faire et comment le faire sans python (l'algorithme) Et je ne suis pas sûr que tu aies suffisamment pratiqué Python et fait de petits exos pour pouvoir répondre au problème que tu fois résoudre.
UltraInstinct a écrit:
Que faut -il que je rectifie aux lignes 3 et 4?
Si tu écris qqchose du genre
n=42
for n in range(0, n):
ton n=42 est perdu dans la boucle for, écrasé par la variable de la boucle. Ce genre de confusion ultra basique semble montrer que tu n'as pas jamais pratiqué de boucle for, ce qui est bien gênant pour faire l'exo.
Ensuite, tu fais marchand=input() et c'est tout sans faire quoi que ce soit avec marchand qui est donc perdu.
UltraInstinct a écrit:
Et pour la liste, comment la trier par ordre croissant et, ensuite, afficher les éléments de la liste, comme demandé par le sujet?
Déjà, crée la liste dans ton code et montre-nous. Et ta question sur l'ordre croissant montre que tu n'as pas bien compris les listes ou alors le problème posé (qui n'est pas des plus simples quand on débute). Ici, il n'y a rien à trier car ta liste est triée par indices croissants. Pour l'affichage, il se fera après la boucle, dans une 2e boucle for.
- Edité par PascalOrtiz 22 février 2020 à 18:23:27
Tu as compliqué avec extend mais peu importe tu as ta liste. Le problème c'est que je ne te parlais pas de cette liste là !
Admettons que comme dans l'exemple de france-ioi, ta liste Marchand soit formée de 5 marchands
Marchand = [1, 4, 0, 3, 2]
Bien comprendre que les indices de cette liste sont des emplacements, des numéros de places pour dire les choses autrement. Et les valeurs de la liste sont des numéros de marchands :
A partir de là, tu as deux possibilités pour répondre.
Première possibilité (deux boucles for imbriquées) :
tu parcours les entiers i de 0 à 4 (i représente un marchand) avec range
à chaque indice i tu parcours ta liste Marchand par indice j et tu attends de trouver dans cette liste la valeur i
tu affiches j
Deuxième possibilité :
tu crées une nouvelle liste places formée de 5 valeurs arbitraires, disons -1
tu parcours ta liste Marchand par indice i de 0 à 4
à chaque indice i, on appelle j la valeur de Marchand[i] : tu mets dans places[j] la valeur i
tu affiches avec une 3e boucle for les valeurs de ta liste places.
La première méthode est conceptuellement plus simple mais oblige à créer deux boucles for imbriquées (tu as déjà du mal avec une !) et en plus tu ne passeras par les tests de performance.
La 2e est plus simple à écrire mais moins facile à comprendre.
Je viens de finir le mien. Cela m'a quand même pris 2 ou 3 heures...
Vivement que je progresse.
En tout cas, ça m'a bien aidé à comprendre les `try`et èxcept`dont j'avais du mal à saisir le concept.
Voici mon ZCasino:
from random import randrange
from math import ceil
money = 1000
playing = True
while playing == True:
guess=0
while guess < 1 or guess > 50:
try:
guess = int(input('Guess a number between 1 and 50:'))
except ValueError:
print("The value is invalid. It must be a number between 1 and 50.")
continue
if guess < 1 or guess > 50:
print("The number guessed must be between 1 and 50.")
print('You have {}$'.format(money))
bet=0
while bet == 0 or bet > money or bet < 0:
try:
bet = int(input('Enter the ammount of money you want to bet:'))
except ValueError:
print("The value is invalid. Enter a valid value.")
continue
if bet > money or bet < 0:
print("The ammount must not exceed the ammount of money you have, and can not be negative.")
result = randrange(1, 50)
print('You chose the number {}!'.format(guess))
print('You bet {} on it!'.format(bet))
print('The result is {}!'.format(result))
if result == guess:
print('Congratulations, you won {}$!'.format(bet * 3))
money += bet * 3
print('You now have {}$'.format(money))
elif result % 2 == guess % 2:
print('Congratulations, you won {}$ for picking the right colour!'.format(ceil(bet / 2)))
money += ceil(bet / 2)
print('You now have {}$'.format(money))
else:
print('Sadly, you lost...')
money -= bet
print('You now have {}$'.format(money))
if money < 0 or money == 0:
playing = False
print("You can't continue to play. You have no money left.")
continue_playing = 0
while continue_playing == 0 or continue_playing != 'y' and continue_playing != 'n':
continue_playing = str(input('Do you want to continue? (Y/N)').lower())
if continue_playing == 0 or continue_playing != 'y' and continue_playing != 'n':
print('Please, enter Y for YES, or N for No.')
if continue_playing == 'n':
playing = False
print('You chose to stop playing, leaving the game with {}$'.format(money))
Habituellement, je commente énormément, mais là, vu que c'était de base que pour moi, je n'ai pas pensé à le faire.
A part ça, la semaine passée, après avoir commencé et appris les bases de Python, j'ai voulu me faire un programme pour résoudre une grille de sudoku (sans utiliser aucun module importé). Avec mes 2 jours d'expèriences en programmation, c'était pas simple, mais si ça intéresse des gens, j'ai mis une version détaillé du code sur GitHub : https://github.com/Dyrits/-python-sudokusolver
from random import randrange
from math import ceil
money = 1000
playing = True
while playing == True:
guess=0
while guess < 1 or guess > 50:
try:
guess = int(input('Guess a number between 1 and 50:'))
except ValueError:
print("The value is invalid. It must be a number between 1 and 50.")
continue
if guess < 1 or guess > 50:
print("The number guessed must be between 1 and 50.")
print('You have {}$'.format(money))
bet=0
while bet == 0 or bet > money or bet < 0:
try:
bet = int(input('Enter the ammount of money you want to bet:'))
except ValueError:
print("The value is invalid. Enter a valid value.")
continue
if bet > money or bet < 0:
print("The ammount must not exceed the ammount of money you have, and can not be negative.")
result = randrange(1, 50)
print('You chose the number {}!'.format(guess))
print('You bet {} on it!'.format(bet))
print('The result is {}!'.format(result))
if result == guess:
print('Congratulations, you won {}$!'.format(bet * 3))
money += bet * 3
elif result % 2 == guess % 2:
print('Congratulations, you won {}$ for picking the right colour!'.format(ceil(bet / 2)))
money += ceil(bet / 2)
else:
print('Sadly, you lost...')
money -= bet
if money == 0:
playing = False
print("You can't continue to play. You have no money left.")
break
print('You now have {}$'.format(money))
continue_playing = 0
while continue_playing != 'y' and continue_playing != 'n':
continue_playing = str(input('Do you want to continue? (Y/N)').lower())
if continue_playing != 'y' and continue_playing != 'n':
print('Please, enter Y for YES, or N for No.')
if continue_playing == 'n':
playing = False
print('You chose to stop playing, leaving the game with {}$'.format(money))
Salut, j' ai quelques suggestions d' améliorations:
supprimer les print lignes 32, 36, 40 pour le réécrire après la condition qui détermine le gain
enlever la condition money < 0 car l' utilisateur ne peut pas miser plus que son argent donc pas perdre plus que son argent donc il ne peut pas avoir un nombre négatif d' argent
rajouter un break après la ligne 43 pour quitter le while playing sans que le programme nous demandesi on veut le quitter
supprimer la condition "continue playing = 0" (l.45, 47) puisque si "continue playing = 0" continue playing est forcément différent de y et n
J' ai fait les modifs ci-dessus.
P.S. Quelqu' un peut m' expliquer comment on fait pour afficher en font noir, moi ça mets tout sur une seule ligne
- Edité par Théobald d'Uberwald 27 février 2020 à 22:21:57
from os import *
chdir("/Users/pytho/OneDrive/Bureau/Python")
recup = getcwd()
print(recup)
obFichier = open('Chagchag','a')
obFichier.write('Bonjour, fichier !')
obFichier.write("Quel beau temps, aujourd'hui !")
obFichier.close()
Pour lesquelles j'ai le message d'erreur suivant:
Traceback (most recent call last):
File "C:\Users\pytho\OneDrive\Bureau\pythonexo\8.7.py", line 6, in <module>
obFichier = open('Chagchag','a')
TypeError: an integer is required (got type str)
Par ailleurs, afin d'être sûr d'avoir bien compris: le fichier ChagChag n'existant pas, ce dernier va bien être créer dans le répertoire courant qui se situe à l'adresse suivante: /Users/pytho/OneDrive/Bureau/Python ?
Pourquoi faire ça ?
Il est généralement fortement déconseillé d'utiliser import *, justement pour ne pas tomber dans le cas problématique que tu rencontres.
Quand tu fais un import *, tu importes tous les noms contenus dans le module vers l'espace de noms courant.
En l'occurrence, le module os contient plus de 350 noms, dont une fonction open, différente de la fonction built-in.
Différente parce qu'os est un module de fonctions bas-niveau, il s'agit donc d'une fonction qui a la même interface qu'en C.
Donc évite l'import * et tout se passera bien, open sera bien open.
Et pour ton autre question, oui le fichier sera bien créé dans le répertoire cible.
Découverte Python Doc Tkinter Les chaînes de caractères
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Découverte Python Doc Tkinter Les chaînes de caractères
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
Découverte Python Doc Tkinter Les chaînes de caractères
Découverte Python Doc Tkinter Les chaînes de caractères
Découverte Python Doc Tkinter Les chaînes de caractères
Découverte Python Doc Tkinter Les chaînes de caractères
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique