基本上,我使用.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()
编辑:我注意到它仅在结尾而不是开头删除空格。
答案 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)
因此您的代码中存在一些错误:
其他答案无关紧要,尽管使用脱衣舞是更好的做法 在这种情况下。
也不要担心换行符ibug的提及,输入已经可以解决它了: