Maison  >  Article  >  développement back-end  >  3 questions Python intéressantes qui conviennent parfaitement aux débutants

3 questions Python intéressantes qui conviennent parfaitement aux débutants

little bottle
little bottleoriginal
2019-04-04 11:09:483454parcourir

Tous ceux qui connaissent Python savent que même si Python est facile à démarrer, il implique beaucoup de connaissances et est très habile ! Ces compétences sont comme des chaînes. Il faut un peu de pratique pour devenir compétent et maîtriser fermement les points de connaissance ! Aujourd'hui, l'éditeur a sélectionné pour vous 3 questions Python intéressantes. Bougons vos doigts et pratiquons ensemble !

3 questions Python intéressantes qui conviennent parfaitement aux débutants

L'éditeur ci-dessous vous montrera comment les débutants et les experts traitent respectivement le problème :

NO.1 Remplacement de caractères dans les chaînes

Les chaînes constituent le point de connaissance le plus basique et le plus important en Python. La question suivante concerne le remplacement des chaînes.

Créez une fonction capable de traiter la chaîne d'entrée et de renvoyer une chaîne avec certains caractères remplacés.

· Si une lettre est une consonne majuscule, veuillez remplacer ce caractère par ". Fer".

· Si une lettre est une consonne minuscule ou un caractère non alphabétique, ne faites rien avec le caractère

· Si une lettre est une voyelle majuscule, remplacez le caractère par " Iron Yard ".

· Si une lettre est une voyelle minuscule, remplacez le caractère par "Yard".

Cas de test

Entrée : "Hello WORLD!"

Sortie : "IronYardllYard IronIron YardIronIronIron !"

Solution débutant :

def replace_str(string):
	res = ""
	vowel = 'aeiou'
	for i in string:
		if i in vowel:
			res += 'Yard'
		elif i in vowel.upper():
			res += 'Iron Yard'
		elif i.isupper():
			res +='Iron'
		else:
			res += i
	return res

print(replace_str('Hello WORLD!'))

Solution du maître :

def tiy_fizz_buzz(s):
   return "".join(("Iron "*c.isupper() + "Yard"*(c.lower() in "aeiou")).strip() or c for c in s)

Commentaires :

La solution la plus intelligente pour les maîtres n'est pas d'utiliser une méthode comme pousser vers une liste pour parcourir des chaînes, mais aussi d'utiliser " Iron" très intelligemment *Vrai ou "Iron"*False, si le premier est la chaîne elle-même et la seconde est vide "". Utilisez ensuite + pour combiner les deux chaînes, puis utilisez ou pour classer ! Il intègre parfaitement le if-elif-elif-else ci-dessus dans une seule ligne de code, ce qui est vraiment bien !

NO.2 Classement de poids intéressant

3 questions Python intéressantes qui conviennent parfaitement aux débutants

Xiaoli est dans un "club de perte de poids". À la fin du mois, Xiaoli est très. inquiète parce que chaque jour Une liste des poids des membres est publiée chaque mois, et chaque mois, elle est la dernière sur la liste, ce qui signifie qu'elle est la plus lourde. Elle a donc proposé au président de modifier les règles. Par exemple, les nouvelles règles sont les suivantes :

La nouvelle règle de tri sera de trier selon le "poids". Si les poids sont les mêmes, ils le seront. triés selon la chaîne de poids. (Règle de calcul du poids : la somme des nombres dans les différents chiffres du numéro de poids)

Compte tenu des chaînes de poids des membres d'un certain club d'ordre normal, comment les trier selon les nouvelles règles ? Cas de test : Saisie : "99 189 86 75" Sortie : "75 86 189 99"

Solution recrue :

def order_weight(string):
    weight_list = string.split(' ')
    def helper(x):
        if not x:
            return x
            y = int(x)
            z = 0
            while y:
                z += y % 10
                Y = int(y / 10)
            return (z,x)
 
    weight_list.sort.sort(key = helper)
    return " ".join(weight_list)

Solution principale :

def order_weight(_str):
    return' '.join(sortsd(_str.split(' '),key = lambda x: sum(int(c) for c in x)))

Commentaires :

La solution experte est la idem C'est relativement simple ! La plupart d'entre nous utilisent for c dans x et le terminent à ce niveau. En fait, nous pouvons également effectuer d'autres opérations sur c et ensuite le résumer. Cet exemple peut tirer des conclusions ! De nombreuses utilisations avancées de Sorted sont rassemblées en même temps, de manière concise et efficace !

3. Jeu de lancer de dés

Un jeu de dés joué avec cinq dés à six faces. Chaque fois que le dé est lancé, un tableau de 5 nombres apparaîtra (chiffres : 1 à 6). Comptez le nombre de fois où chaque numéro apparaît dans le tableau, divisez le nombre de fois où chaque numéro apparaît en une combinaison de 3 fois et 1 fois, puis comptez selon les règles suivantes. Remarque : Si le nombre d'occurrences est supérieur ou égal à 3 fois, alors au moins une d'entre elles doit être calculée comme 3 fois, et toutes ne peuvent pas être calculées comme 1 fois

3 fois 1 = = 1000 points 3 fois 6 = = 600 points

3 fois 5 = = 500 points 3 fois 4 = = 400 points

3 fois 3 = = 300 points 3 fois 2 = = 200 points

1 fois 1 => 100 points 1 fois 5 => 50 points

1 fois 2 => 0 point 1 fois 3 => 0 point

1 temps 4 => 0 point 1 fois 6 => 0 point

Par exemple, si 5 apparaît 5 fois, alors il doit être calculé comme 3 5s, 1 5 et si 5 apparaît 6 fois, alors ; 3 doit être calculé. Un 5 ou 3 5 sont utilisés pour calculer le score, et il en va de même pour les autres nombres.

Cas de test :

Lancez les dés et calculez le score

5 1 3 4 1 50 + 2 * 100 = 250

1 1 1 3 1 1000 + 100 = 1100

2 4 4 5 4 400 + 50 = 450

Solution débutant :

from collections import Counter
def score(dice):
    num_dict = dict(Counter(dice))
    res = 0
    for i in num_dict:
        if i == 1:
            res +=1000 * (int(num_dict[i] / 3)) + 100 * (num_dict[i] % 3)
            elif i == 5:
                res +=500 * (int(num_dict[i])) + 50 * (num_dict[i] % 3)
            else:
                res += 100 * (i * int(num_dict[i] / 3))
    return res

Solution maître :

def score(dice):
        sum = 0 
        counter = [0,0,0,0,0,0]
        points = [1000, 200, 300, 400, 500, 600]
        extra = [100,0,0,0,50,0]
        for die in dice:
            counter[die-1] += 1
        for (i, count) in enumerate(counter):
            sum += (points[i] if count >= 3 else 0) + extra[i] * (count%3)
        return sum

Commentaires :

La solution du maître est que la structure de données conçue est très intelligente. Il a conçu plusieurs conteneurs à l'avance en fonction du sens de la question, puis la liste des compteurs intelligemment combinées (1-). 6) et (1-6 ) sont associés au nombre d'occurrences. Les points et les listes supplémentaires associent intelligemment le nombre de fois qu'un nombre apparaît (3 fois et 1 fois) au score, réduisant ainsi le risque de saisie accidentelle des scores et améliorant la réutilisation du code. L'ensemble de la solution est très astucieux !

Les questions ci-dessus semblent très simples et faciles à comprendre, mais les solutions ne sont pas aussi concises et ingénieuses que d'autres ! Tout comme un concours de cuisine, un riz frit aux œufs en apparence simple est en fait un test de vos compétences ! La programmation elle-même implique la fusion d'algorithmes + de structures de données. Si vous avez le temps, vous pouvez en apprendre davantage sur d'excellents codes, ce qui sera très bénéfique pour votre propre apprentissage et votre amélioration !

[Cours recommandé : Tutoriel vidéo sur la colonne Python]


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn