Language:

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

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

okan

  • Meraklı

  • Çevrimdışı
  • **

  • 59
  • Cinsiyet
    Bay

    Bay
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #15 : 12 Kasım 2015, 22:58:37 »
1-)başla
2-)metin belgesi oluştur
3-)kişiden girdi al
4-)girdi k ise
5-)girdi l ise
6-)girdi s ise
7-)kişiden isim,soyisim,yaş,meslek değişkenlerini iste
8-)değişkenleri metin belgesine kaydet.
9-)kişiden aradığı kişinin ismini iste
10-)metin belgesini oku ve bir listeye ata.
11-)sonucu göster
12-)kişiden silinecek ismi iste
13-)metinbelgesini oku ve bir listeye ata
14-)kişiyi bul ve ilgili ögeleri sil
15-)yeni listeyi oluştur
16-)yeni listeyi metin belgesine yaz
17-)bitir
Kod: [Seç]
kayit = open("metin.txt","a")
giris = input(u"kayıt için k, silmek için s, listelemek için l yazınız:")
giris = giris.lower()
if giris == "k":
  isim = input(u"isim giriniz (çift isimleri bitişik yazınınız):")
  isim=isim.lower()
  soyisim = input(u"soyisim giriniz:")
  soyisim = soyisim.lower()
  yas = input(u"yaşı giriniz:")
  if yas.isnumeric()==False:
    print("lütfen yaş kısmına sayı giriniz")
  else:
    meslek = input(u"meslek giriniz:")
    meslek = meslek.lower()
    bilgiler = isim+" "+soyisim+":"+yas+":"+meslek+":"
    kayit.write(bilgiler)
    kayit.close()
elif giris == "s":
  try:
    kayit = open("metin.txt","r")
    iterasyon = kayit.read()
    silinecek = input("silmek istediğiniz kişinin isim ve soyismini aralarında bir boşluk bırakarak giriniz:")
    silinecek = silinecek.lower()
    silinen = silinecek.split()
    silinen_1 = silinen[0]+" "+silinen[1]
    liste = []
    for i in iterasyon.split(":"):
      liste.insert(0,i)
    liste.remove("")
    for j in range(2,len(liste),3):
      if liste[j] == silinen_1:
        a = liste[j]
        b = liste[j-1]
        c = liste[j-2]
        liste.remove(a)
        liste.remove(b)
        liste.remove(c)
        break
    kayit.close()
    kayit = open("metin.txt","w") 
    liste.reverse()
    for i in liste:
        yeni_bilgiler = i+":"
        kayit.write(yeni_bilgiler)
    kayit.close()
  except IndexError:
     print("lütfen isim ile soyisim arasında bir boşluk bırakın veya sayı girişi yapmayın")
elif giris == "l":
  try:
    aranan = input("aradığınız kişinin isim ve soyismini aralarında bir boşluk bırakarak giriniz:")
    aranan = aranan.lower()
    aranan_liste = aranan.split()
    aranan_duzgun = aranan_liste[0]+" "+aranan_liste[1]
    kayit = open("metin.txt","r")
    iterasyon = kayit.read()
    liste = []
    for i in iterasyon.split(":"):
      liste.insert(0,i)
    liste.remove("")
    for t in range(2,len(liste),3):
        if liste[t] == aranan_duzgun:
          print (liste[t],liste[t-1],liste[t-2])
          break
  except IndexError:
    print("lütfen isim ile soyisim arasında bir boşluk bırakın veya sayı girişi yapmayın")

not: veri tabanı kullanmadan metin belgesi kullanarak yaptım(sadece python olsun diye sql karışmasın diye). yazım hatası dışında hatalar varsa bildirinki hatamızı görelim. ya da  daha iyi bir çözümünüz varsa o şekilde de yardımcı olabilirsiniz.

yeni soru : basit bir test uygulaması ==>kişiye 10 soru yöneltilecek ve her soruya cevap vermesi için bir süre olacak eğer soruyu o sürede cevaplamazsa diğer soruya geçececek ve testin sonunda kaç doğru kaç yanlış kaç boş var bunu belirtecek bir program yazılabilir.

merkapto

  • Yeni

  • Çevrimdışı
  • *

  • 13
  • Cinsiyet
    Bay

    Bay
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #16 : 24 Kasım 2015, 20:36:03 »
daha iyi olduğu için değil, farklılık olsun diye yazdım.
1- başla
2- dosya aç
3- komut iste
4- komut l ise dosyayı oku, ekrana yaz
5- komut e ise veri değişkenlerini iste, dosyaya yaz
6- komut s ise istenilen kişiyi bul, dosyadan sil
7- komut ç ise programdan çık
8- bitir

