(Noob) मेरे पास एक प्रोग्राम है जो एक सरणी लेता है और कुछ तत्वों को उनकी व्यक्तिगत कार्यक्षमता के आधार पर स्लाइस करता है और फिर arCalc उन पर काम करता है। arSlice से उन सभी मानों को वापस करना व्यवहार्य प्रतीत नहीं होता है क्योंकि तब मुख्य() में फ़ंक्शन कॉल 5 तर्कों की अपेक्षा करता है और मैं ग्लोबल्स घोषित किए बिना इसे पूरा करना चाहता हूं। मैं सोच रहा था कि क्या arSlice में वेरिएबल्स को एक वेरिएबल में सहेजना संभव है ताकि मैं केवल इंटकोड और परिणाम वापस कर सकूं।

यह भी स्पष्ट होना चाहिए: किसी फ़ंक्शन से मान वापस करने से यह नहीं बनता है ताकि अन्य कार्यों के पास उस लौटाए गए मूल्य तक पहुंच हो? मैं getFile में intcodes लौटा रहा हूं लेकिन किसी भी तरह से इसे arSlice में एक्सेस करने में सक्षम हूं?

    def getFile(open_file):

    with open(open_file, 'r') as f:
        intcodes = f.readline().split(',')
        to_int = [int(n) for n in intcodes]
        intcodes = to_int[:]
    intcodes[1] = 12
    intcodes[2] = 2

    return intcodes


    def arSlice(intcodes):

    opcode = intcodes[0::4]        
    first_input = intcodes[1::4]   
    second_input = intcodes[2::4]  
    outputs = intcodes[3::4]
    result = # put the 4 variables above into a single list or array?

    return intcodes, opcode, first_input, second_input, outputs


    def arCalc(intcodes, opcode, first_input, second_input, outputs):


    add_ = 1
    mul_ = 2
    index = 0

    while True:
        for o in opcode:
            if o == add_:
                intcodes[outputs[index]] = (intcodes[first_input[index]] + intcodes[second_input[index]])
                index += 1
            elif o == mul_:
                intcodes[outputs[index]] = (intcodes[first_input[index]] * intcodes[second_input[index]])
                index += 1
            elif o == 99:
                break
        break
    print(intcodes)

    def main():

    myFile = getFile("day2.txt")

    mySlice = arSlice(myFile)

    arCalc(myFile, mySlice)


    if __name__=="__main__":
          main()
0
John Smith 18 पद 2019, 02:40

1 उत्तर

आप बस मूल्यों को एक सूची में जोड़ सकते हैं,

result = [intcodes[0::4], ntcodes[1::4] , intcodes[2::4] , intcodes[3::4]]

बस एक मान वापस करने से यह अन्य क्षेत्रों से सुलभ नहीं हो जाता है। हालांकि, आप उस मान को स्टोर कर सकते हैं और इसे अन्य तरीकों से पास कर सकते हैं। यही कारण है कि आप intcodes को arSlice विधि से एक्सेस कर सकते हैं।

def printValue(_value):
    print(_value)

def getValue():
    return 4

value = getValue()
printValue(value)

1
Nuno Palma 17 पद 2019, 23:52