मुझे कोड के साथ शुरुआत करने दें और लक्ष्य की व्याख्या करें और मुझे क्या मिल रहा है।

temp1 = ['3.8', 'Weiss, Earl', '139 RATINGS', '2.3', 'Jeppson, Catherine', '114 RATINGS', '3.3', 'Kiani-Aslani, Rajabali', '88 RATINGS', '2.6', 'Lundblad, Heidemarie', '82 RATINGS', '2.4', 'Stone, Ronald', '75 RATINGS', '3.7', 'Vedd, Rishma', '66 RATINGS', '3.3', 'Foster, Robert', '60 RATINGS', '4.9', 'Basmadzhyan, Babken', '59 RATINGS', '4.3', 'Grodsky, Marilyn', '57 RATINGS', '2.4', 'Dorsey, Norris', '53 RATINGS', '2.6', 'Zvinakis, Kristina', '51 RATINGS', '3.2', 'MacKlin, James', '50 RATINGS', '2.8', 'Liu, David', '48 RATINGS', '3.2', 'Doron, Michael', '48 RATINGS', '2.1', 'Rogoff, Donald', '45 RATINGS', '3.1', 'Sangeladji, Mohammad', '43 RATINGS', '4.0', 'Fountaine, Howard', '42 RATINGS', '4.6', 'Stout, Gary', '41 RATINGS', '3.4', 'Gray, Glen', '34 RATINGS', '3.0', 'Wilson, Barbara', '31 RATINGS', '4.0', 'Yoon, Sung-Wook', '31 RATINGS', '4.5', 'Her, Young-Won', '31 RATINGS', '3.0', 'Kiddoo, Robert', '30 RATINGS', '3.0', 'Chiu, J', '27 RATINGS', '3.3', 'Barker, Robert', '25 RATINGS', '3.7', 'Qureshi, Mahmood', '23 RATINGS', '3.7', 'Primes, David', '22 RATINGS', '2.6', 'Chen, Raymond', '20 RATINGS', '3.3', 'Jones, Christopher', '20 RATINGS', '3.2', 'Zhan, Jun', '20 RATINGS', '4.6', 'Bell, Janice', '15 RATINGS', '3.8', 'Alhashim, Dhia D', '12 RATINGS', '2.9', 'Ansari, Shahid', '11 RATINGS', '4.5', 'Rousselet, Robin (rob)', '9 RATINGS', '2.4', 'Lucero, Terrence', '8 RATINGS', '1.0', 'Perez, Marlene', '7 RATINGS', '1.3', 'Crespo, Patricia', '7 RATINGS', '4.8', 'Knight, Ridgeway', '7 RATINGS', '2.5', 'Julius, Ed', '6 RATINGS', '2.9', 'Reinstein, Todd', '6 RATINGS']

तो मेरा लक्ष्य इस विशाल सूची को 3 अलग-अलग श्रेणीबद्ध सूचियों में क्रमबद्ध करना है,

प्रोफेसर के नाम, प्रोफेसर की रेटिंग और रेटिंग की मात्रा

मैंने निम्नलिखित के साथ निम्नलिखित फॉर-लूप विकसित किया है यदि कथन, और इसके साथ खेलने की कोशिश के रूप में कम से कम एक काम नहीं करता है, तो मैं आपको निम्नलिखित कोड में दिखाता हूं

counter = 1
for index in temp1:
    if counter % 1 == 0:
        pro_rating.append(index)
    if counter % 2 == 0:
        pro_name.append(index)
    if counter % 3 == 0:
        pro_amount_rating.append(index)
        counter = 0
    counter += 1

print("All Professor ratings: ", pro_rating)    
print("All professor names: ", pro_name)
print("Amount of times professor rated: ", pro_amount_rating)

अब नाम (pro_names) और रेटिंग की मात्रा (pro_amount_rating) जोड़ते समय सब कुछ बहुत अच्छी तरह से काम करता है, लेकिन pro_rating हमेशा पूरी सूची लिखता है।

मैं पूरी तरह से समझता हूं कि ऐसा क्यों हो रहा है, ऐसा इसलिए है क्योंकि मैं अपने काउंटर को 3 हिट करने के बाद रीसेट कर रहा हूं, और मेरा काउंटर बहुत अंत में 1 जोड़ता है, जिससे पहला कथन हमेशा सत्य होता है।

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

अगर किसी के पास कोई विचार है तो मैं इसकी सराहना करता हूं!