Kod: [Seç]
print("""
ajanda programına hoşgeldiniz!..
mevcut kişilerin listesini görmek için 'liste' (l),
yeni kişi eklemek için 'ekle' (e),
kişi silmek için 'sil' (s),
ajandadan çıkmak için 'çık' (ç) yazın...""")
while True:
ajanda = open("ajanda.txt", "a+")
print()
işlem = input("...işleminiz : ")
if işlem == "liste" or işlem == "l":
ajanda = open("ajanda.txt", "r")
adet = int(len(ajanda.readlines()) / 4)
no = 1
ajanda.seek(0)
for i in range(adet):
print("-"*20)
print("NO : {} ".format(no))
print("-"*8)
for i in range(4):
print(ajanda.readline(), end="")
no += 1
ajanda.close()
elif işlem == "ekle" or işlem == "e":
ajanda = open("ajanda.txt", "a")
ad = input("ad : ")
soyad = input("soyad : ")
yaş = input("yaş : ")
meslek = input("meslek : ")
bilgiler = "ad     : {}".format(ad) + "\n" + "soyad  : {}".format(soyad) + "\n" + "yaş    : {}".format(yaş) + "\n" + "meslek : {}".format(meslek) + "\n"
print("...yeni kişi eklendi...")
ajanda.write(bilgiler)
ajanda.close()
elif işlem == "sil" or işlem == "s":
ajanda = open("ajanda.txt", "r+")
sil_no = int(input("silmek istediğiniz kişi no : "))
sil = ajanda.readlines()
kez = 0
while kez < 4:
ajanda.seek(0)
sil.pop(sil_no*4-4)
kez += 1
print("...{} nolu kişi silindi...".format(sil_no))
ajanda = open("ajanda.txt", "w")
ajanda.writelines(sil)
ajanda.close()
elif işlem == "çık" or işlem == "ç":
print("çıkılıyor...")
break
else:
print("hatalı komut, tekrar deneyin!..")

merkapto

  • Yeni

  • Çevrimdışı
  • *

  • 13
  • Cinsiyet
    Bay

    Bay
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #17 : 24 Kasım 2015, 20:46:47 »
bu da yapılmasını istediğin program
1- başla
2- gerekli modülleri yükle
3- sözlükten rastgele 5 soru seç ve sor
4- toplam verilen süre içinde cevapla
5- cevapları değerlendir ve ekrana yazdır
6- bitir

Kod: [Seç]
import time
import random

bilgi = """bilgi yarışmasına hoş geldiniz!..
lütfen sorulan soruları çok hızlı bir şekilde cevaplayınız.
lütfen yalnızca küçük harf kullanınız...\n"""
print(bilgi)

sorular = {"2 kere 2 kaç eder?":"4",
"türkiye'nin başkenti neresidir?":"ankara",
"55 hangi ilimizin plaka numarasıdır?":"samsun",
"yoğurt + sarımsak + hıyar = ?":"cacık",
"ormanların kralı kimdir?":"aslan",
"olmaya devlet cihanda bir nefes ..... gibi, cümlesindeki boşluğu doldurunuz":"sıhhat",
"kitap sözcüğünün ingilizce karşılığı nedir?":"book",
"Yüce Türkiye Cumhuriyetimizin kurucusu kimdir?":"atatürk",
"milli içeceğimiz :)) nedir?":"ayran",
"karadeniz fıkralarının vazgeçilmez karakteri kimdir?":"temel",
"istiklal marşı kaç kıtadan oluşur":"10"}

doğru = 0
yanlış = 0
boş = 0

zaman = time.time()
süre = 25


for i in random.sample(list(sorular), 5):
soru = sorular[i]
if time.time() < zaman + süre:
cevap = input("1. soru --> {} : ".format(i))
if cevap == soru:
doğru += 1
elif cevap == "":
boş += 1
else:
yanlış += 1

print()
print("doğru cevap  :", doğru)
print("yanlış cevap :", yanlış)
print("boş          :", boş)

her soru için ayrı süre değil toplam süreye bakıyor
5 saniyede bir soru değiştirmesi için ne yapılması gerekiyor bulamadım. paylaşırsanız sevinirim.

yeni soru : web sayfalarından veri çekilmesini istiyorum. başlık, gövde yazısı değil de mesela ziraat bankasının anasayfasındaki finansal verileri belli zaman aralıklarında bir dosyaya yazdırsın. örneğin 10 dakikada bir dolar, yuro, altın ve imkb 100 değerlerini çekip metin dosyasına veya excel tablosuna yazsın...

fatihkaya41

  • Geliştirici

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

  • 179
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #18 : 28 Aralık 2015, 00:20:10 »
Kod: [Seç]
import urllib.request
import time

eskizaman = int(time.time())

def veriyiOkuma():
global DolarSatis
global DolarAlis
global EuroSatis
global EuroAlis
global CeyrekAlis
global CeyrekSatis
global YarimAlis
global YarimSatis
global TamAlis
global TamSatis
site = urllib.request.urlopen("http://www.doviz.com/")
siteAlinan = site.readlines()
DolarAlis = ""
DolarSatis = ""
EuroSatis = ""
EuroAlis = ""
CeyrekAlis = ""
CeyrekSatis = ""
YarimAlis = ""
YarimSatis = ""
TamAlis = ""
TamSatis = ""
sayac = 0
for i in str(siteAlinan[209]):
if i == "<" or i == ">":
sayac += 1
if sayac == 2:
DolarAlis += i
sayac = 0
for i in str(siteAlinan[210]):
if i == "<" or i == ">":
sayac += 1
if sayac == 2:
DolarSatis += i
sayac = 0
for i in str(siteAlinan[215]):
if i == "<" or i == ">":
sayac += 1
if sayac == 2:
EuroAlis += i
sayac = 0
for i in str(siteAlinan[216]):
if i == "<" or i == ">":
sayac += 1
if sayac == 2:
EuroSatis += i
sayac = 0
for i in str(siteAlinan[268]):
if i == "<" or i == ">":
sayac += 1
if sayac == 2:
CeyrekAlis += i
sayac = 0
for i in str(siteAlinan[269]):
if i == "<" or i == ">":
sayac += 1
if sayac == 2:
CeyrekSatis += i
sayac = 0
for i in str(siteAlinan[274]):
if i == "<" or i == ">":
sayac += 1
if sayac == 2:
YarimAlis += i
sayac = 0
for i in str(siteAlinan[275]):
if i == "<" or i == ">":
sayac += 1
if sayac == 2:
YarimSatis += i

sayac = 0
for i in str(siteAlinan[280]):
if i == "<" or i == ">":
sayac += 1
if sayac == 2:
TamAlis += i
sayac = 0
for i in str(siteAlinan[281]):
if i == "<" or i == ">":
sayac += 1
if sayac == 2:
TamSatis += i

def cikti():
print("Dolar Alış Fiyatı",DolarAlis)
print("Dolar Satış Fiyatı",DolarSatis)
print("Euro Alış Fiyatı",EuroAlis)
print("Euro Satış Fiyatı",EuroSatis)
print("Çeyrek Altın Alış Fiyatı",CeyrekAlis)
print("Çeyrek Altın Satış Fiyatı",CeyrekSatis)
print("Yarım Altın Alış Fiyatı",YarimAlis)
print("Yarım Altın Satış Fiyatı",YarimSatis)
print("Tam Altın Alış Fiyatı",TamAlis)
print("Tam Altın Satış Fiyatı",TamSatis)



while True:
simdizaman = int(time.time())
if eskizaman+10 == simdizaman:
veriyiOkuma()
cikti()
eskizaman = int(time.time())

bir siteden dolar euro altın alis satis fiyatlarını cekip 10 sn de bir print eden bir program
benim istediğim alıştırma ilk 10000 sayıyı okuyan bir program kullanıcı bir sayı girer ve program sayının okunuşunu yazar

merkapto

  • Yeni

  • Çevrimdışı
  • *

  • 13
  • Cinsiyet
    Bay

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

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

