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


