打开程序时程序崩溃(CDM)。工作正常(IDLE)

时间:2014-11-21 05:52:28

标签: python crash

我刚刚为我的python类完成了我的作业,由于某种原因它无法在CDM中打开。当我处于空闲模式时,它会打开并运行正常。我的朋友代码与我的相同,但他可以在CDM中运行。我的开放和崩溃真的很快。我认为这是我的主要内容,因为如果它是我的其他功能,我将能够通过第一个输入。我和我的朋友查看我的代码并发现没有错,并且混淆了为什么会发生这种情况。因为我们是电脑新手我虽然我会把它带到这里,是的,我的第一个帖子哈哈。有人可以帮我找到我的错误吗?

#Allen
#CSC 110.09
#11/15/2014
#Home Work 8

def main(): #main
#The following should be displayed in the read file
#introduction
print('This program reads data from a file, calculate the statistics and then write the results             to another file.')
print()
print('THIS PROGRAM WILL FIND:')
print()
print('• number of characters')
print('• number of letters')
print('• number of consonants')
print('• number of digits')
print('• number of white-space')
print('• number of word characters')
print('• number of punctuation characters')
print()
#flag
error_loop = False #making a loop so the user enter a valid file

while error_loop == False:
    try:

        original_file = input('Enter a file name:   ') #user input a file to read

        print()

        old_file = open(original_file, 'r')
    except Exception as nope:
        print(original_file, 'not found. Please try again', nope)
        print()

        found = False
    else:

        error_loop = True

try:
    characters_count = 0 #set counting to 0
    letters_count = 0 #set counting to 0
    consonants_count = 0 #set counting to 0
    digits_count = 0 #set counting to 0
    whitespaces_count = 0 #set counting to 0
    wordcharacters_count = 0 #set counting to 0
    punctuation_count = 0 #set counting to 0

    #reading the file
    read_file = old_file.read()

    #counting the stats
    while read_file != '':
        #counting the characters
        characters_count += characters(read_file)
        #counting the letters
        letters_count += letters(read_file)
        #counting the consonants
        consonants_count += consonants(read_file)
        #counting digits
        digits_count += digits(read_file)
        #counting white spaces
        whitespaces_count += whitespaces(read_file)
        #counting word characters
        wordcharacters_count += wordcharacters(read_file)
        #counting punctuations
        punctuation_count += punctuation(read_file)

        #read the file again
        read_file = old_file.read()

except Exception as nope:
    print()
    print(nope)

else:
    #making the new file
    new_file_name = input("please enter a new file name:  ") #user can rename the new file
    new_file = open(new_file_name + ".txt",'w') #call the new file
    new_file.write('Statistics for ')
    new_file.write(original_file)
    new_file.write(':\n')

    new_file.write('\tCharacters: ')
    new_file.write(str(characters_count)+'\n')

    new_file.write('\tLetters: ')
    new_file.write(str(letters_count)+'\n')

    new_file.write('\tConsonants: ')
    new_file.write(str(consonants_count)+'\n')

    new_file.write('\tDigits: ')
    new_file.write(str(digits_count)+'\n')

    new_file.write('\tSpaces: ')
    new_file.write(str(whitespaces_count)+'\n')

    new_file.write('\tWord characters: ')
    new_file.write(str(wordcharacters_count)+'\n')

    new_file.write('\tPunctuation:')
    new_file.write(str(punctuation_count)+'\n')

finally:

    #closes the file
    old_file.close()
    new_file.close()

    print()
    print("we have created a new file called", new_file_name)


def characters(characters): #function 1

return len(characters) #length of characters


def letters(letter): #function 2

letters_total = 0
letters = ['A', 'B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q',\
           'R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h',\
           'i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
#list of the alphabeth
for line in letter:
    if line in letters:
        letters_total += 1
return letters_total


def consonants(consonant): #function 3

consonants_total = 0
consonants = ['B','C','D','F','G','H','J','K','L','M','N','P','Q','R','S','T','V',\
              'W','X','Y','Z','b','c','d','f','g','h','j','k','l','m','n','p','q',\
              'r','s','t','v','w','x','y','z'] #list of consonats
for line in consonant:
    if line in consonants:
        consonants_total += 1
return consonants_total


def digits(digit): #function 4

digits_total = 0
digits = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'] #list of numbers
for line in digit:
    if line in digits:
        digits_total += 1
return digits_total


def whitespaces(whitespace): #function 5 

whitespaces_total = 0
search = ' ' # space
for line in whitespace:
    if line == search:
        whitespaces_total += 1
return whitespaces_total


def wordcharacters(wordcharacter): #function 6

wordcharacters_total = 0
wordcharacters = ['@','#','$','%','&','+','-','=','<','>','*','/'] #list of word characters
for line in wordcharacter:
    if line in wordcharacters:
        wordcharacters_total += 1
return wordcharacters_total



def punctuation(punctuations): #function 7

punctuation_total = 0
punctuation = ['!','~','`','^','(',')','_','{','}',\
               '[',']','|','\\',';',':','"',"'",',','.','?'] #list of punctuation
for line in punctuations:
    if line in punctuation:
        punctuation_total += 1
return punctuation_total


main() #Call out main

1 个答案:

答案 0 :(得分:0)

问题出在def main():block之后的缩进中。

你有......

def main(): #main
#The following should be displayed in the read file
#introduction
print('This program reads data from a file, calculate the statistics and then write the             results             to another file.')
print()
print('THIS PROGRAM WILL FIND:')
...

您应该拥有的是在定义main()方法后缩进的那些print语句。像这样......

def main():
    print('indent after definition is started like this')

这是否是您代码的唯一问题,我不知道。如果您有更多问题,请尝试更改并返回。