在 Python 中查找和替换字符

问题描述 投票:0回答:3

对于get_letter_from_user函数,在使用while循环进行验证时,不断重复无效的输入;我想确保它是单个字母且小写,并且我想确保它不等于函数的第二个参数。但我不确定我做错了什么。 (以及如果您有技巧,如何在编码中获得自信)

def get_text_from_user(prompt):
    return input(prompt).lower()
    
    
    
    
def get_letter_from_user(prompt, not_allowed):          
    not_allowed = ''
    
    allowed = input(prompt).lower()
    while not allowed == not_allowed or allowed.isalpha() or len(allowed) > 1:
        allowed = str(input('Invalid letter, try again:'))
        
    
    return allowed
    
    
    
    
def main():
    text = get_text_from_user("Enter some text: ")
    ltr1 = get_letter_from_user("Enter a letter: ", '')  
    ltr2 = get_letter_from_user("Enter another letter: ", ltr1)  
    new_text = text.replace(ltr1,ltr2)
    print("The new text is", new_text)
    
    
if __name__ == "__main__":
    main()
python function replace alphabetical isalpha
3个回答
0
投票

功能建议:

def get_letter_from_user(prompt, not_allowed):

    allowed = input(prompt).lower()
    while allowed == not_allowed or len(allowed) > 1:
        print('not_allowed:',not_allowed)
        allowed = str(input('Invalid letter, try again:'))

    return allowed


ltr1 = get_letter_from_user("Enter a letter: ", '')  
ltr2 = get_letter_from_user("Enter another letter: ", ltr1)  

输出示例:

Enter a letter: d
Enter another letter: d
not_allowed: d
Invalid letter, try again:d
not_allowed: d
Invalid letter, try again:a

0
投票

添加另一个小细节,因为你问如何更好地编码:

我永远不会创建一个带有立即更改为空字符串的参数的函数。喜欢:

def get_letter_from_user(prompt, not_allowed):
    not_allowed = ''

而是使用像这样的默认值:

def get_letter_from_user(prompt, not_allowed=''):
    ...

0
投票

要替换字符串中的一个字母或字母序列,您可能需要查看

string.replace()
函数:

text = input('Enter some text: ')
find = input('Enter a letter to replace: ')
replace_with = input(f'Enter a letter to replace \'{find}\' with: ')
replaced = text.replace(find, replace_with)
print('The new text is:', replaced)
© www.soinside.com 2019 - 2024. All rights reserved.