Language:

Gönderen Konu: Python Alıştırmaları  (Okunma sayısı 8240 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

91011

  • Genel Yönetici

  • Çevrimdışı
  • *****

  • 76
    • Profili Görüntüle
    • kişisel bölge
Python Alıştırmaları
« : 05 Kasım 2015, 00:32:52 »
Merhaba,

               Dil öğrenme ile ilgili bazı konular görüyorum özellikle python öğrenmeye çalışan arkadaşlar var. Bu konu hakkında internette şurada burada birsürü yazı bulabilirsiniz. Ben bu konuda eğitim aldığım için öncelikle bazı eksik noktalara değinmek istiyorum. Programlama konusunda herhangi bir bilgisi olmayan ve kendi başına bu işe başlamak isteyenler genellikle bir dili öğrenmenin yeteceğini sanırlar. Halbuki böyle değildir. Siz ne kadar kaynaklardan okusanızda o aklınızdan uçar gider. Programlama öğrenebilmek için öncelikle algoritma mantığını anlamanız gerekiyor ve bu doğrultuda bol örnek çözmelisiniz. Mesela biri size bir soru yönelttiğinde bunu hemen kafanızda "if koyarım else yaparım which koyarım"  gibi canlandırabildiğinizde gerçekten algoritma mantığını anladığınızı gösterir. Bu sayede diğer dillerin yazım şeklini birkaç alıştırmayla öğrenerek zorlanmadan o dile uyum sağlayabilirsiniz.


               Öğrenmeye çalışan üyelere yardım amaçlı ve hepberaber bilgi alışverişi yapmak için bir oyun oynayalım ben aşağıda bir örnek vereceğim. Bu örneği bir başkası yazmaya çalışsın ve yazarsa o başka bir soru sorsun. Soruya cevap veren önce algoritmasını yazsın sonra kodu paylaşsın ben örnek olarak ilk soruda algoritmayı vereceğim. Algoritma nedir derseniz: https://tr.wikipedia.org/wiki/Algoritma

1. Klavyeden girilen bir cümlenin kelimelerinin kaç harfli olduğunu çıktı olarak veren program.

ilk örnek olduğu içni algoritmasınıda vereyim geriye sadece kodlamak kalacak.

1. Başla
2. Kullanıcıdan cümle iste.
3. Cümle girildiyse diğer 4. adıma geç, girilmediyse 8. adıma geç (cümlenin girilmemesinden kastım herhangi bir girdi olmaadan enter e basılması )
4. Cümleyi kelimelere böl.
5. Kelime sayısını tut.
6. Kelimelerdeki karakterleri say.
7. Sayıları ekrana yazdır.
8. Bitir.

Kabaca algoritması bu şekilde dahada ayrıntılı olabilirdi.

Lütfen sorunun cevabını vermeyecekseniz yanıt bırakmayın, diğer iletileri kaldıracağım.
« Son Düzenleme: 05 Kasım 2015, 00:38:27 Gönderen: 91011 »
Tanrı konuşmaz , Şeytan fısıldar ..
akkayahu.com

okan

  • Meraklı

  • Çevrimdışı
  • **

  • 59
  • Cinsiyet
    Bay

    Bay
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #1 : 05 Kasım 2015, 11:20:25 »
kelimelerin harf sayısını bulan kodlar
Kod: [Seç]
girilen = unicode(raw_input(u"Cümleyi giriniz:"))

if girilen != "":
  liste = girilen.split(" ")
  kelime_sayisi = len(liste)
  toplam_harf = 0
  a = 0
  while a < kelime_sayisi:
    print "%s ==> %s harf" %(liste[a],len(liste[a]))
    a = a + 1
else:
  pass
cümlenin harf sayısını bulan kodlar
Kod: [Seç]
girilen = unicode(raw_input(u"Cümleyi giriniz:"))

if girilen != "":
  liste = girilen.split(" ")
  kelime_sayisi = len(liste)
  toplam_harf = 0
  a = 0
  while a < kelime_sayisi:
    toplam_harf = toplam_harf + len(liste[a])
    a = a + 1
  print "cümle %s harften oluşmaktadır" %(toplam_harf)

else:
  pass
girilen cümleyi büyük harfle başlatıp nokta ile bitiren bir kod yazılabilir?eğer büyük harfle başlayıp nokta ile bitiyorsa cümle hiçbir değişiklik yapmayacak.
« Son Düzenleme: 05 Kasım 2015, 11:44:46 Gönderen: okan »

91011

  • Genel Yönetici

  • Çevrimdışı
  • *****

  • 76
    • Profili Görüntüle
    • kişisel bölge
Ynt: Python Alıştırmaları
« Yanıtla #2 : 07 Kasım 2015, 19:01:31 »
algoritması şöyle:
1. Başla
2. Cümle iste
3. Cümle ilk harfinin büyük küçük olduğunu kontrol et
4. İlk harf büyükse "Cümle doğru yazısı ver"
5. İlk harf küçükse ilk harfi büyük yap sonuna nokta koy
6. Bitir.

Kod: [Seç]
girilen = input(u"Cümleyi giriniz:")

if girilen != "":
    cumle = girilen
    if cumle[0].islower():
       yeni_cumle= cumle.replace(cumle[0],cumle[0].upper())+ "."
       print(yeni_cumle)

    elif cumle[0].isupper():
        print ("cümleniz doğru.")


3. klavyeden girilen degere göre üçgen yada dörtgen çizebilen program istiyorum ama hangi şekil olacağını da ben şeçeceğim.
Tanrı konuşmaz , Şeytan fısıldar ..
akkayahu.com

ilkermanap

  • Genel Yönetici

  • Çevrimdışı
  • *****

  • 49
  • Cinsiyet
    Bay

    Bay
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #3 : 07 Kasım 2015, 22:13:49 »
for kelime in unicode(raw_input(u"Cumle:")).split():
    print kelime, len(kelime)
Sistem Yöneticisi, Kraliyet Teknik Universitesi, Stokholm, Isvec

okan

  • Meraklı

  • Çevrimdışı
  • **

  • 59
  • Cinsiyet
    Bay

    Bay
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #4 : 08 Kasım 2015, 00:05:56 »
1-)Başla
2-)Üçgen veya dörtgen girdisi al
3-)üçgen seçilirse 5-7 arasını işlet
4-)Dörtgen seçilirse 8-11 arasını işlet
5-)Üçgen yüksekliği iste
6-)Üçgeni elde et ve yazdır.
7-)Bitir
8-)1. kenar uzunluğunu iste
9-)2. kenar uzunluğunu iste
10-)Dörtgeni elde et ve yazdır
11-)Bitir
Kod: [Seç]
tercih = input("üçgen için 1 dörtgen için 2 yi seçiniz: ")
if tercih == "2":
  girilen_1 = int(input("1.kenar uzunluğunu giriniz: "))
  girilen_2 = int(input("2.kenar uzunluğunu giriniz: "))

  while girilen_2 > 0 :
    print("* "*girilen_1)
    girilen_2 = girilen_2 - 1

elif tercih == "1":
  a = int(input("üçgen yüksekliğini giriniz: "))
 
  for i in range(1,2*a,2):    #2a ya hiçbir zaman ulaşamayacağı için böyle yazdım
    print(" "*a + "*"*i)
    a = a - 1
    if a == 0:
      break

else:
  print("lütfen 1 veya 2 giriniz")

4-) Sayı ile girilen değeri yazıya, yazı ile girilen değeri sayıya çeviren bir program yazılabilir. (1 ile 999) arası için. örneği kişi "15" girerse çıktısı "onbeş" şeklinde olacak ya da "onbeş" diye girerse "15" şeklinde.

not: bu arada çözümüm yanlış veya eksikse olduğu için kaldırılırsa eksiğimin ne olduğunu bana belirtirmisiniz. şimdiden teşekkürler.
« Son Düzenleme: 08 Kasım 2015, 09:48:51 Gönderen: okan »

merkapto

  • Yeni

  • Çevrimdışı
  • *

  • 13
  • Cinsiyet
    Bay

    Bay
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #5 : 10 Kasım 2015, 01:38:49 »
Kod: [Seç]
gen = int(input("kaç kenarlı şekil istersin? : "))

üçgen = """
  /\\
 /  \\
/    \\
------
"""

dörtgen = """
 ------
|      |
|      |
|      |
 ------
"""
beşgen = """
  / \\
 /   \\
/     \\
\     /
 \   /
  ---
"""
altıgen = """
  ----
 /    \\
/      \\
\      /
 \    /
  ----
"""

if gen == 3:
    print(üçgen)
elif gen == 4:
    print(dörtgen)
elif gen == 5:
    print(beşgen)
elif gen == 6:
    print(altıgen)
elif gen > 6:
    print("şeklimiz en yakın zamanda hazırlanacak")
elif gen < 0:
    print("lütfen 3-6 arası rakam giriniz")
elif gen == 2 or gen == 1:
    print("böyle şekil mi olur")
else:
    print("yanlış istek, iyi günler")


böyle birşey mi olmalı? :)

merkapto

  • Yeni

  • Çevrimdışı
  • *

  • 13
  • Cinsiyet
    Bay

    Bay
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #6 : 10 Kasım 2015, 14:12:45 »
Kod: [Seç]
sayı = {0: "sıfır",
        1: "bir",
        2: "iki",
        3: "üç",
        4: "dört",
        5: "beş",
        6: "altı",
        7: "yedi",
        8: "sekiz",
        9: "dokuz"}

sayı10 = {1: "on",
          2: "yirmi",
          3: "otuz",
          4: "kırk",
          5: "elli",
          6: "altmış",
          7: "yetmiş",
          8: "seksen",
          9: "doksan"}

yazı = int(input("bir sayı giriniz : "))

if yazı in range(10):
    print(sayı[yazı])
elif yazı in range(10, 100):
    b, k = divmod(yazı, 10)
    print(sayı10[b]+sayı[k])
elif yazı in range(100, 1000):
    b1, k1 = divmod(yazı, 100)
    b2, k2 = divmod(k1, 10)
    if b1 > 1:
        print(sayı[b1]+"yüz"+sayı10[b2]+sayı[k2])
    else:
        print("yüz"+sayı10[b2]+sayı[k2])
elif yazı in range(1000, 10000):
    b1, k1 = divmod(yazı, 1000)
    b2, k2 = divmod(k1, 100)
    b3, k3 = divmod(k2, 10)
    if b1 > 1:
        if b2 > 1:
            print(sayı[b1]+"bin"+sayı[b2]+"yüz"+sayı10[b3]+sayı[k3])
        else:
            print(sayı[b1]+"bin"+"yüz"+sayı10[b3]+sayı[k3])
    else:
        if b2 > 1:
            print("bin"+sayı[b2]+"yüz"+sayı[b3]+sayı[k3])
        else:
            print("binyüz"+sayı[b3]+sayı[k3])
elif yazı < 0:
    print("lütfen pozitif olunuz :))")
elif yazı > 9999:
    print("çok büyük sayı... daha sonra eklenecektir...")
else:
    print("kusura bakma, küsüre bakmıyoruz!.. harf de istemiyoruz!..")

soru 4- Rakamlar kullanılarak girilen sayıyı yazıya dönüştüren program. python3 kullanılmıştır.
not : "0" içeren sayılarda sorun çıkartıyor...
« Son Düzenleme: 10 Kasım 2015, 16:01:47 Gönderen: merkapto »

merkapto

  • Yeni

  • Çevrimdışı
  • *

  • 13
  • Cinsiyet
    Bay

    Bay
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #7 : 10 Kasım 2015, 15:33:29 »
Kod: [Seç]
cümle = input("lütfen bir cümle yazınız : ")
print()
kelime = cümle.split()
kelime_sayısı = len(kelime)
toplam_harf=0

if kelime:
    for i in kelime:
        print(i, "kelimesinin harf sayısı : {}".format(len(i)))
        toplam_harf += len(i)
else:
    print("lütfen boş bırakmayınız!..")

print()
print("toplam harf sayısı :", toplam_harf)

soru 1- Klavyeden girilen bir cümlenin kelimelerinin kaç harfli olduğunu çıktı olarak veren program. python3 kullanılmıştır.

okan

  • Meraklı

  • Çevrimdışı
  • **

  • 59
  • Cinsiyet
    Bay

    Bay
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #8 : 10 Kasım 2015, 19:51:38 »
soru 4- Rakamlar kullanılarak girilen sayıyı yazıya dönüştüren program. python3 kullanılmıştır.
not : "0" içeren sayılarda sorun çıkartıyor...
Kod: [Seç]
sayı = {0: "",             # buraya sıfırı hiçbir değer almayacak şekilde tanımladık. burada sayı aralarında sıfır yazmaması için
        1: "bir",
        2: "iki",
        3: "üç",
        4: "dört",
        5: "beş",
        6: "altı",
        7: "yedi",
        8: "sekiz",
        9: "dokuz"}

sayı10 = {1: "on",
          2: "yirmi",
          3: "otuz",
          4: "kırk",
          5: "elli",
          6: "altmış",
          7: "yetmiş",
          8: "seksen",
          9: "doksan",
          0: ""}  # buraya sıfırı hiçbir değer almayacak şekilde tanımladık

try:  #harf girişi yaptığında onu floata çeviremediği içi ValueError veriyor bu hatayı verdiğinde yazması için bir komut verdik.
  yazı = float(input("bir sayı giriniz : ")) #küsuratlı sayıyı tanıyabilsin diye int yerine float olarak tanımladık.


  if yazı == 0:    #sadece sıfır yazdığında sıfır yazması için buraya sıfırı bir if ile tanımladık.
    print ("sıfır")
  if yazı in range(1,10):   #0 yazdığında bir satır boşluk bırakarak sonlanmaması için range in başlangıç değerini 1 yaptık.
      print(sayı[yazı])
  elif yazı in range(10, 100):
      b, k = divmod(yazı, 10)
      print(sayı10[b]+sayı[k])
  elif yazı in range(100, 1000):
      b1, k1 = divmod(yazı, 100)
      b2, k2 = divmod(k1, 10)
      if b1 > 1:
          print(sayı[b1]+"yüz"+sayı10[b2]+sayı[k2])
      else:
          print("yüz"+sayı10[b2]+sayı[k2])
  elif yazı in range(1000, 10000):
      b1, k1 = divmod(yazı, 1000)
      b2, k2 = divmod(k1, 100)
      b3, k3 = divmod(k2, 10)
      if b1 > 1:
          if b2 > 1:
              print(sayı[b1]+"bin"+sayı[b2]+"yüz"+sayı10[b3]+sayı[k3])
          else:
              if  b2 == 0:  #buraya 1005 veya 7002 gibi iki sıfır içeren ve b1<100 olduğu için b2 == 0 olduğu durumu tanımladık.
                print(sayı[b1]+"bin"+sayı10[b3]+sayı[k3])
              else:
                print(sayı[b1]+"bin"+"yüz"+sayı10[b3]+sayı[k3])
      else: 
          if b2 > 1:
            print("bin"+sayı[b2]+"yüz"+sayı10[b3]+sayı[k3])
          else:
            if b2 == 0:
              print("bin"+sayı10[b3]+sayı[k3])
            else:
              print("binyüz"+sayı10[b3]+sayı[k3])
  elif yazı < 0:
      print("lütfen pozitif olunuz :))")
  elif yazı > 9999:
      print("çok büyük sayı... daha sonra eklenecektir...")
  elif yazı not in range(0,10000,1): #sayı tam sayı olmadığında buraya girmesi için bu şekilde bir tanımlama yaptık.
      print("küsuratlı sayı giremezsiniz")
except ValueError:
  print ("harf girişi yapamazsınız.")
sorunları çözdüm. hata varsa yine deneyin bana bildirin ama ben bulamadım.

91011

  • Genel Yönetici

  • Çevrimdışı
  • *****

  • 76
    • Profili Görüntüle
    • kişisel bölge
Ynt: Python Alıştırmaları
« Yanıtla #9 : 10 Kasım 2015, 21:31:16 »

merkapto  soruları baştan çözmen gerekmiyor kimseyi sınamıyoruz sadece karşılıklı sıralı bir alıştırma sadece neden kimse bunu anlamıyor ?

Cevabını vermişsin ama devamında soru sormuyorsun.
Tanrı konuşmaz , Şeytan fısıldar ..
akkayahu.com

merkapto

  • Yeni

  • Çevrimdışı
  • *

  • 13
  • Cinsiyet
    Bay

    Bay
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #10 : 11 Kasım 2015, 10:15:15 »
başkan niye kızıyon yaa :( "ben de yapabiliyorum" demek için koymadım onları. soruyu okuyup yapmıştım ama foruma koymaya fırsatım olmamıştı. aklıma da soru gelmemişti. bugün yazını okuyunca soru düşündüm ve işte geliyor.

soru 5- her çift sayı daima iki asal sayının toplamından oluşur. program bizden çift sayı girmemizi istesin ve ardından girilen çift sayının asallarını versin.

nozver

  • Yeni

  • Çevrimdışı
  • *

  • 7
  • Cinsiyet
    Bay

    Bay
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #11 : 11 Kasım 2015, 13:00:35 »
Sayılar kuramında Goldbach sanısı, "2'den büyük her çift sayı, iki asal sayının toplamı şeklinde yazılabilir" iddiasıdır. Çözülememiş en eski matematik problemlerinden biridir.

https://tr.wikipedia.org/wiki/Goldbach_hipotezi

fatihkaya41

  • Geliştirici

  • Çevrimdışı
  • *****

  • 184
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #12 : 11 Kasım 2015, 23:44:17 »
kesin bir çözümü olmasada belli bayağıda büyük asallara kadar bulan program yazdım buyrun kodlar biraz uzun ama işallah görünür. 20 000 karakter sınırı koydu kodu yazmadım indirebilirsiniz.  https://yadi.sk/d/U16XjBZfkPq4u

Yeni soru:
Asal sayıları bulan bir program yazmak programdan be bekliyorum:
Hangi sayıya kadar olan asalları bulmak istiyorsunuz diye sorsun ve girdiye göre o sayıya kadar olan asalları bulup çıktı versin

okan

  • Meraklı

  • Çevrimdışı
  • **

  • 59
  • Cinsiyet
    Bay

    Bay
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #13 : 12 Kasım 2015, 01:39:14 »
1-)Başla
2-)Girdi iste
3-)hangi sayıya kadar bulunacağını bul
4-)sayının asal sayı olup olmadığını bul
5-)sayı asal ise yazdır.
6-)değilse bir şey  yapma
7-)bitir.
Kod: [Seç]
#!-*-coding:utf-8-*-
try:
  a = int(input(u"hangi sayıya kadar asalları bulmak istiyorsunuz: "))
  if a < 2 :
    print ("2 den küçük asal sayı olamaz")
  else:
    print ("2")
    for i in range(3,a):
        bolundu = False
        for j in range(2,i):
          if i % j == 0:
              bolundu=True
        if bolundu == False:
           print (i)
