程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Notes dapprentissage Python Day05

編輯:Python

Liste

>>> alist = [10, 5, 32, 1, 8, 20]
>>> alist[0] = 100
>>> alist[1:3] = [45, 88, 12, 24]
>>> alist
[100, 45, 88, 12, 24, 1, 8, 20]
>>> alist[2:2]
[]
>>> alist[2:2] = [12, 8]
>>> alist
[100, 45, 12, 8, 88, 12, 24, 1, 8, 20]
# La méthode de la liste
>>> alist.append(12) # Annexe
>>> alist.extend([55, 32, 1]) # Ajouter plusieurs
>>> alist.remove(8) # Supprimer le premier8
>>> alist.index(12) # Retour au premier12Indice
>>> alist.reverse() # Flip
>>> blist = alist.copy() # Oui.alistValeur decopyAprès,Assigner une valeur àblist
>>> alist.insert(2, 88) # Sous le signe2Insertion de la position88
>>> alist.sort() # Ordre croissant
>>> alist.sort(reverse=True) # Ordre décroissant
>>> alist.count(12) # Statistiques12Nombre d'occurrences
>>> alist.pop() # éjecter le dernier élément
>>> alist.pop(2) # L'indice pop - up est2Projets pour

Tuple

Une liste plutôt statique .

>>> atuple = (10, 20, 15)
>>> atuple.count(10) # Statistiques10Nombre d'occurrences
1
>>> atuple.index(15) # Accès15Indice
2
>>> a = (10)
>>> type(a) <class 'int'>
>>> a
10
>>> b = (10,) # Un Tuple d'élément unique doit avoir une virgule
>>> type(b) <class 'tuple'>
>>> len(b)
1

Exercice:Simuler la structure de la pile

  1. La pile est une structure de dernier entré premier sorti
  2. Écrivez un programme, Implémenter la structure de la pile avec la liste
  3. La pile de pression doit être prise en charge 、Hors de la pile、Fonction de requête
  4. Réfléchir au fonctionnement de la procédure
(0) Pile de pression
(1) Hors de la pile
(2) Requête
(3) Sortie
Veuillez sélectionner(0/1/2/3): 2
[]
(0) Pile de pression
(1) Hors de la pile
(2) Requête
(3) Sortie
Veuillez sélectionner(0/1/2/3): 0
Données: hello
(0) Pile de pression
(1) Hors de la pile
(2) Requête
(3) Sortie
Veuillez sélectionner(0/1/2/3): 0
Données: world #Dernier entré premier sorti( Ce qui a été écrit plus tard a été retiré en premier. ) (0) Pile de pression
(1) Hors de la pile
(2) Requête
(3) Sortie
Veuillez sélectionner(0/1/2/3): 2 ['hello', 'world'] (0) Pile de pression
(1) Hors de la pile
(2) Requête
(3) Sortie
Veuillez sélectionner(0/1/2/3): 1
éjecter de la pile: world
(0) Pile de pression
(1) Hors de la pile
(2) Requête
(3) Sortie
Veuillez sélectionner(0/1/2/3): 2 ['hello'] (0) Pile de pression
(1) Hors de la pile
(2) Requête
(3) Sortie
Veuillez sélectionner(0/1/2/3): 1
éjecter de la pile: hello
(0) Pile de pression
(1) Hors de la pile
(2) Requête
(3) Sortie
Veuillez sélectionner(0/1/2/3): 1
Pile vide
(0) Pile de pression
(1) Hors de la pile
(2) Requête
(3) Sortie
Veuillez sélectionner(0/1/2/3): 3
bye-bye
  1. Pensez à ce que fait le programme , Définir la fonction comme une fonction
def push_it(): #Pile de pression
def pop_it(): #Hors de la pile
def view_it(): #Requête
def show_menu(): # Toutes les autres déclarations de jugement qui mettent en œuvre la fonction sont résumées en une seule fonction
if __name__ == '__main__':
show_menu()

3. Écrire des énoncés de fonctions spécifiques dans chaque fonction

La première approche:
stack = []
def push_it():
data = input('Veuillez saisir les données:').strip()
if data:
stack.append(data)
else:
print('Données nulles,Non ajouté')
def pop_it():
if stack:
print('éjecter de la pile: %s' % stack.pop())
else:
print('Pile vide')
def view_it():
print(stack)
def show_menu():
prompt = '''
(0) Pile de pression
(1) Hors de la pile
(2) Requête
(3) Sortie
Veuillez sélectionner(0/1/2/3):'''
while True:
choice = input(prompt).strip()
if choice not in ['0','1','2','3']:
print('Entrée invalide,Veuillez réessayer.!')
continue
if choice == '0':
push_it()
elif choice == '1':
pop_it()
elif choice == '2':
view_it()
else:
print('Bye_bye')
break
if __name__ == '__main__':
show_menu()
Deuxième approche(Utiliser un dictionnaire):
stack = []
def push_it():
data = input('Données: ').strip()
if data:
stack.append(data)
else:
print('Données nulles,Non ajouté ')
def pop_it():
if stack:
print('éjecter de la pile: %s' % stack.pop())
else:
print('Pile vide')
def view_it():
print(stack)
def show_menu():
# Le dictionnaire est le type de conteneur , Vous pouvez stocker n'importe quel objet , Dans cet exemple, la fonction Save
cmds = {'0': push_it, '1': pop_it, '2': view_it}
prompt = """(0) Pile de pression
(1) Hors de la pile
(2) Requête
(3) Sortie
Veuillez sélectionner(0/1/2/3): """
while True:
choice = input(prompt).strip() # Supprimer les espaces aux deux extrémités de la chaîne
if choice not in ['0', '1', '2', '3']:
print('Entrée invalide,Veuillez réessayer.. ')
continue
if choice == '3':
print('Bye-bye')
break
cmds[choice]() # Extraire la fonction correspondante du dictionnaire pour l'appeler
if __name__ == '__main__':
show_menu()

