2016-03-30 22 views
-5

Bu programı yazdım ve bir sürü sorun yaşıyorum. Python ile çok fazla tecrübem yok, bu yüzden bir sürü aptal sözdizimi hatası yaptım. Lütfen sadece kodumdaki tüm hataları bulmama yardım et!Python kodumdaki küçük hataları bulma konusunda yardıma ihtiyacım var

import string 
num_ltr = [] 
ltr_num = [] 
num = 1 
for ltr in string.ascii_lowercase: 
    num_ltr[num] = ltr 
    ltr_num[ltr] = num 
    num += 1 

def print_menu(): 
    return '1. Translate a string to numbers' 
    return '2. Translate numbers to a string' 
    return '3. Quit' 

def ltr_to_num(s, ltr_num): 
    for char in s: 
     print ltr_num[char] 
    print 

def num_to_ltr(num_ltr, s): 
    num_list = s.split() 
    sentence = 0 
    for num in num_list: 
     if num.isdigit(): 
     sentence = num_ltr[num] 
    else: 
     sentence += num 

user_choice = 0 
while user_choice != 3: 
    print print_menu() 
    user_choice = raw_input("> ") 
    if user_choice = 1: 
     s = raw_input('Enter a sentence: ') 
     num_to_ltr(s,num_ltr) 
    elif user_choice = 2: 
     s = raw_input('Enter the numbers separated by spaces: ') 
     num_to_ltr(s,num_ltr) 
    elif user_choice != 3: 
     print "I don't recognize that choice." 
print "Goodbye!" 
+3

Yapmanız gereken, programınızı çalıştırmayı denemektir. İlk hata bir "IndentationError". Sorunun ne olduğunu görebilmelisiniz: 'cümle = ...' dört boşlukla girilmeli. Siz bu işteyken, tüm '': '' bloğunu da girmelisiniz. Programınızı tekrar çalıştırırsanız, yeni bir "IndentationError" alırsınız. Bu da basit bir düzeltme. Sorunların çoğu, kendinizi anlayabileceğiniz basit düzeltmelerdir. Anlamadığınız bazı hatalarla karşılaşırsanız, hatayı bir arama motoruna kopyalayın. Şansınız, bir başkasının problemi zaten vardı. – zondo

+0

Hatalarınızın çoğu, IDE'nizin size anlatacağı çok basit. Programınızı çalıştırın ve size verdiği hataları okuyun. – Aaron

+0

Ayrıca, kodunuzu daha açıklayabilir misiniz? Örneğin, başlangıçta ne yapmaya çalışıyorsun? – Aaron

cevap

0

Genel öneri: Sözde kod yaz. Programınızı yazın ve aynı zamanda hataları en aza indirmek için kodunuzu test edin. Bilgi toplanan öğretmenler, arkadaşlar ve stackoverflow.

Python 2.7 kullanımı için belirli bir nedeniniz var mı?

import string 
num_ltr = [] 
ltr_num = [] 
num = 1 

for ltr in string.ascii_lowercase: 
    num_ltr[num] = ltr 
    ltr_num[ltr] = num 
    num += 1 

def print_menu(): 
    print '1. Translate a string to numbers' 
    print '2. Translate numbers to a string' 
    print'3. Quit' 

def ltr_to_num(s, ltr_num): 
    for char in s: 
     print (ltr_num[char]) 


def num_to_ltr(num_ltr, s): 
    num_list = s.split() 
    sentence = 0 
    for num in num_list: 
     if num.isdigit(): 
      sentence = num_ltr[num] 
     else: 
      sentence += num 

user_choice = 0 
while user_choice != 3: 
    print print_menu() 
    user_choice = raw_input("> ") 
    if user_choice == 1: 
     s = raw_input('Enter a sentence: ') 
     num_to_ltr(s,num_ltr) 
    elif user_choice == 2: 
     s = raw_input('Enter the numbers separated by spaces: ') 
     num_to_ltr(s,num_ltr) 
    elif user_choice != 3: 
     print "I don't recognize that choice." 
print "Goodbye!" 

Ben senin hataların bazıları sabit, daha fazla yardım lütfen bana bildirin istiyorsanız, üst orada yapıyor birtanemsin ne im emin değil. Umarım biraz yardımcı olmuştumdur.

1

Bu ilk bölümde ne yaptığınızı bilmiyorum, size burada yardımcı olmak çok zor. Eğer daha fazla açıklamak Eğer düzeltmek için daha kolay olurdu: Sen (Eğer işlevi başına bir şey dönebilirsiniz), onları "geri dönüşü" Bu satırları değil yazdırmak isteyen

for ltr in string.ascii_lowercase: 
    num_ltr[num] = ltr 
    ltr_num[ltr] = num 
    num += 1 

. Bu yerine göre

def print_menu(): 
    return '1. Translate a string to numbers' 
    return '2. Translate numbers to a string' 
    return '3. Quit' 

Değişim it:

def print_menu(): 
    print('1. Translate a string to numbers') 
    print('2. Translate numbers to a string') 
    print('3. Quit') 

karşılaştıran değerleri için kod = atama için ise, == geçerli:

while user_choice != 3: 
    print print_menu() 
    user_choice = raw_input("> ") 
    if user_choice == 1: 
     s = raw_input('Enter a sentence: ') 
     num_to_ltr(s,num_ltr) 
    elif user_choice == 2: 
     s = raw_input('Enter the numbers separated by spaces: ') 
     num_to_ltr(s,num_ltr) 
    elif user_choice != 3: 
     print "I don't recognize that choice." 
print "Goodbye!" 
0

bir IDE kullanan kullanıcılar (Integrated Development Environment) Kodunuzda sorunların olduğu yerleri vurgulamak için alabilirsiniz. PyCharm kullanıyorum.

Hemen şimdi sonunda ise bloğunda ve hat sentence = num_ltr[num] yanlış bazı girinti var.

Ayrıca, print_menu fonksiyon return çok kez çağırır. Bunun yerine dizeleri eklemek istediğinizi düşünüyorum. Muhtemelen her satırın sonunda '\ n' istersiniz.

Menü seçiminizi nasıl değiştirdiğinizi değiştirmeniz gerekir. Ya girdiyi int'ye dönüştürün veya sayı yerine dizelerle karşılaştırın, ör. 1 yerine '1'. Bunun ötesinde, sadece kodu çalıştırmayı ve hata mesajlarını okumaya çalışın. Bu size biraz daha fazla ulaşmak için yeterli ipuçları vermelidir - belki de çalışma koduna kadar.

İlgili konular