簡體   English   中英

如何生成分配給隨機數的隨機字母列表

[英]How to generate a list of random letters assigned to random numbers

我需要創建一個從隨機數生成的隨機字符列表。 一個列表需要是從隨機數生成的字母,而另一個列表將獲取已經在第一個列表中的字母。 我已經看到了使用ascii的導入字符串方法,但是我不完全理解。 到目前為止,我已經使用了導入隨機方法,並且能夠生成隨機數,但是我覺得我的代碼太長了,應該有一種更簡單的方法。 每次生成一個隨機數時,程序都應將其轉換為字母並添加到列表(稱為uniqueList)中,前提是該列表中不存在該數字。 一旦列表包含15個字符,請停止添加數字。

這是到目前為止的代碼示例:

uniqueList = []
excludedList = []
count = 0


while (len(uniqueList)<15):

    randomNumber = random.randint(*random.choice([(65,90), (97,122)]))
    print(randomNumber)

    if(randomNumber == 65):
        letter = 'A'
    if(randomNumber == 66):
        letter = 'B'
    if(randomNumber == 67):
        letter = 'C'
    if(randomNumber == 68):
        letter = 'D'
    if(randomNumber == 69):
        letter = 'E'
    if(randomNumber == 70):

你可以告訴代碼很長,所以我知道必須有一個較短的方法

如果要在列表中包含15個唯一字母,可以執行以下操作:

import random
import string

letters = [i for i in string.ascii_lowercase]
random_list = random.sample(letters, 15)

print random_list

這將返回以下內容:

['m', 's', 'r', 'f', 'x', 'l', 'e', 't', 'd', 'n', 'w', 'u', 'q', 'h', 'i']

如果只需要一個隨機letter ,則可以使用random.choice()簡化邏輯:

import string
import random
my_char = string.letters
random.choice(my_char)
# returns 'z'

其中string.letters將返回所有字母的字符串,即'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'


以下是根據您的代碼邏輯(使用帶有隨機數的random.choice()修改的代碼,如下所示:

import string
import random
my_char = string.letters
# Value returned by string.letters:
# 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

randomNumber = random.randint(*random.choice([(65,90), (97,122)]))
if randomNumber >=65 and randomNumber <=90:
   print my_char[randomNumber-65]
elif randomNumber >=97 and randomNumber <=122:
   print my_char[randomNumber-97+26]

由於C#知道您可以使用的unicode值

letter=(char)randomNumber;  

盡管根據使用情況在97到122之間隨機分配一個數字會隨機將一個小寫字母隨機化。 如果您想隨機引用一個大寫字母,請在unicode表中查看大寫unicode值。 http://unicode-table.com/en/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM