[英]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.