函数运行时导致 EOF 错误 - 使用 Python

Causing an EOF error when function is run - using Python

提问人:Mr.Moffia 提问时间:12/13/2022 更新时间:12/13/2022 访问量:87

问:

我正在为一门大学课程做一个项目,我们需要在功能上实现不同的提示。我不是在寻找我尚未完成的其余代码,只是想弄清楚如何在调用 get_num_of_words() 函数后不断提示用户输入,而不会出现 EOF 错误。需要注意的一件重要事情是,在作业中,我们被明确告知要避免使用预先存在的函数。

代码如下:

def get_num_of_words(user_input):
    count = 0
    words = 0
    length = 0
    for i in user_input:
        length += 1
    while count < length:
        if user_input[count] == user_input[-1]:
            words += 1
        elif user_input[count] != ' ' and user_input[count + 1] == ' ':
            words += 1
        else:
            pass
        count += 1
    print('Number of words:', str(words) + '\n')
    return words
    

def get_num_of_non_WS_characters(user_input):
    count = 0
    for i in user_input:
        if i == ' ':
            pass
        else:
            count += 1
    print('Number of non-whitespace characters:', str(count) + '\n')
    return count
    

def menu_prompt():
    print_menu()
    selection = input('Choose an option:\n')
    while selection != 'q' and selection != 'c' and selection != 'w' and selection != 'f' and selection != 'r' and selection != 's':
        selection = input('Choose an option:\n')
    return selection
    
def execute_menu(selection, user_input):
    if selection == 'q':
        pass
    elif selection == 'c':
        get_num_of_non_WS_characters(user_input)
        execute_menu(menu_prompt(), user_input)
    elif selection == 'w':
        get_num_of_words(user_input)
        execute_menu(menu_prompt(), user_input)
    #elif selection == 'f':
        print_menu()
    #elif selection == 'r':
        #print_menu()
    #elif selection == 's':
        #print_menu()
        
def print_menu():
    print('MENU\nc - Number of non-whitespace characters\nw - Number of words\nf - Fix capitalization\nr - Replace punctuation\ns - Shorten spaces\nq - Quit\n')
    
    
    


if __name__ == '__main__':
    user_input = input('Enter a sample text:\n')
    print()
    print('You entered:', user_input)
    print()
    execute_menu(menu_prompt(), user_input)

我尝试只在 get_num_of_words() 函数之后调用 menu_prompt(),但是虽然它打印了我想要的内容,但我已经知道它实际上不会继续对接收到的输入做任何事情,尽管它也没有给出错误。代码当前的方式,到目前为止打印的内容,格式正确。可能只是你在完成一面后可以用魔方获得的那种心态,你不想撤消你已经完成的工作,但你需要后退一步,向前迈出 2 步。我想,我只是无法摆脱这种犹豫。

Python EOF

评论

0赞 Сергей Кох 12/13/2022
不能走路 - 爬行!

答:

0赞 prasad nijai 12/13/2022 #1

在主函数中添加 while 循环并在 execute_menu() 中添加 return 语句,因为您调用函数的次数与用户给出输入的次数一样多,因此代码给出错误:

def execute_menu(selection, user_input):
if selection == 'q':
    pass
elif selection == 'c':
    get_num_of_non_WS_characters(user_input)
    return
elif selection == 'w':
    get_num_of_words(user_input)
    return
#elif selection == 'f':
    #print_menu()
#elif selection == 'r':
    #print_menu()
#elif selection == 's':
    #print_menu()
return    

if __name__ == '__main__':
    user_input = input('Enter a sample text:\n')
    print()
    print('You entered:', user_input)
    print()
    ch = menu_prompt()
    while ch != 'q':
        execute_menu(ch, user_input)
        ch = menu_prompt()

评论

0赞 Mr.Moffia 12/13/2022
好的,非常感谢!不禁为错过这样的东西而感到有点傻哈哈,但这确实有帮助!