2016-08-19 7 views
7

मैं सोच रहा था कि पाइथन में एक यादृच्छिक पत्र जनरेटर है जो पैरामीटर के रूप में एक सीमा लेता है? उदाहरण के लिए, यदि मैं ए और डी के बीच एक सीमा चाहता था? मुझे पता है कि आप इसे जनरेटर के रूप में उपयोग कर सकते हैं:क्या एक सीमा के साथ एक यादृच्छिक पत्र जनरेटर है?

import random 
import string 

random.choice(string.ascii_letters) 

लेकिन यह आपको इसे एक श्रृंखला प्रदान करने की अनुमति नहीं देता है।

+3

'random.choice ('एबीसीडी')' ??? –

+0

आप 65 और 9 0 के बीच यादृच्छिक संख्या प्राप्त कर सकते हैं और फिर इसे ASCII वर्ण में परिवर्तित कर सकते हैं। – GrizzlyManBear

उत्तर

9

आप string.ascii_letters काट कर सकते हैं:

random.choice(string.ascii_letters[0:4]) 
4

असीसी संख्याओं के साथ प्रतिनिधित्व किया जाता है, इसलिए आप अपनी पसंद की सीमा में यादृच्छिक संख्या बना सकते हैं और फिर उसे चार में डाल सकते हैं।

3

फ़ंक्शन choice एक सामान्य अनुक्रम लेता है।

गैर खाली अनुक्रम seq से एक यादृच्छिक तत्व लौटाएं।

विशेष

random.choice(['A', 'B', 'C', 'D']) 

में आप क्या चाहते हैं नहीं होगा।

आप आसानी से सीमा प्रोग्राम के उत्पन्न कर सकते हैं:

random.choice([chr(c) for c in xrange(ord('A'), ord('D')+1)]) 
3

स्ट्रिंग टुकड़ा करने की क्रिया इस

random.choice(string.ascii_letters[:4]) 

यह बेतरतीब ढंग से चुनते हैं करने के लिए अपने समाधान होगा वर्णमाला के पहले 4 अक्षरों में से एक। जाहिर है 4 कोई मूल्य हो सकता है।

1

आप तुच्छता से ऐसी बात को परिभाषित कर सकते हैं:

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')) 
2
>>> random.choice('ABCD') 
'C' 

या अगर यह एक बड़ी रेंज है ताकि आप उन्हें सब बाहर टाइप करने के लिए नहीं करना चाहती है :

>>> chr(random.randint(ord('I'), ord('Q'))) 
'O' 
1

अपने मूल वा एक यादृच्छिक पत्र प्राप्त करने के लिए आप बस इस तरह के एक समारोह कर सकते हैं।

def getLetter(start, stop): 
    letter = random.choice(string.ascii_letters) 
    while letter < start and letter > stop: 
     letter = random.choice(string.ascii_letters) 
    return letter 

इस तरह getLetter('a', 'd')

1

देखा यह कॉलिंग और कलन विधि मैं सिर्फ लिखा उपयोगी हो सकता है सोचा। यह एन लंबाई की यादृच्छिक अपरकेस एएससीआई स्ट्रिंग उत्पन्न करता है:

from random import randint 

def generate_random_nlength_string(n): 
    prandstr = [chr(randint(65,90)) for _ in range(n)] 
    return ''.join(prandstr) 
संबंधित मुद्दे