Dictionnaire

  • Cartographie、Variable、Conteneur
  • DictionnairekeyImpossible de répéter
  • Lors de l'attribution d'une valeur au dictionnaire ,keyModifier s'il existe,Nouveau s'il n'existe pas
  • DictionnairekeyDoit être un objet immuable
>>> dict(['ab', ['name', 'bob'], ('age', 20)])
{'a': 'b', 'name': 'bob', 'age': 20}
>>> dict([('name', 'tom'), ('age', 20), ('mail', '[email protected]')])
{'name': 'tom', 'age': 20, 'mail': '[email protected]'}
>>> {}.fromkeys(['tom', 'jerry', 'bob'], 20)
{'tom': 20, 'jerry': 20, 'bob': 20}
>>> info = dict([('name', 'tom'), ('age', 20), ('mail', '[email protected]')])
>>> info
{'name': 'tom', 'age': 20, 'mail': '[email protected]'}
>>> for key in info:
... print(key, info[key])
...
name tom
age 20
mail [email protected]
>>> '%(name)s is %(age)s years old' % info
'tom is 20 years old'
>>> '%s is %s years old' % (info['name'], info['age'])
'tom is 20 years old'
>>> info['age'] = 22
>>> info['phone'] = '15012345678'
>>> info
{'name': 'tom', 'age': 22, 'mail': '[email protected]', 'phone': '15012345678'}
>>> 'tom' in info
False
>>> 'name' in info
True
>>> len(info) 4
>>> info.keys() # Enlevez tous leskey
dict_keys(['name', 'age', 'mail', 'phone'])
>>> info.values() # Enlevez tous lesvalue
dict_values(['tom', 22, '[email protected]', '15012345678'])
>>> info.items() # Retirer les paires de valeurs clés
dict_items([('name', 'tom'), ('age', 22), ('mail', '[email protected]'), ('phone',
'15012345678')])
>>> list(info.items()) # Convertir les paires de valeurs clés en listes
[('name', 'tom'), ('age', 22), ('mail', '[email protected]'), ('phone', '15012345678')]
>>> info.popitem() # éjecter un élément du Dictionnaire
('phone', '15012345678')
>>> info.pop('mail') # éjecterkey- Oui.mailProjets pour
>>> info.update({'mail': '[email protected]'}) # Mise à jour du Dictionnaire
>>> {(1, 2): 'tom'} # Tuple as key
{(1, 2): 'tom'}
>>> {[1, 2]: 'tom'} # La liste est variable,Ne peut pas être key,Erreur signalée
# ** La méthode la plus importante dans le dictionnaire **
>>> info.get('name') # Extrait du Dictionnaire keyPournameValeur de
'tom'
>>> print(info.get('phone')) # keyPas dans le dictionnaire,Retour par défaut None
None
>>> print(info.get('phone', 'not found')) # Impossible de trouverkeyRetournot found
not found
>>> info.get('name', 'not found')
'tom'
>>> print(info.get('phone', '110'))
110

CAS2: Système d'information de connexion de l'utilisateur analogique

  1. Prise en charge de l'inscription des nouveaux utilisateurs , Nouveau nom d'utilisateur et mot de passe enregistrés dans le dictionnaire
  2. Prise en charge des anciens utilisateurs pour se connecter , Le nom d'utilisateur et le mot de passe indiquent correctement le succès de la connexion
  3. Quelles actions le programme principal effectue - t - il par des demandes circulaires? ,Selon le choix de l'utilisateur, Effectuer une opération d'inscription ou de connexion
