• Acasă
  • Despre noi
  • Autori
  • Mărturii
  • Arhivă
  • Trimite Articol
  • Contact

WORLDIT

Lumea în 1 și 0.

  • Știri
    • Tehnologie
    • Tehnologie mobilă
    • Securitate
    • Developers
    • Știință
    • Benzi desenate
    • Jocuri
    • Intern
  • Tehnic
    • Browser
    • C#
    • C/C++
    • Challenge
    • HTML/CSS
    • Javascript, Ajax, jQuery
    • Open Source
    • PHP
    • Python
    • Securitate IT
    • Socializare
    • WordPress
    • Altele
  • Recenzii
  • Interviuri
  • Evenimente

#wit.py – Operaţii avansate cu stringuri Partea 1

1
  • Publicat de Bogdan Condurache
  • în Python
  • — 14 iun., 2012 at 7:11 pm

Introducere

În primul rând vreau să îmi cer scuze că nu am apucat să scriu articolul de data trecută. Doresc şi să menţionez că, în mod normal, acest articol ar fi trebuit să constituie o continuare a seriei Structuri de date şi, de aceea, nu am dat o temă data trecută. Voi da un la sfârşitul acestui articol, care este atât pentru seria Structuri de date, cât şi pentru articolul postat astăzi. Am mai menţionat stringurile până acum, dar vom trece la lucruri mai avansate, totuşi nu înainte de a prezenta şi lucruri basic.

Operaţii de bază

Toate operaţiile învăţate până acum (verificare lungimii, indexing, slicing, multiplicare, minim, maxim, apartenenţă) sunt compatibile şi cu tipul de date string, diferenţa majoră fiind că un string nu poate fi modificat aşa ca o listă. Totuşi Python oferă o metodă foarte utilă de a modifica un string. Vă voi prezenta această metodă printr-un mic exemplu.

>>> text = 'Salut, %s! Esti cumva cititor %s?'
>>> value = 'Bogdan'
>>> print text % value

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    print text % value
TypeError: not enough arguments for format string
>>> values = ('Bogdan', 'WorldIT')
>>> print text % values
Salut, Bogdan! Esti cumva cititor WorldIT?

Ce observăm: În primul rând, am folosit %s, iar acolo unde aceste caractere au fost prezente, s-a făcut înlocuirea lor cu cele din tuple (adică din values). Este obligatoriu să folosim acel %, iar s reprezintă tipul de date string (vă voi prezenta şi celelalte tipuri de date mai încolo). Dacă avem mai multe din „marcatoare ale conversiei” (din engleză „conversion specifiers”), atunci va trebui ca în tuple să avem acelaşi număr de stringuri. De aceea nu a funcţionat atunci când am dorit să înlocuim %s cu un string. Totuşi, ce s-ar întâmpla dacă am dori să folosim o listă în loc de un tuple?

>>> values = ['Bogdan', 'WorldIT']
>>> print text % values

Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    print text % values
TypeError: not enough arguments for format string

Ce s-a întâmplat? Problema apare pentru că o listă (spre deosebire de tuple sau dicţionar) este considerată un singur element şi deci, nu vom putea înlocui două elemente cu unul singur (aceeaşi eroare ca la înlocuirea cu un string). Tot nu sunteţi convinşi? Să vedem ce se întâmplă dacă păstrăm un singur marcator al conversiei:

>>> text = '%s e cel mai bun blog de programare si stiri IT din Romania!'
>>> text
'%s e cel mai bun blog de programare si stiri IT din Romania!'
>>> print text % values
['Bogdan', 'WorldIT'] e cel mai bun blog de programare si stiri IT din Romania!
>>> values = ['WorldIT']
>>> print text % values
['WorldIT'] e cel mai bun blog de programare si stiri IT din Romania!
>>> values = 'WorldIT'
>>> print text % values
WorldIT e cel mai bun blog de programare si stiri IT din Romania!
>>> values = ('WorldIT')
>>> print text % values
WorldIT e cel mai bun blog de programare si stiri IT din Romania!

Exemplele de mai sus prezintă înlocuirea cu liste (de 1 sau mai multe stringuri), cu un string şi cu un tuple (prezentat şi la început).

!Notă: Pentru a introduce simbolul % în stringul care va fi modificat (formatat), acesta va fi scris de două ori, adică %% :

>>> text = 'TVA-ul a crescut la %s%%'
>>> print text % '24'
TVA-ul a crescut la 24%

Lista cu caracterele folosite pentru marcarea conversiei

Despre Precision

Nu am de gând să intru prea adânc în acest subiect (mai sunt multe de zis), deci mă voi rezuma la lucrurile importante. Unul dintre aceste lucruri ar fi precision, care se foloseşte la tipul float. Tot ce trebuie făcut este ca după % să se introducă un punct şi numărul de zecimale dorit:

