Ödev 2: Cevaplar

Teslim Tarihi: 23 Ekim 2019, Çarşamba 13:30

  1. 0'den n+1'e kadar (n+1 hariç) çift sayıları üreten bir Python programı yazınız. (İpucu: n'in tek ya da çift olduğunu kontrol etmek yerine n sayısını programınızın başında herhangi çift bir sayıya atayarak tanımlayınız ki üretilen en büyük çift sayı n olsun.) Soruyu şartlı ifadelere (if) başvurmadan çözünüz!
In [3]:
n  = 22
for i in range(0, n+1, 2):
    print(i)
0
2
4
6
8
10
12
14
16
18
20
22
  1. $T_0 = 1000 K$ ile $T_9 = 10000 K$ aralığında 10 eşit sıcaklık aralığıyla ayrılmış sıcaklıklardan oluşan bir sicaklik listesi tanımlayarak, bu sıcaklıklara sahip bir karacismin ışınımının maksimumunu yapacağı dalgaboylarını metre biriminde hesaplaynız ve lambda_max isimli bir listede toplayıp, ekrana yazdırınız. (İpucu: Hesap için Wien kayma yasasını kullanmanız gerekir!)
In [11]:
T0 = 1000
Tson = 10000
# esit aralik sayisi 10
aralik_sayisi = 10
adim = (Tson - T0) / aralik_sayisi
T = []
lambda_max = []
for i in range(aralik_sayisi + 1):
    Tn = T0+i*adim
    T.append(Tn)
    lambda_max.append(0.002898 / Tn)
print("T [K] = ", T)
print("lambda max [m] = ",lambda_max)
T [K] =  [1000.0, 1900.0, 2800.0, 3700.0, 4600.0, 5500.0, 6400.0, 7300.0, 8200.0, 9100.0, 10000.0]
lambda max [m] =  [2.898e-06, 1.525263157894737e-06, 1.035e-06, 7.832432432432432e-07, 6.3e-07, 5.26909090909091e-07, 4.528125e-07, 3.96986301369863e-07, 3.5341463414634147e-07, 3.1846153846153843e-07, 2.898e-07]
In [12]:
# Alternatif cozum
T0 = 1000
Tson = 10000
# esit aralik sayisi 10
aralik_sayisi = 10
adim = (Tson - T0) / aralik_sayisi
# Hizli liste olusturma (list comprehensions)
Tn = [T0+i*adim for i in range(aralik_sayisi +1)]
lambda_max = [0.002898 / T for T in Tn]
print("T [K] = ", T)
print("lambda max [m] = ",lambda_max)
T [K] =  [1000.0, 1900.0, 2800.0, 3700.0, 4600.0, 5500.0, 6400.0, 7300.0, 8200.0, 9100.0, 10000.0]
lambda max [m] =  [2.898e-06, 1.525263157894737e-06, 1.035e-06, 7.832432432432432e-07, 6.3e-07, 5.26909090909091e-07, 4.528125e-07, 3.96986301369863e-07, 3.5341463414634147e-07, 3.1846153846153843e-07, 2.898e-07]
  1. yildizlar = $(["Vega", "Deneb", "Altair"], ["Procyon", "Sirius", "Betelgeuse"], ["Pollux", "Castor"])$ demetinde sırasıyla 'Deneb' yıldızını, kış üçgeni yıldızlarını içeren listeyi, demetin en son elemanını, 'Pollux' yıldızını, 'Sirius' yıldızını ve ikizler takımyıldızının en parlak iki yıldızını içeren listeinin en son elemanını ekrana yazdırmak üzere gerekli indekslemeleri yapan bir program yazınız.
In [1]:
yildizlar = (["Vega", "Deneb", "Altair"], ["Procyon", "Sirius", "Betelgeuse"], ["Pollux", "Castor"])
print(yildizlar[0][1])
print(yildizlar[1])
print(yildizlar[-1])
print(yildizlar[-1][-2])
print(yildizlar[1][1])
print(yildizlar[-1][-1])
Deneb
['Procyon', 'Sirius', 'Betelgeuse']
['Pollux', 'Castor']
Pollux
Sirius
Castor
  1. Aşağıdaki programda hata(lar) bulunmakta, bu nedenle çalışmamaktadır. Eğer bir jupyter notebook kod bloğuna yazıp çalıştırırasnız, program çıktı vermez ve kabuk çalışmaz hale gelir! Kodu çalışacak ve ekrana k = 1'den M 'e kadar (M hariç) değişmek üzere 1/k sayılarını toplayacak ve sadece sonucu ekrana yazdırack şekilde düzenleyiniz.
s = 0; k = 1; M = 100
while k < M:
s += 1/k
print s
In [14]:
s = 0; k = 1; M = 100
while k < M:
    s += (1 / k)
    k += 1
print(s)
5.177377517639621