Geomania.Org Forumları

Python Kodlama ve Matematik => Python Kodlama ve Matematik => Konuyu başlatan: Lokman Gökçe - Mart 16, 2022, 08:29:00 ös

Başlık: Soru 1: Sayfa Numaralama
Gönderen: Lokman Gökçe - Mart 16, 2022, 08:29:00 ös
Pek yabancı olmadığımız bir kombinatorik sorusu ile başlayalım:

Problem: Bir kitabın sayfaları $1$'den $n$'ye kadar numaralandırıyorken klavyenin tuşlarına basılıyor.

(a) Tuşlara kaç kez basılmıştır?

(b) Belli bir $m$ rakamı kaç kez kullanılmıştır?

Örneğin, $n=11$ sayfalı bir kitap ve $m=1$ rakamı için

(a) Tuşlara $13$ defa basılmıştır.

(b) $1$ rakamı $4$ defa kullanılmıştır.

yanıtlarını (çıktılarını) alırız.



Soru 1: Python 3.9'da $n$ ve $m$ girdileri için yukarıdaki problemi çözen programı yazınız.



Açıklama:

n = int(input())

m = input().strip()

gibi int (integer) veya str (string) türünde girdi tanımlamaları ile başlayabilirsiniz.
Başlık: Ynt: Soru 1: Sayfa Numaralama
Gönderen: Lokman Gökçe - Mart 16, 2022, 08:31:14 ös
Çözüm: startswith() ve sep() fonksiyonları ile şöyle bir çözümüm var. Google colab'da keyfi değerler girilerek çalıştırılabilir

Kod: [Seç]
n = int(input())
m = input().strip()
pages = []
for i in range(1, n + 1):
    pages.append(i)
# print(*pages, sep = '') kodu ile kullanılan tüm numaralardan oluşan liste görülebilir.
# Şimdi bu 'boşluksuz' listeyi str biçimine dönüştürelim.
metin=""
for kelime in pages:
    metin=metin+ str(kelime)
print("Tuşlara {} defa basılmıştır.".format(len(metin)))
def count_substring(metin, m):
    count = 0
    for j in range(len(metin)):
        if metin[j:].startswith(m):
            count += 1
    return count
print("{} rakamı {} defa kullanılmıştır.".format(m, count_substring(metin, m)))


Python'daki startswith() ve sep() fonksiyonlarının görevleri için google'dan arama yapılabilir.
SimplePortal 2.3.3 © 2008-2010, SimplePortal