आउटपुट:

All Professor ratings:  ['3.8', 'Weiss, Earl', '139 RATINGS', '2.3', 'Jeppson, Catherine', '114 RATINGS', '3.3', 'Kiani-Aslani, Rajabali', '88 RATINGS', '2.6', 'Lundblad, Heidemarie', '82 RATINGS', '2.4', 'Stone, Ronald', '75 RATINGS', '3.7', 'Vedd, Rishma', '66 RATINGS', '3.3', 'Foster, Robert', '60 RATINGS', '4.9', 'Basmadzhyan, Babken', '59 RATINGS', '4.3', 'Grodsky, Marilyn', '57 RATINGS', '2.4', 'Dorsey, Norris', '53 RATINGS', '2.6', 'Zvinakis, Kristina', '51 RATINGS', '3.2', 'MacKlin, James', '50 RATINGS', '2.8', 'Liu, David', '48 RATINGS', '3.2', 'Doron, Michael', '48 RATINGS', '2.1', 'Rogoff, Donald', '45 RATINGS', '3.1', 'Sangeladji, Mohammad', '43 RATINGS', '4.0', 'Fountaine, Howard', '42 RATINGS', '4.6', 'Stout, Gary', '41 RATINGS', '3.4', 'Gray, Glen', '34 RATINGS', '3.0', 'Wilson, Barbara', '31 RATINGS', '4.0', 'Yoon, Sung-Wook', '31 RATINGS', '4.5', 'Her, Young-Won', '31 RATINGS', '3.0', 'Kiddoo, Robert', '30 RATINGS', '3.0', 'Chiu, J', '27 RATINGS', '3.3', 'Barker, Robert', '25 RATINGS', '3.7', 'Qureshi, Mahmood', '23 RATINGS', '3.7', 'Primes, David', '22 RATINGS', '2.6', 'Chen, Raymond', '20 RATINGS', '3.3', 'Jones, Christopher', '20 RATINGS', '3.2', 'Zhan, Jun', '20 RATINGS', '4.6', 'Bell, Janice', '15 RATINGS', '3.8', 'Alhashim, Dhia D', '12 RATINGS', '2.9', 'Ansari, Shahid', '11 RATINGS', '4.5', 'Rousselet, Robin (rob)', '9 RATINGS', '2.4', 'Lucero, Terrence', '8 RATINGS', '1.0', 'Perez, Marlene', '7 RATINGS', '1.3', 'Crespo, Patricia', '7 RATINGS', '4.8', 'Knight, Ridgeway', '7 RATINGS', '2.5', 'Julius, Ed', '6 RATINGS', '2.9', 'Reinstein, Todd', '6 RATINGS']
All professor names:  ['Weiss, Earl', 'Jeppson, Catherine', 'Kiani-Aslani, Rajabali', 'Lundblad, Heidemarie', 'Stone, Ronald', 'Vedd, Rishma', 'Foster, Robert', 'Basmadzhyan, Babken', 'Grodsky, Marilyn', 'Dorsey, Norris', 'Zvinakis, Kristina', 'MacKlin, James', 'Liu, David', 'Doron, Michael', 'Rogoff, Donald', 'Sangeladji, Mohammad', 'Fountaine, Howard', 'Stout, Gary', 'Gray, Glen', 'Wilson, Barbara', 'Yoon, Sung-Wook', 'Her, Young-Won', 'Kiddoo, Robert', 'Chiu, J', 'Barker, Robert', 'Qureshi, Mahmood', 'Primes, David', 'Chen, Raymond', 'Jones, Christopher', 'Zhan, Jun', 'Bell, Janice', 'Alhashim, Dhia D', 'Ansari, Shahid', 'Rousselet, Robin (rob)', 'Lucero, Terrence', 'Perez, Marlene', 'Crespo, Patricia', 'Knight, Ridgeway', 'Julius, Ed', 'Reinstein, Todd']
Amount of times professor rated:  ['139 RATINGS', '114 RATINGS', '88 RATINGS', '82 RATINGS', '75 RATINGS', '66 RATINGS', '60 RATINGS', '59 RATINGS', '57 RATINGS', '53 RATINGS', '51 RATINGS', '50 RATINGS', '48 RATINGS', '48 RATINGS', '45 RATINGS', '43 RATINGS', '42 RATINGS', '41 RATINGS', '34 RATINGS', '31 RATINGS', '31 RATINGS', '31 RATINGS', '30 RATINGS', '27 RATINGS', '25 RATINGS', '23 RATINGS', '22 RATINGS', '20 RATINGS', '20 RATINGS', '20 RATINGS', '15 RATINGS', '12 RATINGS', '11 RATINGS', '9 RATINGS', '8 RATINGS', '7 RATINGS', '7 RATINGS', '7 RATINGS', '6 RATINGS', '6 RATINGS']

