28 Eylül 2016 Çarşamba

PYTHON NOTLARI:


Tek satırda if else (python 3.5 if else single line):

kaynak:
http://stackoverflow.com/questions/11529273/python-condense-if-else-to-one-line

tanım:

a if cond else b

Örnek:

a=1
if a==1:
    sonuc= True
else:
   sonuc= False
print(sonuc)

yukardaki kodun eşdeğeri:

a=1
sonuc= True if a==1 else False
print(sonuc)


INTEGER SAYISIYI 8 HANE OLACAK ŞEKİLDE BINARY SAYIYI DÖNÜŞTÜRME:

kaynak:
http://stackoverflow.com/questions/10411085/converting-integer-to-binary-in-python

>>> bin(6)[2:].zfill(8)
'00000110'

örnek: Girilen byte türünden sayıyı 8 haneli olcak şekilde string veriye dönüştürnüz.

python:
---------------
decode_bin fonksiyonu girilen integer sayıyı string türünden 8 hane olacak şekilde başına 0 doldurur:

def decode_bin(int_value):
    return bin(int_value)[2:].zfill(8)

sayi = 5
s = decode_bin(sayi)



çıktısı:
00000101

delphi:
-------------
harici IntToBin adlı fonsiyonu kullanacağız.

function IntToBin(Value: Byte): string;
var
  I: Integer;
begin
  SetLength(Result, 8);
  for I := 1 to 8 do
  begin
    Result[I] := Char(Ord('0') + Value shr 7);
    Inc(Value, Value);
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var sayi:integer;
   s:string;
begin
   sayi:=5;
   s:=IntToBin(sayi);
   edit1.Text:=s;
end;


çıktısı:
00000101

STRINGİ BELLİ BİR KARAKTERE GÖRE PARÇALARA AYIRMA ( split):

Örnek:Ayrıcı karakter  ; olsun."1;argentina;buenos aries" ifadesini ; karakterine göre parçalara ayırınız.

python:
------------------
bunun için split(ayırıcıkarakter) kullanılır.geriye "ayırıcı karakter sayısının bir fazlası kadar" bir liste(dizi) elemanları oluşur.

a = "1;argentina;buenos aires"
b = a.split(';')

b[0] #1
b[1] #argentina
b[2] #buenos aires


delphi:
------------------
Delphi için Split adında harici bir fonksiyon(procedür) kullanıyoruz.

procedure Split(const Delimiter: Char;Input: string;const Strings: TStrings) ;
begin
   Assert(Assigned(Strings)) ;
   Strings.Clear;
   Strings.Delimiter := Delimiter;
   Strings.DelimitedText := Input;
end;

procedure TForm1.Button2Click(Sender: TObject);
var a: string;
   b: TStringList;
begin
   a:= '1;argentina;buenos aires';
   b := TStringList.Create;
   try
     Split(';', a, b) ;
     memo1.Lines.add(b[0]) ;
     memo1.Lines.add(b[1]) ;
     memo1.Lines.add(b[2]) ;
   finally
     b.Free;
   end;
end;



kaynak: http://delphi.about.com/cs/adptips2002/a/bltip1102_5.htm

procedure TForm1.Button1Click(Sender: TObject);
var a: string;
   b: TStringList;
begin
   a:= 'your delphi guide';
   b := TStringList.Create;
   try
     Split(' ', a, b) ;
     memo1.Lines.add(b[0]) ; //your
     memo1.Lines.add(b[1]) ; //delphi
     memo1.Lines.add(b[2]) ; //guide
   finally
     b.Free;
   end;
end;

ancak yukaradaki delphi için tanımlanan split prosedürü tam çalışmıyor.Mesela 'TL - Türk Lirası' stringini doğru paraçalara ayıramıyor,o yüzden yeni split tanımlayalım:


procedure ParseDelimited(const sl : TStrings; const value : string; const delimiter : string) ;
var
   dx : integer;
   ns : string;
   txt : string;
   delta : integer;

begin
   delta := Length(delimiter) ;
   txt := value + delimiter;
   sl.BeginUpdate;
   sl.Clear;
   try
     while Length(txt) > 0 do
     begin
       dx := Pos(delimiter, txt) ;
       ns := Copy(txt,0,dx-1) ;
       sl.Add(ns) ;
       txt := Copy(txt,dx+delta,MaxInt) ;
     end;
   finally
     sl.EndUpdate;
   end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var a:string;
   b: TStringList;
begin
   a:= 'TL - Türk Lirası';
   //ParseDelimited(Memo1.lines,a,'-');
   b := TStringList.Create;
   try
     ParseDelimited(b,a,'-');
   finally
      Memo1.lines.Add(b[0]) ;
      Memo1.lines.Add(b[1]) ;
     b.Free;
   end;

end;

kaynak: https://www.thoughtco.com/parse-a-delimited-string-1057564

Hiç yorum yok:

Yorum Gönder