Şu eğitimden: Temel Python Eğitimi
Çözüm: Hex'i onlu sayıya çevirme - Python Eğitimi
Şu eğitimden: Temel Python Eğitimi
Çözüm: Hex'i onlu sayıya çevirme
- [Eğitmen] Tamam. Umarım altıgen seni çok fazla rahatsız etmemiştir. Sizinle birlikte gözden geçirmek istediğim iki çözümüm var ve ilki oldukça basit. Yani burada, bu fonksiyona geçirilen her şeyin bir dize olduğunu veya daha doğrusu bir karakter listesi olduğunu varsayıyorum, bunu düşünmenin başka bir yolu. Ve size verdiğim tek test senaryoları sicimlerdi. Dolayısıyla, tamsayıları veya gerçekten tuhaf başka bir girdiyi kontrol ettiyseniz, benden daha kapsamlı ve çalışkan bir programcısınız. İyi iş, ama burada gerçekten sadece teller için endişelendim. Sadece bir ön kontrol olarak, hexNum'daki her karakteri gözden geçiriyorum ve sadece buradaki sözlüğümüzde olduğundan emin oluyorum. Ve eğer sözlüğümüzde varsa, o zaman onu işleyebileceğimi biliyorum. Yani üç durum, üç karakter dizesi, iki karakter dizisi ve bir karakter dizisi vardır. Üç karakter dizisi için, en soldaki karakteri alırım, bu yüzden karakter indeksi sıfırdır ve bunu 256 veya 16'nın karesi ile çarparım. Unutmayın, bu onaltılık bir sayıdaki 256. basamaktır. Sonra ortadaki sayıyı alıyorum, 16 ile çarpıyorum çünkü bu 16'lar basamağında veya 16 üzeri ilk kuvvet. Sonra birinin yeri bende var ve onu geri kalanına ekleyip geri veriyorum. İki karakter dizesi ve ardından bir karakter dizisi için benzer bir çözümüm var. Tamam, bu yüzden aslında herhangi bir uzunluktaki ipi idare edebilecek başka bir yaklaşıma bakmak istiyorum ve bu burada. Dolayısıyla bu tür bir çözüm kesinlikle gerekli değildi, ama bence keşfetmeye değer. Yani burada, önceki çözümde sahip olduğumuz kontrol kodunun aynısına sahibiz. Her karakter onaltılık sayılar sözlüğümüzde yer alıyorsa, onu işleyebileceğimizi biliyoruz. Sonra converted adında bir yer tutucu ekledim. Sıfır olarak başlar ve bu, sonunda geri döndüğümüz sayıdır. Bu yüzden ipimizi döndüreceğiz ve tüm sayıları bir araya getireceğiz. Ardından, onaltılık sayımızdaki en büyük basamağın üssünün ne olduğunu bulmak istiyoruz. Unutmayın, onaltılık bir sayıda, birin basamağı, 16. sırası, 256. sırası, 4096. sırası vb. vardır. Yani bu 16 üzeri sıfırıncı kuvvet, 16 üzeri birinci kuvvet, 16 üzeri ikinci, 16. üzeri üçüncü, vb. Genel olarak, baktığımız en yüksek kuvvet veya en yüksek üs, onaltılık sayıdaki karakter sayısı eksi birdir. Yani üç karakterli bir onaltılık sayımız varsa, en soldaki karakterin değeri 16 üzeri üç eksi birin basamağı veya 16'nın karesi veya 256'dır. Bu yüzden hala kafanız karıştıysa, birkaç kez üzerinden geçin ve ne demek istediğimi anlayacaksınız. Yani burada kodumuzda, tek yaptığım onaltılık sayının uzunluğu eksi bir almak, ve sonra bu bize sayımızdaki en yüksek üssü, 16'nın en yüksek üssünü veriyor. Sonra döngümüzü yapacağız. hexNum'daki char için, yeni sayıyı dönüştürülen sayımıza ekleriz. Yani ilk geçişte, dönüştürülen sıfır olacak. Hiçbir şey eklemiyoruz ama en soldaki o onaltılık sayıyı alıyoruz, 16 ile üs kuvvetine çarpıyoruz. Sonra her döngüde üsten bir çıkarırız. Yani soldan sağa doğru gittikçe, üslerimiz küçülür ve sonunda sıfır olana kadar küçülür ve onaltılık sayıyı bir ile çarpıyoruz. Son olarak, dönüştürülen son sayıyı döndürüyoruz. İlk başta nasıl yapacağınızdan emin olmadığınız bir programlama sorunuyla karşılaşırsanız, kapsamı daraltmayı deneyin. Bunu bir karakter için, iki karakter için, üç karakter için nasıl yaparsınız? Bir kalıp bulmaya çalışın, bunun için bir fikir edinin ve ardından tüm karakter sayıları için genel duruma yaklaşın.
Deneme dosyaları ile uygulama yaparken öğrenin
Eğitmenin dersi öğretmek için kullandığı dosyaları indirin. İzleyerek, dinleyerek ve uygulama yaparak öğrenin.