【问题标题】:Randomize characters in loop [duplicate]在循环中随机化字符[重复]
【发布时间】:2021-09-17 07:44:25
【问题描述】:

我想随机化我的 for 循环中的答案。我当前的代码只打印:AAA、BBB、CCC。

while True:
    for i in range(65,91):
        answer = chr(i) + chr(i) + chr(i)
        print(answer)

如何随机返回每一个可能的组合,如 AXY、BMK 等。

随机模块可以做到这一点还是我需要使用其他东西?

【问题讨论】:

  • 你好!输入答案 = chr(i) + chr(i + 1) + chr(i +2)。希望我能帮上忙,编码愉快!
  • 您的答案有效,但是由于 for 循环,由于 65,91 范围,它仅返回项目 26 次。我该如何解决?

标签: python for-loop


【解决方案1】:

试试这个:

import string
import random
char_big = string.ascii_uppercase

while True:
    print(''.join(random.choice(char_big) for _ in range(3)))

感谢@JiříBaum,如果这对您防止攻击很重要,您可以使用SystemRandom from secrets,如下所示:

import string
import secrets
char_big = string.ascii_uppercase

while True:
    print(''.join(secrets.choice(char_big) for _ in range(3)))

或者:

import string
import secrets
char_big = string.ascii_uppercase

while True:
    print(
        ''.join(char_big[secrets.SystemRandom().randrange(0, 26)] \
                for _ in range(3)
               )
    )

【讨论】:

  • 如果可能涉及对手,记得使用secrets 而不是random?函数名是一样的...
  • @JiříBaum 非常感谢,你真好,今天向你学习。编辑答案
  • 你可以使用secrets.choice();那么它与使用random的代码相同
  • @JiříBaum 再次感谢,编辑答案
猜你喜欢
  • 2014-01-19
  • 2012-07-24
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多