while True:
    try:
        yazı = int(input("bir sayı giriniz : "))
        b1, k1 = divmod(yazı, 10)
        b10, k10 = divmod(b1, 10)
        b100, k100 = divmod(b10, 10)
        b1000, k1000 = divmod(b100, 10)
        b10000, k10000 = divmod(b1000, 10)

        if yazı == 0:
            print("sıfır")
        elif yazı in range(1, 10):
            print(sayı[yazı])
        elif yazı in range(10, 100):
            birler = sayı[k1]
            onlar = sayı10[b1]
            print(onlar+birler)
        elif yazı in range(100, 1000):
            birler = sayı[k1]
            onlar = sayı10[k10]
            yüzler = sayı[b10]
            if b10 == 1:
                yüzler=""
            print(yüzler+"yüz"+onlar+birler)
        elif yazı in range(1000, 10000):
            birler = sayı[k1]
            onlar = sayı10[k10]
            yüzler = sayı[k100]
            binler = sayı[b100]
            if b100 > 1:
                if k100 > 1:
                    print(binler+"bin"+yüzler+"yüz"+onlar+birler)
                elif k100 == 1:
                    print(binler+"bin"+"yüz"+onlar+birler)
                else:
                    print(binler+"bin"+onlar+birler)
            else:
                if k100 > 1:
                    print("bin"+yüzler+"yüz"+onlar+birler)
                elif k100 == 1:
                    print("bin"+"yüz"+onlar+birler)
                else:
                    print("bin"+onlar+birler)
        elif yazı in range(10000, 100000):
            birler = sayı[k1]
            onlar = sayı10[k10]
            yüzler = sayı[k100]
            binler = sayı[k1000]
            onbinler = sayı10[b1000]
            if k1000 > 0:
                if k100 > 1:
                    print(onbinler+binler+"bin"+yüzler+"yüz"+onlar+birler)
                elif k100 == 1:
                    print(onbinler+binler+"bin"+"yüz"+onlar+birler)
                else:
                    print(onbinler+binler+"bin"+onlar+birler)
            else:
                if k100 > 1:
                    print(onbinler+"bin"+yüzler+"yüz"+onlar+birler)
                elif k100 == 1:
                    print(onbinler+"bin"+"yüz"+onlar+birler)
                else:
                    print(onbinler+"bin"+onlar+birler)

        elif yazı < 0:
            print("lütfen pozitif olunuz :))")
        else:
            print("çok büyük sayı... daha sonra eklenecektir...")
    except ValueError:
        print("lütfen tamsayı giriniz!..")


aslında hatalar içeren bir örneğim ilk sayfada mevcut. görmediniz sanırım.
güncellenmiş halini koyuyorum. bu da 100.000 'e kadar olan sayıları yazıya dönüştürüyor. isteyen daha büyük sayıları da ekleyebilir.
fatih bey, sizden başka bir soru bekliyorum :)

fatihkaya41

  • Geliştirici

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

  • 179
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #20 : 31 Aralık 2015, 18:48:25 »
Pardon daha önce sorduğumu unutmuşum  ;D
O zaman basit bir veri tabanı(isterseniz bir txt dosyasınada yazabilirsiniz basit olması açısından) uygulaması isteyeyim. Kullanıcı programı açtığında kullanıcıya 1)yeni kullanıcı ekle 2)var olan kullanıcı sorgula seçeneği sunulsun.
1)Yeni kullanıcı eklede sınıfı,numarası,adı,soyadı kullanıcıya sorulsun kullanıcı veriyi girdikten sonra numarası adı soyadı sınav1 sınav 2 sınav 3 şeklinde veri tabanına(yada txt dosyasına) kaydedilsin
2) Eğer kullanıcı var olan bir kaydı açmak isterse numarası sorulsun ve kullanıcının girdiği numara veri tabanında(yada txt dosyasında) aransın eğer varsa kayıt bilgileri ekrana verilsin ve kullanıcının sınav bilgisi eklemesine veya değiştirmesine izin verilsin

merkapto

  • Yeni

  • Çevrimdışı
  • *

  • 13
  • Cinsiyet
    Bay

    Bay
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #21 : 01 Ocak 2016, 17:09:57 »
bu sorunun cevabı da bu sayfanın başındaki okan ve benim örneklerime çok benziyor. azıcık şekil değiştirilmesi gerekiyor sadece. çok daha farklı birşeyler istersin sanmıştım :)

fatihkaya41

  • Geliştirici

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

  • 179
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #22 : 01 Ocak 2016, 21:59:11 »
Neler biliniyor bilmediğim için basit şeyler sormaya çalıştım.
Programa bir klasör yolu girilsin ve program bu klasördeki dosyaları dosyaların son değişme tarihini uzantısını boyutunu ekrana yazdırsın

91011

  • Genel Yönetici

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

  • 76
    • Profili Görüntüle
    • kişisel bölge
Ynt: Python Alıştırmaları
« Yanıtla #23 : 01 Ocak 2016, 22:13:02 »
Ya böyle çok zor şeyler soruncada yapılmıyor :) o @okan ın örneğinde bayağı aradım birşeyler buldum ama beni aşıyor biraz :)
Tanrı konuşmaz , Şeytan fısıldar ..
akkayahu.com