हल किया गया: समाधान के लिए माइकल धन्यवाद, मैं स्पष्ट रूप से सोच रहा था, एक साधारण काउंटर == 1, 2... का उपयोग करके समस्या को हल किया, फिर से एक मॉड्यूलो धन्यवाद का उपयोग करने के बजाय

1
david yeritsyan 7 सितंबर 2018, 03:18

4 जवाब

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

आप बहुत कम कोड के साथ जो चाहते हैं उसे प्राप्त करने के लिए आप सूची स्लाइसिंग का उपयोग कर सकते हैं।

pro_rating        = temp1[0::3]
pro_name          = temp1[1::3]
pro_amount_rating = temp1[2::3]

यह पहले तत्व को रेटिंग में, दूसरे तत्व को नाम में और तीसरे को राशि में क्रमबद्ध करेगा, प्रत्येक तीसरे तत्व के लिए दोहराएगा।

1
Loocid 7 सितंबर 2018, 03:30

आप बस गणना का उपयोग कर सकते हैं। साथ ही, यदि आप n%i का उपयोग करते हैं, तो आपको काउंटर को 0 पर सेट करने की आवश्यकता नहीं है। उदाहरण के लिए, 3%3 == 6%3 == 9%3 = 0, आदि ...

आप अपनी समस्या के मूल में गलत हैं: काउंटर% 1 == 0 का वास्तव में मतलब है कि काउंटर 1 का गुणक है?

और प्रत्येक संख्या 1 का गुणज है। आप 0 पर रीसेट करके 2 और 3 के साथ समस्या से बचते हैं क्योंकि वे अभाज्य संख्याएँ हैं लेकिन ध्यान रखें कि 6%3 =6%2 = 6%1

0
hcd 7 सितंबर 2018, 05:16

लाइन counter % 1 == 0 को counter % 3 == 0 में बदलना ज्यादा आसान होगा। याद रखें कि आप हर तीसरे तत्व को चाहते हैं इसलिए आप 3 के साथ मापांक करना चाहते हैं और जांच लें कि शेष 0 है।

फिर आप तीसरे if ब्लॉक में काउंटर को रीसेट करना बंद कर सकते हैं और उसे counter % 3 == 2 में बदल सकते हैं। मैं इसे एक अभ्यास के रूप में यह पता लगाने के लिए छोड़ दूँगा कि यदि ब्लॉक होना चाहिए तो बीच में क्या होगा।

1
emschorsch 7 सितंबर 2018, 03:23

आप रेटिंग, प्रोफेसर का नाम, और बाद वाले को जितनी बार रेट किया गया है, उसे संग्रहीत करते हुए एक नेस्टेड सूची बना सकते हैं:

from collections import namedtuple
import re
professor = namedtuple('professor', ['rating', 'name', 'ratings'])
d = ['3.8', 'Weiss, Earl', '139 RATINGS', '2.3', 'Jeppson, Catherine', '114 RATINGS', '3.3', 'Kiani-Aslani, Rajabali', '88 RATINGS', '2.6', 'Lundblad, Heidemarie', '82 RATINGS', '2.4', 'Stone, Ronald', '75 RATINGS', '3.7', 'Vedd, Rishma', '66 RATINGS', '3.3', 'Foster, Robert', '60 RATINGS', '4.9', 'Basmadzhyan, Babken', '59 RATINGS', '4.3', 'Grodsky, Marilyn', '57 RATINGS', '2.4', 'Dorsey, Norris', '53 RATINGS', '2.6', 'Zvinakis, Kristina', '51 RATINGS', '3.2', 'MacKlin, James', '50 RATINGS', '2.8', 'Liu, David', '48 RATINGS', '3.2', 'Doron, Michael', '48 RATINGS', '2.1', 'Rogoff, Donald', '45 RATINGS', '3.1', 'Sangeladji, Mohammad', '43 RATINGS', '4.0', 'Fountaine, Howard', '42 RATINGS', '4.6', 'Stout, Gary', '41 RATINGS', '3.4', 'Gray, Glen', '34 RATINGS', '3.0', 'Wilson, Barbara', '31 RATINGS', '4.0', 'Yoon, Sung-Wook', '31 RATINGS', '4.5', 'Her, Young-Won', '31 RATINGS', '3.0', 'Kiddoo, Robert', '30 RATINGS', '3.0', 'Chiu, J', '27 RATINGS', '3.3', 'Barker, Robert', '25 RATINGS', '3.7', 'Qureshi, Mahmood', '23 RATINGS', '3.7', 'Primes, David', '22 RATINGS', '2.6', 'Chen, Raymond', '20 RATINGS', '3.3', 'Jones, Christopher', '20 RATINGS', '3.2', 'Zhan, Jun', '20 RATINGS', '4.6', 'Bell, Janice', '15 RATINGS', '3.8', 'Alhashim, Dhia D', '12 RATINGS', '2.9', 'Ansari, Shahid', '11 RATINGS', '4.5', 'Rousselet, Robin (rob)', '9 RATINGS', '2.4', 'Lucero, Terrence', '8 RATINGS', '1.0', 'Perez, Marlene', '7 RATINGS', '1.3', 'Crespo, Patricia', '7 RATINGS', '4.8', 'Knight, Ridgeway', '7 RATINGS', '2.5', 'Julius, Ed', '6 RATINGS', '2.9', 'Reinstein, Todd', '6 RATINGS']
grouped_data = [d[i:i+3] for i in range(0, len(d), 3)]
results = [professor(float(a), b, int(re.findall('^\d+', c)[0])) for a, b, c in grouped_data]

आउटपुट:

[professor(rating=3.8, name='Weiss, Earl', ratings=139), professor(rating=2.3, name='Jeppson, Catherine', ratings=114), professor(rating=3.3, name='Kiani-Aslani, Rajabali', ratings=88), professor(rating=2.6, name='Lundblad, Heidemarie', ratings=82), professor(rating=2.4, name='Stone, Ronald', ratings=75), professor(rating=3.7, name='Vedd, Rishma', ratings=66), professor(rating=3.3, name='Foster, Robert', ratings=60), professor(rating=4.9, name='Basmadzhyan, Babken', ratings=59), professor(rating=4.3, name='Grodsky, Marilyn', ratings=57), professor(rating=2.4, name='Dorsey, Norris', ratings=53), professor(rating=2.6, name='Zvinakis, Kristina', ratings=51), professor(rating=3.2, name='MacKlin, James', ratings=50), professor(rating=2.8, name='Liu, David', ratings=48), professor(rating=3.2, name='Doron, Michael', ratings=48), professor(rating=2.1, name='Rogoff, Donald', ratings=45), professor(rating=3.1, name='Sangeladji, Mohammad', ratings=43), professor(rating=4.0, name='Fountaine, Howard', ratings=42), professor(rating=4.6, name='Stout, Gary', ratings=41), professor(rating=3.4, name='Gray, Glen', ratings=34), professor(rating=3.0, name='Wilson, Barbara', ratings=31), professor(rating=4.0, name='Yoon, Sung-Wook', ratings=31), professor(rating=4.5, name='Her, Young-Won', ratings=31), professor(rating=3.0, name='Kiddoo, Robert', ratings=30), professor(rating=3.0, name='Chiu, J', ratings=27), professor(rating=3.3, name='Barker, Robert', ratings=25), professor(rating=3.7, name='Qureshi, Mahmood', ratings=23), professor(rating=3.7, name='Primes, David', ratings=22), professor(rating=2.6, name='Chen, Raymond', ratings=20), professor(rating=3.3, name='Jones, Christopher', ratings=20), professor(rating=3.2, name='Zhan, Jun', ratings=20), professor(rating=4.6, name='Bell, Janice', ratings=15), professor(rating=3.8, name='Alhashim, Dhia D', ratings=12), professor(rating=2.9, name='Ansari, Shahid', ratings=11), professor(rating=4.5, name='Rousselet, Robin (rob)', ratings=9), professor(rating=2.4, name='Lucero, Terrence', ratings=8), professor(rating=1.0, name='Perez, Marlene', ratings=7), professor(rating=1.3, name='Crespo, Patricia', ratings=7), professor(rating=4.8, name='Knight, Ridgeway', ratings=7), professor(rating=2.5, name='Julius, Ed', ratings=6), professor(rating=2.9, name='Reinstein, Todd', ratings=6)]
1
Ajax1234 7 सितंबर 2018, 03:24