2014-10-22 2 views
-2

Я написал эту программу на IDLE 2.7 по ошибке (я новичок). Теперь я пытаюсь запустить его в 3.4. Я получаю ошибки, я пошел на внесенные изменения, но я все еще не могу запустить его. любая помощь? Да, код может быть даже невелик, но я все еще работаю над ним. Поэтому любая помощь будет принята с благодарностью. Для меня я думал, что только скобки были основным различием между обоими обновлениями.От 2,7 до 3,4

# Convert a decimal to a hex as a string 
def decimalToHex(decimalValue): 
    hex = "" 

    while decimalValue != 0: 
     hexValue = int(decimalValue) % 16 
     hex = toHexChar(hexValue) + hex 
     decimalValue = int(decimalValue) // 16  
    return hex 

def printRect (row_count, col_count): 
    row = [] 
    column = []  
    for r in range(row_count):   
     row = [] 
     column = [] 
     end_row_flag = 'False'   
     for c in range(col_count): 
      if r % (row_count) == 0: 
       if c % (col_count-1) == 0: 
        row.append('+') 
       else: 
        row.append('-')       
        end_row_flag = 'True'   
      if end_row_flag == 'True': 
       end_row = row   
      if c % (col_count-1) == 0: 
       column.append('|')    
      else: 
       column.append(' ')     
     if row: 
      print (row)   
     print (column)     
    print (end_row)  

def charASCII(letter):  
    return (ord(letter)) 

# Convert an integer to a single hex digit in a character 
def toHexChar(hexValue): 
    if 0 <= hexValue <= 9: 
     return chr(hexValue + ord('0')) 
    else: # 10 <= hexValue <= 15 
     return chr(hexValue - 10 + ord('A')) 


def main(): 
    # Prompt the user to enter a decimal integer   
    data_file = [] 
    char_file = [] 
    ascii_file = [] 
    hex_key = [] 
    decimal_key = [] 
    nonkey_val = 32 
    data_file.append(' Dec Hex Char ') 
    data_file.append('+---------------+') 
    for i in range(nonkey_val): 
     a_char = chr(i) 
     hex_convert = decimalToHex(i) 
     if i < 10: 
      decimal_key = '0%s' % i 
     else: 
      decimal_key = '%s' % i   
     if i <= 15:    
      hex_key = '0%s' % hex_convert 
     else:    
      hex_key = hex_convert 
     data_file.append('| %s %s %s |' % (decimal_key.strip(), hex_key.strip(), a_char)) 
     # data_file.append('%s' % (a_char)) 

    with open ('sample_file.txt', 'r') as f:      
     data = f.readlines()     
     for character in data:       
      print ('character is %s' % character)    
      decimalValue = charASCII(character[0])    
      hex_convert = decimalToHex(decimalValue)    
      print ('decimalValue is %s' % decimalValue)          
      print ('The hex number for decimal %s is %s' % (decimalValue, hex_convert)             
      data_file.append('| %s %s %s |' % (decimalValue, hex_convert.strip(), character.strip())))            
    data_file.append('+---------------+') 
    print data_file  
    f.close() 

    with open ('output_file.txt', 'w+') as o: 
     for line in data_file: 
      o.write('%s\n'% line) 
    o.close 




main() # Call the main function 
rows = input("Enter the numer of rows: ")  
columns = input("Enter the number of columns: ")  
printRect (rows, columns) 
+1

И какие ошибки вы получаете? Можете ли вы сократить свой код до * просто * тех частей, которые имеют проблемы? –

+1

Совет для будущего: если вы хотите портировать (рабочий) код с Python 2.x на 3.x, то инструмент '2to3' может выполнить 90% работы для вас. В некоторых случаях вам даже не нужно будет редактировать что-либо. –

ответ

0

У вас было три опечатки, которые, если бы вы предоставили трассировку и соответствующий фрагмент кода, который произошел, сделали бы его более очевидным.

with open ('sample_file.txt', 'r') as f:      
    data = f.readlines()     
    for character in data:       
     print ('character is %s' % character)    
     decimalValue = charASCII(character[0])    
     hex_convert = decimalToHex(decimalValue)    
     print ('decimalValue is %s' % decimalValue)          
     print ('The hex number for decimal %s is %s' % (decimalValue, hex_convert))# missing paren here 
     data_file.append('| %s %s %s |' % (decimalValue, hex_convert.strip(), character.strip())) # had extra paren here 
data_file.append('+---------------+') 
print(data_file ) # missing parens 

с закрывает ваши файлы, так что вам не нужно вручную, но если вы это было бы o.close() не o.close

Я хотел бы также вы фактическое логическое значение не является строкой «True»:

 end_row_flag = True  
    if end_row_flag: 
+0

синтаксическая ошибка с выделенным файлом data_file. print ('Десятичное число для десятичного числа% s равно% s'% (decimalValue, hex_convert) data_file.append ('|% s% s% s |'% (decimalValue, hex_convert.strip(), character.strip ()))) – Miteux

+0

ошибка из более поздних строк, код, который я опубликовал, является исправленной версией –

Смежные вопросы