मान लें कि हमारे पास ए, बी, सी, .. एक्स, वाई, जेड सभी पहले से परिभाषित चर का एक सेट है, प्रत्येक चर क्रमशः 0,1,2, ... 23,24,25 का प्रतिनिधित्व करता है।

जैसे ए = 0, बी = 1

अब मैं कोड लिखना चाहता हूं जो चर के नाम को इनपुट के रूप में लेता है और उन्हें संसाधित करने के बाद उनके मान देता है।

इसे करने के लिए यहां कुछ उदाहरण कोड दिया गया है।

inp1 = input("Enter letter 1->")
inp2 = input("Enter letter 2->")

def connect(inp1,inp2):
    print(str(inp1) + " = " + str(inp2) + "\n")

जिसे मैं वापस करना चाहूंगा

0 = 1

यदि इनपुट ए, बी थे।

वर्तमान में कोड इसके बजाय इस परिणाम का उत्पादन करेगा, क्योंकि इनपुट किया गया डेटा स्ट्रिंग प्रारूप में है:

A = B

इसके आस-पास जाने के लिए मैंने स्ट्रिंग इनपुट से मान प्राप्त करने के लिए एक छोटा सा कार्य किया है:

def get_value(x):
    if x == "A":
        return A
    elif x == "B":
        return B

जैसा कि आप देख सकते हैं, यह बड़ी संख्या में चर के लिए संभव नहीं है क्योंकि मुझे प्रत्येक चर के लिए इन नियमों को लिखना होगा। मैं जानना चाहता हूं कि इस फ़ंक्शन का उपयोग किए बिना मूल्य प्राप्त करने का कोई तरीका है (जो स्ट्रिंग नाम समान होने पर केवल मान देता है) उदा। एक अंतर्निहित फ़ंक्शन का उपयोग करके।

मेरी अंग्रेजी के लिए माफ़ी, Forp

संदर्भ के लिए, मेरा उदाहरण कोड पूरा हो गया है:

A = 0
B = 1
inp1 = "A"
inp2 = "B"

def get_value(char):
    if char == "A":
        return A
    elif char == "B":
        return B

def connect(inp1,inp2):
    part1 = get_value(inp1)
    part2 = get_value(inp2)
    print(str(part1) + " = " + str(part2) + "\n")

connect(inp1,inp2)
0
Forp 16 सितंबर 2020, 14:01

3 जवाब

सबसे बढ़िया उत्तर

आप चर नाम से मूल्य प्राप्त करने के लिए eval(inp1) का उपयोग कर सकते हैं, लेकिन यह बहुत सुरक्षित नहीं है। हालांकि, अगर यह एक पालतू परियोजना है, तो आगे बढ़ें। आप चर का मान locals() या globals() से भी प्राप्त कर सकते हैं जो दोनों dicts हैं।

0
go2nirvana 16 सितंबर 2020, 14:06

ऑर्ड () फ़ंक्शन आधार 10 में निर्दिष्ट वर्ण के यूनिकोड कोड का प्रतिनिधित्व करने वाली संख्या देता है।

def connect(inp1,inp2):
part1 = ord(inp1) - 65
part2 = ord(inp2) - 65
print(str(part1) + " = " + str(part2) + "\n")

def main():
    inp1 = input("Enter letter 1->")
    inp2 = input("Enter letter 2->")
    connect(inp1, inp2)

main()

65 की कटौती का कारण यह है कि आपने अपने बड़े अक्षर A को 0 के रूप में, B को 1 के रूप में परिभाषित किया है और इसी तरह 'A' का ASCII मान 65 है।

संपादित करें:

यदि आप यह भी सुनिश्चित करना चाहते हैं कि छोटे अक्षरों को बड़े अक्षरों में परिवर्तित किया जाए, तो आप .upper() फ़ंक्शन का उपयोग कर सकते हैं

inp1 = input("Enter letter 1->").upper()
inp2 = input("Enter letter 2->").upper()
0
Kenneth 16 सितंबर 2020, 14:11

आप एक शब्दकोश बना सकते हैं। मुझे नहीं पता कि आपको इस विशिष्ट अभ्यास के लिए अनुमति दी गई है, लेकिन मुझे लगता है कि यह सबसे आसान तरीका होगा। यह कुछ इस तरह होगा:

variables = {'A':0, 'B':1, 'C':2}
inp1 = input('Enter letter: ')
inp2 = input('Enter letter: ')

def connect(inp1,inp2):
    print(str(variables[inp1]) + " = " + str(variables[inp2]) + "\n")
    
connect(inp1, inp2)
0
Samuel 17 सितंबर 2020, 06:06