输出一个随机字符串中的数字之和-Python

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输出一个随机字符串中的数字之和-Python相关的知识,希望对你有一定的参考价值。

参考技术A 本文链接1(): https://www.jianshu.com/p/ddcde984b705
本文链接2(CSDN): https://blog.csdn.net/COCO56/article/details/90051016

随机给定的字符串中可能不仅包含数字字符,还包含其他类型的字符,我们现在需要把字符串中的数字全部提取出来,然后再进行求和。如'1asd22',那么先把这个字符串中的1和22提取出来,然后进行求和,得到结果23。

对这类特定数据提取的工作,使用正则表达式很方便。

import re
string = '123rrr1iii56oooo9'

pattern = re.compile('\d+')
results = re.findall(pattern, string)
print(results)
sum = 0
for result in results:
sum += int(result)
print(sum)

用php中的随机数字替换字符串中的奇数位置

【中文标题】用php中的随机数字替换字符串中的奇数位置【英文标题】:Replace odd positions in string with a random digit in php 【发布时间】:2020-12-26 02:33:01 【问题描述】:

我有一个字符串,我只想用随机数字替换奇数位置。

例如,字符串是'123456'。现在我想要的输出是'528496'; 请注意,奇数位的数字 1,3,5 被随机数字 5,8,9 替换。

我知道如何使用 PHP 循环来做到这一点,但想知道是否可以使用正则表达式来完成。

我在网上找到了以下两个相关的解决方案,但仍然无法使其工作。

解决方案 1

echo preg_replace('/(.)./', '$1 ', $str);

解决方案 2

echo preg_replace_callback('/\d/', function() 
    return chr(mt_rand(97, 122));
, $str);

PS:我试图对这些问题发表评论,但由于我的声誉只有 5,所以我无法:(

【问题讨论】:

试试preg_replace_callback('/.(.)/s', function($m) return chr(mt_rand(48, 57)) . $m[1]; , '123456');,见3v4l.org/8dDmL 您特别要求使用正则表达式,但也可以使用 str_split、array_map、如果奇数替换取模,重新组合在一起3v4l.org/h8U0A 不用chr(),可以用mt_rand(0, 9)。从 PHP 7.4 开始,您甚至可以编写:echo preg_replace_callback('/.(.)/', fn($m) => rand(0,9) . $m[1], '123456'); 我请求你们三个停止发布答案,因为在采取任何行动之前,cmets 已被清除,所以我不知道你们是否收到了 ping。请决定是否要将您的评论转移到答案。无论如何,请删除您正在解析的 cmets。 【参考方案1】:

替换奇数索引处的字符

echo preg_replace_callback('/.(.|$)/', function ($matches) 
    return rand(0, 9) . $matches[1];
, $str);

替换偶数索引处的字符

echo preg_replace_callback('/(.)./', function ($matches) 
    return $matches[1] . rand(0, 9);
, $str);

备注

如果您的 PHP 版本低于 7.1,则不应使用 rand(),因为它是一个不能正常工作的坏函数。请改用mt_rand(0, 9)

如果您需要确保随机数的加密安全,请改用random_int(0, 9)。该函数在 PHP 7 中可用。

【讨论】:

谢谢!它工作得很好,但是如果我想替换偶数位置而不是奇数,需要改变什么?【参考方案2】:

您可以在完全不引用匹配字符串的情况下执行替换。只保留必须替换的单个字符。

代码:(PHP7.4 Demo)

替换奇数位置:

echo preg_replace_callback(
         '/^.|.\K./',
         fn() => rand(0,9),
         '1234567'
     );

替换偶数位置:

echo preg_replace_callback(
         '/.\K./',
         fn() => rand(0,9),
         '1234567'
     );

【讨论】:

或者因为我们正在处理一个字节编码的字符:echo preg_replace_callback('~..~', fn($m) => mt_rand(0,9) . $m[0][1], $str);

以上是关于输出一个随机字符串中的数字之和-Python的主要内容,如果未能解决你的问题,请参考以下文章

python 生成10个1~1000内的随机数 十个数字之和小于5000就输出结果

python输出随机的字符或数字

Python练习题

Python 随机生成数字,字符串,用户自动化生成数据

关于python的十一道练习

请问用java语言做一个求由数字组成的字符串中数字之和的简单程序?