replace()方法不会删除空格,而while循环不会继续

时间:2018-09-28 16:10:19

标签: python

基本上,我使用.replace()来删除开头或结尾的空格,以防用户写有空格的“是”。我尝试使用strip(),但也没有任何反应。我假设该方法无效,因为当我在输入中键入带有空格的答案时,它会输出“无效答案,请重试!”而我希望它输出随机数。 另外,在我写下无效答案后,它问我是否要掷骰子,我说是,什么也没发生。我认为由于while循环会给我一个数字,因为答案是肯定的。

这是我的代码:

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()

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

4 个答案:

答案 0 :(得分:0)

thr字符串的末尾有一个换行符,它不是空格,并且可以通过.replace保留下来。

使用.rstrip("\n")摆脱它,或者更好的是,只需放下.replace并直接使用.strip()摆脱周围的空白。

答案 1 :(得分:0)

| String.strip([字符])  |
 |返回前导和尾随字符串的副本  |空格已删除。  |如果给定chars而不是None,则改为删除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!")

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

因此您的代码中存在一些错误:

  1. 在while循环中,您忘记进行替换。
  2. 如果答案无效,您将陷入循环,代码将失败。

其他答案无关紧要,尽管使用脱衣舞是更好的做法 在这种情况下。

也不要担心换行符ibug的提及,输入已经可以解决它了: enter image description here