
[英]Python3, allowing user input of “ \n ” and “ ' ” characters but replace with “ \\n ” and “ \\' ”
[英]How to store the last n characters of a string to concatenate to the user input in Python?
在 Head First Learn to Code 中有一个简短的练习,涉及创建一个函数来替换文本中的占位符。 如果占位符的结尾是!!!!!! 此代码仅返回最后一个感叹号。 我们如何修改代码,以便当用户提供单词SPAM作为输入代替NOUN!!!, 时,processed_line 将返回SPAM!!!, ?
这是代码:
placeholders = ['NOUN', 'VERB_ING', 'ADJECTIVE', 'VERB']
endings = ['.', ',', ';', ':', '?', '!']
def process_line(line):
global placeholders
global endings
processed_line = ''
words = line.split()
for word in words:
stripped = word.strip(',.;:?!')
if stripped in placeholders:
answer = input(f'Enter a {stripped}:')
processed_line = processed_line + answer
if word[-1] in endings:
processed_line = processed_line + word[-1] + ' '
else:
processed_line = processed_line + ' '
else:
processed_line = processed_line + word + ' '
return processed_line + '\n'
你一开始就去掉了标点符号。 稍后将它们添加回来,它应该可以工作:
placeholders = ['NOUN', 'VERB_ING', 'ADJECTIVE', 'VERB']
endings = ['.', ',', ';', ':', '?', '!']
def process_line(line):
global placeholders
global endings
processed_line = ''
words = line.split()
def keep(string, chars):
return ''.join([i for i in string if i in chars])
for word in words:
stripped = word.strip(',.;:?!')
leftovers = keep(word, ',.;:?!')
if stripped in placeholders:
loc = placeholders.index(stripped)
answer = input(f'Enter a {stripped}:')
processed_line += answer + leftovers # here is what's new
if word[-1] in endings:
processed_line = processed_line + word[-1] + ' '
else:
processed_line = processed_line + ' '
else:
processed_line = processed_line + word + ' '
return processed_line + '\n'
print(process_line('hello, NOUN! I am Joe.'))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.