मैंने यहां इसके समाधान के लिए चारों ओर देखा है, और हालांकि वे मेरी जरूरतों के अनुरूप लग रहे थे, वे मेरे लिए काम नहीं कर रहे थे। मुझे विशेष रूप से यकीन नहीं है कि क्यों। मैं कोशिश करूँगा और निर्दिष्ट करूँगा कि समस्या क्या है और उम्मीद है कि आप यह निर्दिष्ट करने में सक्षम होंगे कि यह अलग क्यों था।

इसलिए, मैं सिर्फ टिंकर जीयूआई का उपयोग करके एक साधारण उपयोगकर्ता नाम और पासवर्ड लॉग-इन सिस्टम बनाने की कोशिश कर रहा हूं। मैंने बाहरी सीएसवी फ़ाइल में उपयोगकर्ता नाम और पासवर्ड डालकर यह काम करने की कोशिश की है, और फिर मेरा प्रोग्राम होने के बाद, मेरे गेम के दोनों उपयोगकर्ता जो पहले से ही काम कर रहे हैं, ने लॉग-इन करने का प्रयास किया है, मेरी सीएसवी फ़ाइल को लाइन-बाय-लाइन पढ़ें (जिसे "कार्ड गेम के लिए स्वीकृत उपयोगकर्ता" कहा जाता है), जो प्रोग्राम के समान फ़ोल्डर में है, इसलिए आगे कोई निर्देशिका आवश्यक नहीं है। मैंने इसे बनाने की कोशिश की है ताकि उपयोगकर्ता अपना उपयोगकर्ता नाम और पासवर्ड अलग-अलग टिंकर प्रविष्टियों में डाल दे, और फिर उसके नीचे एक बटन दबाए। प्रोग्राम तब जाँचता है कि क्या, उदाहरण के लिए, line[0] == PlayerOneUsername and line[1] == PlayerOnePassword, हालाँकि हर बार जब मैंने यह कोशिश की है, तो यह काम नहीं किया। (मेरा सीमांकक ',' है, किसी को भी आश्चर्य हो रहा है)।

यह जो पढ़ रहा था उसे प्रिंट करने के बाद, मैंने पाया है कि यह हमेशा पहले शब्द के बजाय लाइन का पहला अक्षर देता है, इसलिए निश्चित रूप से यह गलत होता रहता है। मैंने एक उत्तर की खोज की है, जिनमें से कुछ मैं पहले से ही कोशिश कर रहा था, हालांकि हर बार जब मैंने इसे लागू करने का प्रयास किया है, तो वही समस्या हो रही है। (ईजी लाइन.स्प्लिट () ने मेरी समस्या को ठीक नहीं किया है)।

यह एक दूसरे के बगल में लाइन और लाइन [0] की तुलना करने पर आउटपुट है। (बाद में रंगों और शीर्षक पर ध्यान न दें, जो कि खेल से संबंधित हैं)।

यहां मेरे खिलाड़ी के दो मूल्यांकन का हिस्सा है जो आपके द्वारा बटन दबाने पर ट्रिगर होता है (यह कमोबेश मेरे खिलाड़ी के एक मूल्यांकन के समान है):

Success["text"] = ""
if not PasswordLoginInputTwo.get() or not UsernameLoginInputTwo.get():
     Success["text"] = "One or more of your password/username entries are empty. Please try again."
else:
    csvfile = open ("Accepted Users for Card Game.csv", "r")
    Csvreader = csv.reader(csvfile, delimiter = ',')
    Success["text"] = "Player Two password/username combination has been read."
    for line in csvfile:
        print(line[0])
        if line:
            print(line)
            print(line[0])
            if line.split(None, 1)[0] == UsernameLoginInputTwo.get() and line.split(None, 1)[1] == PasswordLoginInputTwo.get():
                PlayerTwoSuccess = True
                PlayerTwoUsername = UsernameLoginInputTwo.get()
                PlayerTwoColour = line[2]
                PlayerTwoAntithesis = line[3]
                PlayerTwoVictorSound = "Victory - "+line[4]+".wav"
    PlayerTwoAttempts = PlayerTwoAttempts + 1

बाहरी सीएसवी फ़ाइल को एक साधारण लाइन प्रारूप में व्यवस्थित किया गया है, जैसे:

PlayerOne,Password1,Purple,Yellow,Donkey Kong
PlayerTwo,Password2,Red,Green,Final Fantasy
PlayerThree,Password3,Pink,Purple,Worms
PlayerFour,Password4,Black,White,Team Fortress 2

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

तो मूल रूप से, दोहराने के लिए, मैं इस धारणा के तहत हूं कि लाइन [0] मेरी 'लाइन' में पहला 'शब्द' होना चाहिए, इस मामले में उदाहरण के लिए "प्लेयरऑन"। इसके बजाय, यह मुझे पहला चरित्र दे रहा है, इस मामले में, 'पी'। मैं इस मुद्दे को कैसे सुधार सकता हूं? इसके उत्पन्न होने का कारण क्या है? मैं इसे कैसे बना सकता हूं ताकि यह पहले वर्ण के बजाय पहला शब्द हो? शुक्रिया!

0
Neveven 7 अक्टूबर 2018, 21:32

1 उत्तर

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

आप पुनरावृति कर रहे हैं:

for line in csvfile:

जो पहली पंक्ति का प्रतिनिधित्व करने वाली स्ट्रिंग लौटाएगा। आपको पाठक वस्तु पर लूप करने की आवश्यकता है:

for line in Csvreader:

फिर, रेखा एक स्ट्रिंग्स का टुपल डिलीमीटर पर विभाजित होगी।

0
juanpa.arrivillaga 7 अक्टूबर 2018, 18:34