当前位置: 首页 > 知识库问答 >
问题:

其他语句导致基本单词计数程序中的无限循环?

周阳成
2023-03-14

我正在尝试创建一个基本的单词/字符计数程序来娱乐。我试图在不检查我的笔记或任何东西的情况下做到这一点,我是一个相当新的自学成才的程序员。

我有一个while循环,其中包含一个if-else链。else语句用于检查无效输入,因为我只希望用户输入能够等于“字符”或“单词”。我希望它打印出输入无效,然后返回到while循环的开头。

但是,每当使用 else 语句时,它都会导致无限打印循环,并且不会返回到我的 while 循环的开头。

(对我的代码的一般批评也受到赞赏!

我尝试过使用:继续,中断(我不想让它中断,因为我想回到我的time循环的开始),以及其他一些东西,比如将我的标志设置为False,然后再次返回True。

import time

wordcounter_active = True

char_or_words = input("Would you like to count characters or words?" + 
" \nEnter 'characters' or 'words': " );

while wordcounter_active == True:
  #count characters or quit
  if char_or_words.lower() == ('characters'):
    count_char = input("\nEnter something to count it's characters: " + 
    "\nYou can also type 'quit' to exit the program. ");

    if count_char.lower() == ('quit'):
      print("Quitting...");
      wordcounter_active = False;
    else:
      char_input_len = len(count_char);
      print("\nThis input contains " + str(char_input_len) + " characters.");

  #count words or quit
  elif char_or_words.lower() == ('words'):
    count_word = input("\nEnter something to count it's words: " + 
    "\nYou can also type 'quit' to exit the program. ");

    if count_word.lower() == ('quit'):
      print("Quitting...");
      wordcounter_active = False;
    else:
      word_input_len = len(count_word.split())
      print("\nThis input contains " + str(word_input_len) + " words.");

  #invalid input
  else:
    print("Invalid input.");
    continue

共有2个答案

钱安和
2023-03-14

在两个'else'语句中,您没有将wordcounter_active变量设置为false,这会导致无限循环。

在每个其他条件下的print语句后面放一行,设置wordcounter_active=False

洪通
2023-03-14

如果我正确理解了这个问题,解决办法有两个:

第一个是这样的:对于每个循环,程序都要求您输入

import time

wordcounter_active = True

while wordcounter_active == True:
  char_or_words = input("Would you like to count characters or words?" + 
  " \nEnter 'characters' or 'words': " );

  #count characters or quit
  if char_or_words.lower() == ('characters'):
    count_char = input("\nEnter something to count it's characters: " + 
    "\nYou can also type 'quit' to exit the program. ");

    if count_char.lower() == ('quit'):
      print("Quitting...");
      wordcounter_active = False;
    else:
      char_input_len = len(count_char);
      print("\nThis input contains " + str(char_input_len) + " characters.");

  #count words or quit
  elif char_or_words.lower() == ('words'):
    count_word = input("\nEnter something to count it's words: " + 
    "\nYou can also type 'quit' to exit the program. ");

    if count_word.lower() == ('quit'):
      print("Quitting...");
      wordcounter_active = False;
    else:
      word_input_len = len(count_word.split())
      print("\nThis input contains " + str(word_input_len) + " words.");

  #invalid input
  else:
    print("Invalid input.");
    continue

第二个是这样的:在第一个循环结束时中断代码

else:
    print("Invalid input.");
    break
 类似资料:
  • 我一直在研究GNU的g编译器编译的汇编,它看起来像一个无限循环(g -S file.c -o的部分输出): 除了最后一条jmp指令之外,所有这些指令都是movq或计算指令,但这只是让我们回到.L3。这是以下代码的主体: 它是如何退出循环的?看起来它只是减少了i(subq$1,-8(%rbp)),并在没有比较的情况下重新启动。

  • 我的期望: 如果用户输入的Int不在正确的范围内,程序将给他另一次机会,直到用户给出正确的类型。 所以,我需要一个块。但我有一个无限循环。 我的代码: 我读到: 重置. nextLine()扫描仪 使用扫描仪。扫描仪后面的nextLine()。nextInt() nextInt()的扫描仪错误 扫描仪在使用next()或nextFoo()后跳过nextLine()? 如何使用java.util.扫

  • 我指的是学习 C 的 K 和 R 书;它是关于在字数统计程序中使用 EOF 的 while 循环,书中给出的程序运行良好,但我想知道它如何在一次输入后停止接受输入并给出带有行、单词、 请帮助我理解这个程序中到底发生了什么来打破循环。 附加代码和输出 -

  • 我对react钩子和效果有点陌生,在使用useEffect时遇到了问题 上面的代码是我构建的useEffect,用于使用axios获取数据库中的所有数据,并且我将所有数据放在一个称为reports的状态中。 但是当我console.log报告时,它会导致无限循环。我不知道为什么? 让我给你看一个我做的简单动作。 我正在做一个按钮,当它被点击时,报告的状态(按id)将被更新。 这是该州报告结构的样本

  • 我在使用useEffect时搜索了很多关于无限循环的帖子,但仍然没有找到答案 在useEffect中,我试图调用get accounts api,当然,我放置了一个空数组,因为我只希望它在渲染后运行一次。但目前我喜欢添加“addAccount”功能。因此,如果我按下add按钮,它就会发送一个post请求。这里是一个问题,我想检查值是否已更改,因此我将值放入第二个参数,即空数组,它会导致无限循环。但

  • 我需要制作一个程序,通过用户的输入来计算单词、句子和字母的数量。在我给出的输入是多行的之前,这个程序工作得很好。如果输入长度超过终端窗口中可容纳的文本长度,程序将开始忽略所有句号/问号/感叹号。我不知道为什么,我需要一些帮助。如果文本可以放在终端窗口的一行中,则不会发生这种情况。我还打印了程序读取的每个字符,但这也忽略了所有的句号/问号/感叹号。这些字符都不会被打印出来。为了澄清,一个句子只是句号