>>> format = "Pi with three decimals: %.3f"
>>> from math import pi
>>> print format % pi
Pi with three decimals: 3.142

Încheiere

Nu am să mai lungesc articolul de astăzi. Totuşi mai sunt lucruri de spus despre formatting, iar apoi trecem la string methods.

*Am folosit exemple de cod din cartea Beginning Python: From Novice to Professional de Magnus Lie Hetland, ISBN: 159059519X *

Temă

1. Creaţi o aplicaţie care citeşte 3 numere. Verificaţi dacă numerele pot reprezenta o notă (să fie între 1 şi 10, să fie naturale) şi, la sfârşit afişaţi media aritmetică dintre ele, cu exact două zecimale.

2. Se citesc de la tastatură două cuvinte şi se creează o listă (sau un tuple) cu ele. Apoi se mai citeşte un cuvânt de la tastatură şi, dacă acest al treilea cuvânt este identic cu unul dintre primele două, atunci se va afişa celălalt. În caz contrar se va afişa „Away from Bran” (cei ce au fost la Defcamp vor înţelege aluzia).

Rezolvările se vor trimite doar prin email.

Etichete: formattinglistpythonstringtuples

— Bogdan Condurache a scris 80 articole

Contact | bogdan@worldit.info | @bcman31 | WorldIT Mă numesc Bogdan Condurache şi sunt pasionat de informatică, în special de securitatea IT. Am experienţă în malware researching şi programare în diverse limbaje. Am reuşit să evoluez datorită WorldIT, mulţumită articolelor de calitate de pe acest blog, iar acum vreau să ajut la rândul meu. Dacă eşti de părere că poţi ajuta la dezvoltarea acestei comunităţi, nu ezita să o faci.

  • Articolul anterior Festivalul de Tehnologii Informatice GREPIT 2012 in Botoşani
  • Articolul următor Infografic de sâmbătă #23 – Motive pentru a trece la Google+

1 Comentariu

  1. ovi spune:
    august 28, 2014 la 12:59 pm

    Salut,
    Dar daca vreau sa imi apara ‘Salut, Bogdan! Esti cumva cititor Bogdan?’ .
    Ce trebuie sa fac , sa despart fraza si apoi sa o concatenez ?
    Adica: text1 = ‘Salut, %s! ‘
    text2=’Esti cumva cititor %s?’
    >>> value = ‘Bogdan’
    >>> print text1 % value + ‘ ‘+text2 % value

    Mai exista vre-o varianta mai simpla ?


  • Facebook

    WorldIT.info
  • Ultimele Atacuri Cibernetice din Romania – RO Hacked

    [wp_rss_retriever url="https://rohacked.bit-sentinel.com/feed/" excerpt="none" items="5" read_more="false" new_window="true" thumbnail="false" cache="0"] RO Hacked este registrul atacurilor cibernetice din România.
  • Caută

  • Articole Recomandate

    • Recent Posts
    • Tags
    • Număr record de participanți la DefCamp 2015, cel mai important eveniment dedicat securității cibernetice din Europe Centrala si de Estdecembrie 2, 2015
    • La DefCamp 2015 vei afla prin ce tehnici pot fi evitate măsurile de securitate ale sistemelor informatice criticeoctombrie 16, 2015
    • Ultima sansa sa rezervi bilete de tip Early Bird la DefCamp 2015septembrie 1, 2015
    • 15 sfaturi despre cum poti deveni un programator bun venite de la specialisti romaniaugust 4, 2015
    • algoritmica Android antivirus Apple Avadanei Andrei benzi desenate BitDefender blog browser C++ Chrome concurs eveniment Facebook Firefox Google google chrome hacking html5 infografic informatica internet Internet Explorer IT javascript linux Microsoft Mozilla Firefox online PHP programare retea sociala review Romania securitate Tehnologie Twitter web Windows Windows 7 Wordpress WorldIT worldit.info Yahoo! YouTube
  • mai 2022
    L Ma Mi J V S D
     1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031  
    « dec.    
  • Link-uri Sponsorizate

    • laptop second hand

    • Calculatoare Second Hand

    • cod voucher pc garage

  • Home
  • Tehnic
  • Python
  • #wit.py – Operaţii avansate cu stringuri Partea 1
  • Important

    • Bit Sentinel
    • Centrul de Cercetare în Securitate Informatică din România
    • DefCamp
  • Prieteni

    • BetiT.ro
    • bijuterii handmade
    • Computerica | Resurse gratuite PC
    • Descopera.org
    • Gadgeturi si IT – Giz.ro
  • Prieteni

    • PC – Config
    • RO Hacked
    • Stiri IT

Copyright © 2009-2014 WORLDIT. Toate drepturile Rezervate.
Termeni și condiții | Contact | Licența Creative Commons