b65

  • Yeni

  • Çevrimdışı
  • *

  • 46
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #24 : 02 Ocak 2016, 02:42:44 »
Kod: [Seç]
#!/usr/bin/python
# -*- coding: utf-8 -*-

import os, time

# Dizin ataması
dizin = "/home/aa/Belgeler/"
dirs = os.listdir( dizin )

for file in dirs:
   # dosya ile bağlantı kur
    location = os.path.join(dizin, file)

   #dosya mı dizin mi?
    if (os.path.isfile(file)):
      print "dosya ismi: ",os.path.splitext(file)[0]
      print "           tipi                  :",os.path.splitext(file)[1]
      print "           boyutu                :",os.path.getsize(location)
    else: 
      print "****DİZİN*****: ",os.path.splitext(file)[0]
    print "           son değiştirme tarihi :",time.ctime(os.path.getctime(file))
   

İki bilgi sorusu: Yazılımlarda türkce karekterlerin kullanılmasının yolu var mı? Pardus 2011 kullanıyorum import urllib.request da hata veriyor. Hangi dosyayı yüklemem gerekiyor.

Soru: Bir internet sayfasında fare ile tıklayarak atlayabildiğimiz tüm sayfa ve linkleri ekrana basan yazılım.

fatihkaya41

  • Geliştirici

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

  • 179
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #25 : 02 Ocak 2016, 13:11:49 »
siz python 2 kullandığınız için sadece urllib import edin sonraki requestleri yazmayın eğer python3 yüklüyse çalıştırımak için python3 dosyaadi.py komutunu verin

Türkçe karakter python2 de nasıl bil miyorum ancak sizin kodları şöyle yapıp python3 te çalıştırınca türkçe dosya adlarınıda girebiliyoruz.
Kod: [Seç]
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import os, time

# Dizin ataması
dizin = input("Lütfen bir dizin giriniz :   ")
dirs = os.listdir( dizin )

for file in dirs:
   # dosya ile bağlantı kur
    location = os.path.join(dizin, file)

   #dosya mı dizin mi?
    if (os.path.isfile(file)):
      print ("dosya ismi: ",os.path.splitext(file)[0])
      print ("           tipi                  :",os.path.splitext(file)[1])
      print ("           boyutu                :",os.path.getsize(location))
    else:
      print ("****DİZİN*****: ",os.path.splitext(file)[0])
    print ("           son değiştirme tarihi :",time.ctime(os.path.getctime(file)))

« Son Düzenleme: 02 Ocak 2016, 13:26:30 Gönderen: fatihkaya41 »

fatihkaya41

  • Geliştirici

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

  • 179
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #26 : 02 Ocak 2016, 14:38:32 »
Kod: [Seç]
import urllib.request

def olay():
baglantilar = []
try:
site = input("Lütfen bir site adresi giriniz :   ")
siteAdi = urllib.request.urlopen(site)
siteAlinan = siteAdi.readlines()
for i in siteAlinan:
if str(i).find('href=') != -1:
sayac = 0
url = ""
for a in range(str(i).find('href=')+6,len(str(i))):
if str(i)[a] == '"' or str(i)[a] == "'":
sayac += 1
if sayac == 0:
url += str(i)[a]
if sayac == 1:
var = False
for s in baglantilar:
if s == url:
var = True
if var == False:
baglantilar.append(url)

for i in baglantilar:
print(i)

except urllib.error.HTTPError:
print('Python siteyi okuyamadı lütfen başka bir url giriniz')
olay()

olay()
Bari internetten gidelim :)
Kod: [Seç]
http://www.ntvpara.com/piyasa/bist/XUTUMadresinden yada başka bir borsa sitesinden borsa hisselerinin değerlerini saate bir çekip bir klasöre yada veri tabanına her hissenin değerini kayıt zamanıyla beraber yazsın
« Son Düzenleme: 02 Ocak 2016, 14:41:26 Gönderen: fatihkaya41 »

b65

  • Yeni

  • Çevrimdışı
  • *

  • 46
    • Profili Görüntüle
Ynt: Python Alıştırmaları
« Yanıtla #27 : 02 Ocak 2016, 22:44:52 »
fatihkaya41  :)

teşekkürler. Pardus 2011 de tüm urllibleri urllib2 yapıp .request  .error ları kaldırınca hem döviz hem de link yazılımı calıştı. Link yazılımı milliyet te iş yaptı nedense pisilinux.org u okuyamadı.   

 

Yukarı Çık & Back to Up