Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 在字符串中查找数字,添加1并替换_Python_String_Digit - Fatal编程技术网

Python 在字符串中查找数字,添加1并替换

Python 在字符串中查找数字,添加1并替换,python,string,digit,Python,String,Digit,我需要编写一个代码,其中一个字符串包含一个数字,然后这个数字递增1,然后在初始字符串输入中打印出来 应该是这样的 >>>addNumber('I slept 3 hours') what number would you like to increment? 3 I slept 4 hours >>>addNumber('I have 366 friends on facebook') what number would you like to increme

我需要编写一个代码,其中一个字符串包含一个数字,然后这个数字递增1,然后在初始字符串输入中打印出来

应该是这样的

>>>addNumber('I slept 3 hours')
what number would you like to increment? 3
I slept 4 hours
>>>addNumber('I have 366 friends on facebook')
what number would you like to increment? 6
I have 377 friends on facebook
到目前为止,我有这个,但我知道这是错误的,老实说,我不知道如何做到这一点

def incrementNumbers(statement):
    number1=(int(input('What number would you like to increment?')))
    number2 = number1 +1
    i=[]
    for numbers in statement:
        if numbers.isdigit():
            i.append(numbers)
            statement.replace(numbers,number2)
你可以在这里用

另一个例子

>>> s = 'I slept 3 hours'
>>> i = raw_input('what number would you like to increment?')
what number would you like to increment?3
>>> re.sub('({})'.format(i),addone,s)
'I slept 4 hours'
你可以像这样定义你的函数

def addNumber(s):
    def addone(obj):
        val = int(obj.group(1))
        return str(val+1)

    i = raw_input('what number would you like to increment?')
    return(re.sub('({})'.format(i),addone,s))
但是,我建议您有一个验证功能

i = raw_input('what number would you like to increment?')
if 0<int(i)<9:
    return(re.sub('({})'.format(i),addone,s))
else:
    return "Number out of range"
i=raw\u输入('您希望增加多少?'))

如果0根据您的要求,数值必须介于0和8之间,则可以使用


代码中可能存在的错误是:

  • 您试图直接用
    字符串中的
    int
    类型数据替换
  • 此外,无论您指定要修改什么,仅检查
    numbers.isdigit()
    将修改所有数字
  • 为使代码正常运行,可能对代码进行的更正:

    def incrementNumbers(statement):
        number1 = int(input('What number would you like to increment?'))
        number2 = number1 +1
        i=[]
        for numbers in statement:
            if numbers.isdigit() and int(numbers) == number1:
                i.append(numbers)
                statement.replace(numbers,str(number2))
    
    您还可以将
    incrementNumbers(语句)
    函数更改为:

    def incrementNumbers(statement):
        number1 = input('What number would you like to increment?')
        number2 = str(int(number1)+1)
        statement = statement.replace(number1,number2)
        return statement
    

    我认为这比在
    循环中使用
    要好。

    如果他们想在
    399
    中增加
    9
    该怎么办?我不认为它会被测试为9,它只显示一个正数字。所以它必须是0-89,既有正的也有单的。是的,但这是一个非常简单的类,所以我假设我们只需要从0到8的数字
    def incrementNumbers(statement):
        number1 = int(input('What number would you like to increment?'))
        number2 = number1 +1
        i=[]
        for numbers in statement:
            if numbers.isdigit() and int(numbers) == number1:
                i.append(numbers)
                statement.replace(numbers,str(number2))
    
    def incrementNumbers(statement):
        number1 = input('What number would you like to increment?')
        number2 = str(int(number1)+1)
        statement = statement.replace(number1,number2)
        return statement