パラメータとして範囲を取るランダムな文字ジェネレータがPythonにあるのですか? たとえば、AとDの間の範囲を指定したいとしたら?範囲にランダムな文字ジェネレータがありますか?
import random
import string
random.choice(string.ascii_letters)
しかし、あなたはそれを範囲として指定することはできません。
パラメータとして範囲を取るランダムな文字ジェネレータがPythonにあるのですか? たとえば、AとDの間の範囲を指定したいとしたら?範囲にランダムな文字ジェネレータがありますか?
import random
import string
random.choice(string.ascii_letters)
しかし、あなたはそれを範囲として指定することはできません。
あなたはstring.ascii_letters
をスライスすることができます
random.choice(string.ascii_letters[0:4])
Asciiは数字で表されるので、好きな範囲の数字をランダムにしてからcharにキャストすることができます。
機能choice
は、一般的な配列をとります。
空でないシーケンスseqからランダム要素を返します。特定の
random.choice(['A', 'B', 'C', 'D'])
で
は、あなたがやりたいだろう。
あなたは簡単にプログラム的範囲を生成することができます。
random.choice([chr(c) for c in xrange(ord('A'), ord('D')+1)])
文字列のスライシングこれは、ランダムに選択することになり、この
random.choice(string.ascii_letters[:4])
に私の解決策になりますアルファベットの最初の4文字の1つ。明らかに4は任意の値である可能性があります。
あなたは自明のようなものを定義することができます。以上により
def letters_in_range(start_letter, end_letter):
start_index = string.ascii_letters.find(start_letter)
end_index = string.ascii_letters.find(end_letter)
assert start_index != -1
assert end_index != -1
assert start_letter < end_letter
return string.ascii_letters[start_index:end_index]
:
random.choice(letters_in_range('A', 'D'))
>>> random.choice('ABCD')
'C'
それともあなたがそれらすべてを入力したくないので、それはより広い範囲のif :
>>> chr(random.randint(ord('I'), ord('Q')))
'O'
オリジナルのwa無作為な手紙を手に入れたら、単純にそのような機能を作ることができます。 getLetter('a', 'd')
のようにそれを呼び出す
def getLetter(start, stop):
letter = random.choice(string.ascii_letters)
while letter < start and letter > stop:
letter = random.choice(string.ascii_letters)
return letter
はこれを見て、私はちょうど書いたアルゴリズムは役に立ちかもしれないと思いました。これにより、N長のランダムな大文字のASCII文字列が生成されます。
from random import randint
def generate_random_nlength_string(n):
prandstr = [chr(randint(65,90)) for _ in range(n)]
return ''.join(prandstr)
'random.choice( 'ABCD')' ??? –
65から90までの乱数を得て、それをASCII文字に変換することができます。 – GrizzlyManBear