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

替换()方法不会删除空白,并且循环不会继续

唐高卓
2023-03-14

基本上,我使用了。替换()来删除开头或结尾的空格,以防用户用空格写“是”。我尝试使用bar(),但也没有发生任何情况。我假设这个方法不起作用,因为当我在输入中键入一个行间距的答案时,它会输出“无效的答案,再试一次!”而我希望它输出随机数。此外,当我写了一个无效的答案,它问我是否愿意掷骰子,我说愿意,什么都没发生。我认为它会给我一个数字,因为有了虽然循环,因为答案是肯定的。

这是我的代码:

from random import randrange


answer = (input("Would you like to roll the dice? \n")).capitalize().strip()


while answer == "Yes" or answer =="Y" :
  random_number = randrange(1, 7)
  print("You got number %i!" % random_number)
  answer = (input("Would you like to roll the dice? \n")).capitalize().strip()

if answer == "No" or answer =="n":
  print("Maybe next time!")
else :
  print("Invalid answer, try again!")
  answer = (input("Would you like to roll the dice? \n")).capitalize()

编辑:我注意到它只在结尾删除空白,而不是在开头。

共有3个答案

单于高逸
2023-03-14

删除开头和结尾空白的最简单方法是使用。条带()

    answer = (input("Would you like to roll the dice? \n")).capitalize()
    answer = answer.strip()
许俊贤
2023-03-14

在字符串的末尾有一个换行符,它不是空格,它通过保存下来。更换

使用. rband("\n")来摆脱它,或者更好的是,只需删除.替换并直接使用. band()来摆脱周围的空白空间。

许明朗
2023-03-14

|String.strip([chars])|
|返回删除了前导和尾随|空格的字符串副本。|如果字符是给定的,而不是无,删除字符中的字符。

>>> a=" yes "
>>> a.strip()
'yes'

根据您的评论,我怀疑您的代码在答案中使用了初始空格
尝试将条带和大写组合起来

>>> a = " yes "
>>> a.strip().capitalize()
'Yes'

我怀疑这就是你想要实现的目标:

from random import randrange

while True:
    answer = (input("Would you like to roll the dice? \n")).strip().capitalize()
    if answer == "Yes" or answer =="Y" :
        random_number = randrange(1, 7)
        print("You got number %i!" % random_number)

    elif answer == "No" or answer =="N":
        print("Maybe next time!")
        break
    else :
        print("Invalid answer, try again!")
 类似资料:
  • 问题内容: 我有以下for循环,当我用来删除项目时,然后得到的“秒数”是不确定的。我可以检查它是否未定义,但是我觉得可能有一种更优雅的方法来执行此操作。愿望是简单地删除一个项目并继续进行。 问题答案: 当您执行时,该数组将被重新索引,这意味着删除索引时将跳过索引,并且缓存已过时。 要解决此问题,您可能需要在后面减一,或者简单地反向迭代… 这样,重新索引不会影响迭代中的下一个项目,因为索引仅影响从当

  • hasNext()的定义是“如果此扫描仪的输入中有另一个标记,则返回true。此方法可能会在等待输入扫描时阻塞。扫描仪不会前进超过任何输入。” 当我把 standardInput.hasNext() 放在 for 循环中时,程序会向无穷大运行。但是如果我把它放在 while-loop 中,它不会运行到无穷大。这两个程序之间的区别在哪里,为什么其中一个有效而另一个无效? for循环: while-l

  • 问题内容: 我已经坚持了好几个星期,而且我没有最模糊的想法出了什么问题。我已经很浪费了,因为我已经浪费了很多时间 我使用下面描述的数据模型(MySQL)。我已经通过反向工程(Eclipse / JBoss Tools)创建了hbm.xml和java类(请参见下面的示例)。 当我尝试保存推文,单词或事件时,我可以在日志消息中看到生成了pk值并且正确绑定了参数,但是没有任何内容写入数据库。(请参阅帖子

  • 我对java非常陌生,需要帮助。基本上,我有一个程序,要求用户输入一个数字。当输入该数字时,它会将该数字之前的所有奇数相加。我正在尝试(但失败)做的是,做另一个循环,当提示用户请求一个数字来求奇数之和时,我想让它只在输入奇数时继续,否则它将不断重复询问用户,直到他们输入奇数为止。我知道使用循环可以解决这个问题,但我不知道如何让它工作。 这是我的密码: 提前谢谢!

  • 问题内容: 因此,我一直在为编程类编写抽象作业,但遇到了问题。我现在的目标是能够使用抽象,然后能够使用矩形和椭圆形绘制一个简单的城市,例如矩形建筑物或灯柱上的椭圆形灯。 我在编译时收到的错误是:MyTestApp.Rectangle不是抽象的,并且不会覆盖MyTestApp.Shape中的抽象方法drawEllipse(java.awt.Graphics)。该错误显示在类Shape下方的“矩形扩展

  • 问题内容: 想要从字符串中删除所有新行。 我有这个正则表达式,它可以捕获所有这些正则表达式,问题是我不知道应该使用哪个函数。 应该变成: 问题答案: 您必须注意双换行符,这会导致双倍空格。使用这个非常有效的正则表达式: 多个空格和换行符替换为一个空格。 编辑: 正如其他人指出的那样,此解决方案存在单词之间匹配单个换行符的问题。这个例子中没有,但是可以很容易地看到这种情况如何发生。一种替代方法是执行