Ben Proje Euler Problem 22 çözmeye çalışıyorum:# 22 Proje Euler: Cevabım neden yanlış?
names.txt
Kullanılması (sağ tıklayın ve 'Bağlantıyı Farklı Kaydet/Hedefi Farklı ...'), beş bin üzerinde ilk adları içeren bir 46K metin dosyası, başlamak 'u alfabetik sıraya göre sıralayarak. Daha sonra her bir isim için alfabetik değeri üzerinde çalışıyorsanız, bu değeri bir isim puanı elde etmek için listesindeki alfabetik konumuyla çarpın. Liste alfabetik sıralanır Örneğin, Colin, 3 + 15 + 12 + 9 + 14 = 53 değerinde , listede 938 adıdır. Böylece COLIN, 938 × 53 = 49714 bir puan elde eder.
Dosyadaki tüm ad puanlarının toplamı nedir?
names.txt
ait
içerikleri ben bu kodu kullandığınızda yanlış bir cevap almak neden anlamıyorum
"MARY","PATRICIA","LINDA","BARBARA","ELIZABETH","JENNIFER","MARIA",....[46k omitted]
şunlardır:
import os
chart=open('names.txt')
doc=chart.read()
doc=doc.split(',')
doc.sort()
z=0
def nameNum(name):
r=0
for letter in name:
r=r+ord(letter) - 64
return r
for string in doc:
z+=(doc.index(string)+1)*nameNum(string)
print z
ben z yapmaya çalışıyordu cevabı üretmek ama doğru değil ve nedenini anlayamıyorum.
Bu arada python 3.
Hata ayıklama yardımını arayan sorular (** "neden bu kod çalışmıyor?" **) istenen davranışı içermelidir, * belirli bir sorun veya hata * ve * gereken en kısa kod * bunu oluşturmak için ** kendisini sorgular **. ** açık bir problem ifadesi ** olmayan sorular, diğer okuyucular için yararlı değildir. Bkz. [Minimal, Tam ve Doğrulanabilir Örnek Nasıl Oluşturulur] (http://stackoverflow.com/help/mcve). – MattDMo
da, bu Python 2 –
'da çalışan yazdırma z'yi kullandığınız için Python 3'ü kullanamazsınız. Yanıt veremediğim yanıtta, "allsum" gibi test edilebilir bir işlev yazmanızı ve sonra onu basit girdilere uygulamanızı öneririm , '' '' '' ve '' A ',' 'ile başlayarak, cevabı hesaplayabilirsiniz. Sadece allsum (open ('names.txt'). Read()) '' allsum ('' 'CD', 'A', 'AB' '' ') 'gibi bir şeyden sonra çalışın. –