except ValueError:
  print("harf veya küsurat girilemez")

yeni soru:
        metin belgesine girilen bir metindeki yazı kısımlarını bir dosyaya sayı kısımlarını başka dosyaya kaydeden bir program yazılabilir.
« Son Düzenleme: 12 Kasım 2015, 01:42:22 Gönderen: okan »

91011

  • Genel Yönetici

  • Çevrimdışı
  • *****

  • 76
    • Profili Görüntüle
    • kişisel bölge
Ynt: Python Alıştırmaları
« Yanıtla #14 : 12 Kasım 2015, 13:42:44 »
1. Başla
2. metin belgesi aç
3. metin belgesine yazı gir
4. beleyi kapat.
5. sayı ve kelime stringlerini tanımla
6. metini boşluklaradan böl
7. split edilen sayi ise sayilar dizisine aktar.
8. split edilen kelime ise kelimeler dizisine aktar.
9. sayilar metin belgesi aç.
10. sayılar dizisini belgeye yazdır.
11. belgeyi kapat.
12. kelimeler metin belgesi aç.
13. kelimeler dizisini yazdır.
14. belgeyi kapat.
15. bitir.

Kod: [Seç]
f=open("metin.txt","w")
f.write("But I must 6547 explain to you 676 how all this mistaken idea of denouncing pleasure and praising 6547 pain was born and I will give you a complete account of the system, and expound the 2146 actual teachings of the great explorer of the truth, the master-builder of human happiness. 987 No one rejects, dislikes, or avoids pleasure itself, 697 because it is pleasure, but because those who 857 do not know how to pursue pleasure rationally 649 encounter consequences that are extremely painful. 964 Nor again is there anyone who loves or pursues 258 or desires to obtain pain of itself, 98 because it is pain, but because occasionally circumstances occur in 99 which toil and pain can procure him some great 28 pleasure. To take a trivial example, which of us ever 63 undertakes laborious physical exercise, 97 except to obtain some advantage from 659 it? But who has any right to find fault with 47 a man who chooses to enjoy a pleasure that has 25 no annoying consequences, 32 or one who avoids a pain that 58 produces no resultant 69 pleasure? ")
f.close()

kelimeler=""
sayilar=""

f2= open("metin.txt","r")
metin=f2.read()

for i in metin.split():
    if i.isalpha()== True:
        kelimeler += i+" \n"

    elif i.isdecimal() ==True:
        sayilar += i+ " \n"

s=open("sayilar.txt","w")
s.write(sayilar)
s.close()

k=open("kelimeler.txt","w")
k.write(kelimeler)
k.close()

paragrafın içerisini sayıları rasgele ben koydum.

isim soy isim yaş meslek gibi kullanıcı bilgilerinin yer aldığı bir kayıt sistemi istiyorum. Sistemde k ya bastığımda kayıt alıcak, s ye bastığımda kayıt silecek, l ye bastığımda listeleme gibi özelliklere sahip bir kayıt programı istiyorum.  Tabi bu kayıtlar bir txt dosyasında tutulacak
« Son Düzenleme: 12 Kasım 2015, 22:03:53 Gönderen: 91011 »
Tanrı konuşmaz , Şeytan fısıldar ..
akkayahu.com

 

Yukarı Çık & Back to Up