提问人:Mr.Moffia 提问时间:12/13/2022 更新时间:12/13/2022 访问量:87
函数运行时导致 EOF 错误 - 使用 Python
Causing an EOF error when function is run - using Python
问:
我正在为一门大学课程做一个项目,我们需要在功能上实现不同的提示。我不是在寻找我尚未完成的其余代码,只是想弄清楚如何在调用 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 步。我想,我只是无法摆脱这种犹豫。
答:
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
好的,非常感谢!不禁为错过这样的东西而感到有点傻哈哈,但这确实有帮助!
上一个:读取文件时遇到EOF不正确
评论