Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 添加条件_Python - Fatal编程技术网

Python 添加条件

Python 添加条件,python,Python,我很难在函数中添加条件 我想写一个有两个参数的函数,其中输入框要求输入一个他们想要替换的字母,函数将在输入中选择的字母替换为函数中的第二个参数字母。比如说, 替换“我喜欢编码”、“p” “输入您要替换的字母”:o lpve-tp-cpde 到目前为止还不错 def replace(phrase,letter): c = input("Enter a letter you would like to replace") d = ""

我很难在函数中添加条件

我想写一个有两个参数的函数,其中输入框要求输入一个他们想要替换的字母,函数将在输入中选择的字母替换为函数中的第二个参数字母。比如说,

替换“我喜欢编码”、“p”

“输入您要替换的字母”:o

lpve-tp-cpde

到目前为止还不错

def replace(phrase,letter): 
   c = input("Enter a letter you would like to replace")
   d = ""    
   for char in phrase:
    if char == c:
        d += letter       
    else:
        d += char        
   print(d)
但我想增加一个条件,我很难做到这一点。如果输入中输入的字母不在第一个参数短语中,则应打印出字母必须在短语中。并再次要求输入他们想要替换的字母,该字母位于参数短语中给出的短语中

另外,我只想使用枚举。我不希望使用任何内置函数,如append或replace。

要检查字符串my\u字符串中是否有字符“x”,可以使用in运算符:

>>> my_string = 'I love to code'
>>> 'o' in my_string
True
>>> 't' in my_string
True
>>> 'p' in my_string
False
当然,您也可以将该字符存储在变量中:

>>> a = 'p'
>>> a in my_string
False
>>> a = 'o'
>>> a in my_string
True
您可以将原始输入与while True结合使用,如下所示:

$ cat x.py
#!/usr/bin/python

def replace(a,b): 
   while True:
      c = raw_input("Enter a letter you would like to replace:")
      if len(c) != 1 or c not in a:
         print "Invalid input! Try again"
      else:
         break

   d = ""    
   for char in a:
    if char == c:
        d += b        
    else:
        d+= char        
   print(d)


>>> from x import replace
>>> replace('this is a test', 'z')
Enter a letter you would like to replace:1
Invalid input! Try again
Enter a letter you would like to replace:q
Invalid input! Try again
Enter a letter you would like to replace:t
zhis is a zesz

添加默认为false的布尔值,如果找到字母char,则将其设置为true

如果处理完所有字符后布尔值仍然为false,则抛出一个错误

def replace(a,b): 
while True:
    c = input("Enter a letter you would like to replace") 
    d = "" 
    charfound = False
    for char in a: 
        if char == c: 
            charfound = True    
            d += b 
        else: 
            d+= char 
    if charfound:
        print(d)
        break
    else:
        print('Letter must be in phrase!')

如果希望脚本在未找到字符时重新询问用户,则需要将所有代码放在一个永久循环中,即当为True时:并在成功执行时中断它

请使用有意义的变量名。整个代码的读取需要大约5秒的时间;相反,我的大脑不得不回溯三次,然后放弃,因为这不值得。@roippi-lol,我很抱歉。下次我不会犯那个错误。为什么我会收到反对票?因为这个问题的质量很低。这是常见的语言结构,因此它表明您甚至不必费心学习基础知识。使用随意的缩进、无意义的变量名进行格式化,并且没有试图解决问题或描述您遇到的问题,我只想这样做,但我的问题是如何添加一个条件,如果输入的字母不在短语中,那么它应该打印出字母必须在短语中。并重定向另一个输入屏幕,要求输入他们要替换的字母。my_字符串中的a是一个条件。您可以像在代码中使用条件char==c一样使用它。为了重复一些东西,你使用了一个循环。因此,只要不满足条件,您就需要重复向用户请求新输入。原始输入在作者使用输入的python 3中不存在。