import getpass
userdb = {} # Utilisé pour stocker le nom d'utilisateur et le mot de passe
def register():
username = input('Nom d'utilisateur: ').strip()
if username == '':
print('Le nom d'utilisateur ne peut pas être vide ')
elif not username.isalnum():
print(' Le nom d'utilisateur ne peut contenir que des lettres et des chiffres ')
elif username in userdb:
print('L'utilisateur existe déjà')
else:
password = input('Mot de passe: ')
userdb[username] = password
def login():
username = input('Nom d'utilisateur: ').strip()
password = getpass.getpass('Mot de passe: ').strip()
# if username not in userdb or userdb[username] != password:
if userdb.get(username) != password:
print('\033[31;1mÉchec de la connexion\033[0m')
else:
print('\033[32;1mConnexion réussie\033[0m')
def show_menu():
cmds = {'0': register, '1': login}
prompt = """(0) Inscription
(1) Débarquement
(2) Sortie
Veuillez sélectionner(0/1/2): """
while True:
choice = input(prompt).strip()
if choice not in ['0', '1', '2']:
print(' Sélection invalide ,Veuillez réessayer.. ')
continue
if choice == '2':
print('Bye-bye')
break
cmds[choice]()
if __name__ == '__main__':
show_menu()
Validation:
# python 05.py
(0) Inscription
(1) Débarquement
(2) Sortie
Veuillez sélectionner(0/1/2): 0
Nom d'utilisateur:lss
Mot de passe:123
(0) Inscription
(1) Débarquement
(2) Sortie
Veuillez sélectionner(0/1/2): 1
Nom d'utilisateur: lss
Mot de passe:
Connexion réussie
(0) Inscription
(1) Débarquement
(2) Sortie
Veuillez sélectionner(0/1/2): 2
Bye-bye

Ensemble

Un ensemble est un concept mathématique

  • Il se compose de différents éléments
  • L'élément Collection doit être un objet immuable
  • Les collections sont désordonnées
  • La collection est comme un dictionnaire sans valeur
  • Les ensembles sont divisés en ensembles variables et en ensembles immuables
>>> frozenset('abc') # Ensemble immuable,Une fois la collection créée, Impossible d'ajouter, de supprimer ou de modifier
frozenset({'b', 'a', 'c'})
>>> set(['tom', 'jerry', 'bob'])
{'jerry', 'tom', 'bob'}
>>> aset = set('abc')
>>> bset = set('bcd')
>>> aset
{'b', 'a', 'c'}
>>> bset
{'b', 'd', 'c'}
>>> aset & bset # Intersection, Éléments des deux collections
{'b', 'c'}
>>> aset | bset # Union,Tous les éléments des deux collections
{'b', 'd', 'a', 'c'}
>>> aset - bset # Supplément différentiel,asetOui.,bsetAucune
{'a'}
>>> bset - aset # Supplément différentiel,bsetOui.,asetAucune
{'d'}
>>> aset
{'b', 'a', 'c'}
>>> len(aset)
3
>>> 'a' in aset
True
>>> for ch in aset:
... print(ch)
>>> aset.add(10) # Ajouter une nouvelle entrée à la collection
>>> aset.pop() # éjecter n'importe quel élément
'b'
>>> aset.remove(10) # Supprimer l'élément spécifié
>>> aset.update(['tom', 'jerry', 'bob'])
>>> aset
{'tom', 'a', 'jerry', 'bob', 'c'}
>>> aset = set('abc')
>>> bset = set('bcd')
>>> aset.union(bset) # aset | bset
{'b', 'd', 'a', 'c'}
>>> aset.intersection(bset) # aset & bset
{'b', 'c'}
>>> aset.difference(bset) # aset - bset
{'a'}
>>> cset = aset.union(bset)
>>> aset.issubset(cset) # aset- Oui.csetUn sous - ensemble de?
True
>>> cset.issuperset(aset) # cset- Oui.asetUn superensemble de?
True
# Utilisation fréquente des collections pour les opérations de déstockage
>>> from random import randint
>>> nums = [randint(1, 20) for i in range(20)]
>>> nums
[6, 12, 18, 19, 1, 1, 16, 15, 5, 6, 18, 19, 14, 11, 17, 13, 2, 5, 20, 16]
>>> result = []
>>> for i in nums:
... if i not in result:
... result.append(i)
>>> result
[6, 12, 18, 19, 1, 16, 15, 5, 14, 11, 17, 13, 2, 20]
>>> list(set(nums))
[1, 2, 5, 6, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

Exercice:

  • Simulationunix2dosProcédure
  • windowsLe système\r\n Comme marqueur de fin de ligne
  • NonwindowsLe système\n Comme marqueur de fin de ligne

python l2w.py userdb.py =>Générer un nouveau fichier,DéjàwindowsNouvelle ligne pour

"""
Convertir enwindows Nouveau format de ligne
Supprimer les caractères vides à la fin de chaque ligne du fichier source ,Et le raccorder. \r\n
"""
---->La solution estlinux Obtenir le fichier texte sur windows Une fois ouvert, il apparaît en ligne ,Pas de retour, Une fois que vous avez besoin de convertir un fichier texte
Mais.
import sys
def unix2dos(src, dst):
with open(src) as src_fobj:
with open(dst, 'w') as dst_fobj:
for line in src_fobj:
line = line.rstrip() + '\r\n'
dst_fobj.write(line)
if __name__ == '__main__':
unix2dos(sys.argv[1], sys.argv[2])

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved