您似乎想要删除所有单位数,其中“单位数”可能包含 servo.duty_u16(1350)
之类的内容。您可以根据字符串是否以 postgres=# show maintenance_work_mem ;
maintenance_work_mem
----------------------
20MB
(1 row)
postgres=# vacuum analyze mdm_context;
VACUUM
postgres=# show shared_buffers;
shared_buffers
----------------
128MB
(1 row)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
62246 postgres 20 0 422892 165996 139068 R 57.1 15.7 25:06.34 postgres: postgres postgres [local] VACUUM
postgres=# show default_statistics_target;
default_statistics_target
---------------------------
100
(1 row)
postgres=# set default_statistics_target=3000;
SET
postgres=# vacuum analyze mdm_context;
VACUUM
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
62246 postgres 20 0 876132 474384 2976 R 62.9 47.6 25:11.41 postgres: postgres postgres [local] VACUUM
开头,而不是从字符串中获取第一个字符,而是获取一个或两个字符的子字符串。您可以利用布尔值的行为类似于 "-5"
或 "-"
的事实,具体取决于值来简化事情:
1
这将只为 0
产生一个 def removeOddDigits(inString):
if inString == "":
return inString
s_length = inString.startswith('-') + 1
n = int(inString[0: s_length])
if n % 2 == 0:
return str(n) + removeOddDigits(inString[s_length:])
else:
return removeOddDigits(inString[s_length:])
removeOddDigits("1-234567-89")
# '-246-8'
,这看起来是正确的,但很容易调整。
,
如果我理解正确的话,您是否试图保留所有非数字,包括 -
,除非它位于奇数前面?
您可以添加另一个 if 语句,检查下一个字符是否是数字,如果不是,如果它是 -
后跟一个数字,您将检查它是否是奇数,就像你以前做过。
我更改了您的代码来执行此操作,因此例如 abc123-1-2-3
将导致 abc2-2
。
def remove_odd_digits(in_string):
# base case
if in_string == "":
return in_string
else:
# check if the next character is a number or not
if in_string[0].isdecimal():
# if it's an even number keep it
if int(in_string[0]) % 2 == 0:
return in_string[0] + remove_odd_digits(in_string[1:])
else:
# if it's an odd number skip it
return remove_odd_digits(in_string[1:])
# check if the next character is a - followed by a number
elif (len(in_string) > 1 and in_string[0] == "-"
and in_string[1].isdecimal()):
# if it's an even number keep it
if int(in_string[1]) % 2 == 0:
return in_string[:2] + remove_odd_digits(in_string[2:])
else:
# if it's an odd number skip it
return remove_odd_digits(in_string[2:])
# if the next character is not a number keep it
else:
return in_string[0] + remove_odd_digits(in_string[1:])
print(remove_odd_digits(input("Enter String:")))
另请注意,在 Python 中,您通常不会使用混合大小写的函数名和变量名,就像在您的示例中一样,而是使用带下划线的小写。所以 removeOddDigits
将是 remove_odd_digits
。
您可以在 Style Guide for Python Code
中找到更多相关信息
函数名称应为小写,单词之间用下划线分隔以提高可读性。
变量名遵循与函数名相同的约定。
混合大小写仅在已经成为流行风格的上下文中才被允许(例如 threading.py),以保持向后兼容性。
本文链接:https://www.f2er.com/3601.html