क्या कोई ऐसा सॉफ्टवेयर है जो मुझे समय-समय पर मानसिक अंकगणितीय अभ्यास करने देता है?


9

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

मानदंड:

  • यह मुझे अंतराल समय को अनुकूलित करने की अनुमति देनी चाहिए
  • यह उबंटू डेस्कटॉप में एकीकृत होना चाहिए, अर्थात पृष्ठभूमि में छिपा हुआ होना चाहिए और केवल व्यायाम के समय (पॉप-अप) दिखाना चाहिए

2
मुझे संदेह है कि ऐसे सॉफ़्टवेयर मौजूद हैं, लेकिन बहुत आसानी से एक शेल या अजगर स्क्रिप्ट के साथ बनाया जा सकता है। मैं कल कुछ पकाऊंगा, कृपया मुझे याद दिलाएं
सर्गी कोलोडाज़नी

हाँ, bsdgames की अंकगणित और ऐसी है लेकिन आपको समय-समय पर पॉपअप को स्वचालित करना होगा।
mchid

प्रिय @ शेर, मैं आपको अपने खाना पकाने के प्रयोग के बारे में याद दिला रहा हूं। :)
ओरसिरो

1
इसलिए मैंने एक उत्तरोत्तर प्रगति पोस्ट की है, जिसे मैं संपादित करूंगा क्योंकि मैं साथ चलूंगा। कृपया एक नज़र डालें, मुझे बताएं कि आप क्या सोचते हैं, जोड़ने या हटाने के लिए क्या कार्यक्षमता है। अब तक यह एक कंसोल ऐप है, लेकिन यह अंततः एक छोटी पॉपअप विंडो में बदल जाएगा।
सर्गी कोलोडाज़हनी

2
काम करने के लिए एक अच्छा सवाल है!
जैकब व्लिजम

जवाबों:


8

1. सीधा संस्करण

स्क्रिप्ट नीचे यादृच्छिक पर कार्य का उत्पादन करेगा, + , - , × और ÷ । आप एक अधिकतम संख्या निर्धारित कर सकते हैं जिसे स्क्रिप्ट उपयोग कर सकती है, साथ ही असाइनमेंट के बीच समय अंतराल भी।

असाइनमेंट

असाइनमेंट को ज़ेनिटी एंट्री विंडो में प्रस्तुत किया जाता है:

यहां छवि विवरण दर्ज करें

यदि उत्तर गलत है:

यहां छवि विवरण दर्ज करें

यदि उत्तर सही है:

यहां छवि विवरण दर्ज करें

लिपी

#!/usr/bin/env python3
from random import randint
import sys
import subprocess
import time

# maximum number & interval
max_n = int(sys.argv[1]); pause = int(sys.argv[2])

def fix_float(n):
    """
    if the assignment is a division, the script divides the random number by a
    number (integer) it can be divided by. it looks up those numbers, and picks
    one of them (at random). if the number is a prime number the assignment is
    changed into another type
    """
    try:
        divs = [i for i in range(2, n) if n%i == 0]
        pick = randint(1, len(divs))
        div_by = divs[pick-1]
        return [str(n)+" : "+str(div_by), int(n/div_by)]
    except (ValueError, IndexError):
        pass

def get_assignment():
    """
    get a random number within the user defined range, make the assignment and
    the textual presentation
    """
    n1 = randint(2, max_n); n2 = randint(2, max_n)
    assignments = [
        [str(n1)+" + "+str(n2), n1+n2],
        [str(n1)+" - "+str(n2), n1-n2],
        [str(n1)+" x "+str(n2), n1*n2],
        fix_float(n1),
        ]
    # pick an assignment (type) at random
    assignment = assignments[randint(0, 3)]
    # if the random number is a prime number and the assignment a division...
    assignment = assignment if assignment != None else assignments[1]
    # run the interface job
    try:
        answer = int(subprocess.check_output(["/bin/bash", "-c",
            'zenity --entry --title="Think hard:" --text='+'"'+assignment[0]+'"'
            ]).decode("utf-8"))
        if answer == assignment[1]:
            subprocess.Popen(["notify-send", "Coolcool"])
        else:
            subprocess.Popen([
                "notify-send", "Oooops, "+assignment[0]+\
                " = "+str(assignment[1])])
    except (subprocess.CalledProcessError, ValueError):
        pass

while True:
    time.sleep(pause)
    get_assignment()

कैसे इस्तेमाल करे

  1. स्क्रिप्ट को एक खाली फ़ाइल में कॉपी करें, इसे इस रूप में सहेजें mindpractice.py
  2. तर्क के रूप में असाइनमेंट के बीच अधिकतम अनुमत संख्या और अंतराल समय (सेकंड में) के साथ इसे चलाएं:

    python3 /path/to/mindpractice.py <max_number> <interval>

    जैसे

    python3 /path/to/mindpractice.py 1000 300

    1000असाइनमेंट के बीच में 5 मिनट के ब्रेक के साथ, के आंकड़ों की गणना करना।

  3. यदि सभी ठीक काम करते हैं, तो आप इसे सामान्य तरीके से स्टार्टअप एप्लिकेशन में जोड़ सकते हैं, या टॉगल करने के लिए एक लांचर बनाया जा सकता है, जिसे मैं बाद में हटा सकता हूं :)

ध्यान दें

  • विभाजन कुछ स्पष्टीकरण की आवश्यकता हो सकती। आप शायद झांकियों में गणना करना पसंद नहीं करेंगे। इसलिए, यदि असाइनमेंट एक विभाजन है, तो स्क्रिप्ट उन संख्याओं को देखती है जिन्हें वह विभाजित कर सकता है, और एक (यादृच्छिक पर) चुनता है। यदि (मुख्य) संख्या एक प्रमुख संख्या हो जाती है, तो असाइनमेंट को दूसरे प्रकार में बदल दिया जाता है।

2. अधिक विकल्प

एक बार जब आप की गणना शुरू करते हैं, आपको पता चल जाएगा कि विभाजित के आंकड़े से ऊपर (मान लीजिए) 100 की तुलना में काफी आसान है गुणा 100 के आंकड़े।

नीचे दी गई स्क्रिप्ट के साथ आप प्रति अभ्यास प्रकार के अनुसार अधिकतम संख्या निर्धारित कर सकते हैं (स्क्रिप्ट के नीचे निर्देश देखें)।

लिपी

#!/usr/bin/env python3
from random import randint
import sys
import subprocess
import time

levels = sys.argv[1:]
pause = [int(arg.replace("p:", "")) for arg in levels if "p:" in arg][0]

def fix_float(n):
    """
    if the assignment is a division, the script divides the random number by a
    number (integer) it can be divided by. it looks up those numbers, and picks
    one of them (at random). if the number is a prime number the assignment is
    changed into another type
    """
    try:
        divs = [i for i in range(2, n) if n%i == 0]
        pick = randint(1, len(divs))
        div_by = divs[pick-1]
        return [str(n)+" : "+str(div_by), int(n/div_by)]
    except (ValueError, IndexError):
        pass

def get_assignment():
    """
    get a random number within the user defined range, make the assignment and
    the textual presentation
    """
    # pick an assignment (type) at random
    track = randint(0, 3)
    arg = ["a:", "s:", "m:", "d:"][track]
    max_n = [int(item.replace(arg, "")) for item in levels if arg in item][0]

    n1 = randint(2, max_n); n2 = randint(2, max_n)
    assignments = [
        [str(n1)+" + "+str(n2), n1+n2],
        [str(n1)+" - "+str(n2), n1-n2],
        [str(n1)+" x "+str(n2), n1*n2],
        fix_float(n1),
        ]
    assignment = assignments[track]     
    # if the random number is a prime number and the assignment a division...
    assignment = assignment if assignment != None else assignments[1]
    # run the interface job
    try:
        answer = int(subprocess.check_output(["/bin/bash", "-c",
            'zenity --entry --title="Think hard:" --text='+'"'+assignment[0]+'"'
            ]).decode("utf-8"))
        if answer == assignment[1]:
            subprocess.Popen(["notify-send", "Coolcool"])
        else:
            subprocess.Popen([
                "notify-send", "Oooops, "+assignment[0]+\
                " = "+str(assignment[1])])
    except (subprocess.CalledProcessError, ValueError):
        pass

while True:
    time.sleep(pause)
    get_assignment()

कैसे इस्तेमाल करे

  • स्क्रिप्ट को पहले वाले की तरह सेट करें, लेकिन इसे तर्कों के साथ चलाएं (किसी भी क्रम में, स्क्रिप्ट सही तर्कों को सही आइटम से जोड़ेगी):

    • p: विराम दें (असाइनमेंट्स के बीच विराम दें, सेकंड में)
    • s: घटाना (अधिकतम संख्या की गणना)
    • a: जोड़ें (अधिकतम संख्या)
    • m: गुणा (अधिकतम संख्या)
    • d: विभाजन (अधिकतम संख्या)

    उदाहरण के लिए:

    python3 '/home/jacob/Desktop/num.py' a:10 d:100 s:10 m:10 p:300

    हर पांच मिनट में एक व्यायाम दिखाने के लिए 10 तक की संख्या, 100 को विभाजित करने के लिए छोड़कर


3. चलो थोड़ा दूर किया

कुछ आंकड़ों को देखने में सक्षम होने के नाते

नीचे दिए गए संस्करण आपको प्रत्येक 10 अभ्यासों के बाद के आंकड़े दिखाते हैं:

यहां छवि विवरण दर्ज करें

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

यहां छवि विवरण दर्ज करें

यह लॉगफाइल स्थित है:

~/.calculog

लिपी

#!/usr/bin/env python3
from random import randint
import sys
import subprocess
import time
import os

log = os.environ["HOME"]+"/.calculog"

levels = sys.argv[1:]
pause = [int(arg.replace("p:", "")) for arg in levels if "p:" in arg][0]

def fix_float(n):
    """
    if the assignment is a division, the script divides the random number by a
    number (integer) it can be divided by. it looks up those numbers, and picks
    one of them (at random). if the number is a prime number the assignment is
    changed into another type
    """
    try:
        divs = [i for i in range(2, n) if n%i == 0]
        pick = randint(1, len(divs))
        div_by = divs[pick-1]
        return [str(n)+" : "+str(div_by), int(n/div_by)]
    except (ValueError, IndexError):
        pass

def get_assignment():
    """
    get a random number within the user defined range, make the assignment and
    the textual presentation
    """
    # pick an assignment (type) at random
    track = randint(0, 3)
    arg = ["a:", "s:", "m:", "d:"][track]
    max_n = [int(item.replace(arg, "")) for item in levels if arg in item][0]

    n1 = randint(2, max_n); n2 = randint(2, max_n)
    assignments = [
        [str(n1)+" + "+str(n2), n1+n2],
        [str(n1)+" - "+str(n2), n1-n2],
        [str(n1)+" x "+str(n2), n1*n2],
        fix_float(n1),
        ]
    assignment = assignments[track]     
    # if the random number is a prime number and the assignment a division...
    assignment = assignment if assignment != None else assignments[1]
    # run the interface job
    try:
        answer = int(subprocess.check_output(["/bin/bash", "-c",
            'zenity --entry --title="Think hard:" --text='+'"'+assignment[0]+'"'
            ]).decode("utf-8"))
        if answer == assignment[1]:
            subprocess.Popen(["notify-send", "Coolcool"])
            return "ok"
        else:
            subprocess.Popen([
                "notify-send", "Oooops, "+assignment[0]+\
                " = "+str(assignment[1])])
            open(log, "+a").write(assignment[0]+"\t\t"+str(answer)+"\n")
            try:
                history = open(log).read().splitlines()
                open(log, "wt").write(("\n").join(history[-100:])+"\n")     
            except FileNotFoundError:
                pass 
            return "mistake"
    except (subprocess.CalledProcessError, ValueError):
        return None

results = []
while True:
    time.sleep(pause)
    results.append(get_assignment())
    if len(results) >= 10:
        score = results.count("ok")
        subprocess.call([
            "zenity", "--info",
            '--title=Latest scores',
            '--text='+str(score)+' out of 10',
            '--width=160',
            ])
        results = []

कैसे इस्तेमाल करे

उपयोग बहुत हद तक विकल्प 2 की तरह है, लेकिन आपके पास लॉगफ़ाइल उपलब्ध होगा और हर 10 असाइनमेंट के बाद स्कोर होगा।


4. अंतिम संस्करण

नीचे दिया गया संस्करण विकल्प 3 की तरह है (लॉग फ़ाइल और रिपोर्ट सहित), लेकिन कुछ अतिरिक्त विशेषताएं हैं:

  • वर्गमूल की गणना जोड़ता है

    यहां छवि विवरण दर्ज करें

  • संख्याओं की एक श्रृंखला का उपयोग करके जोड़ता है , इसके बजाय बस एक अधिकतम सेट करें

  • केवल विशिष्ट गणना प्रकार चलाने के लिए विकल्प जोड़ता है (उदाहरण के लिए केवल विभाजित और गुणा करें)।
  • उन तर्कों को याद करता है जो पिछली बार के साथ चलाए गए थे, जब तर्कों के बिना चलाया जाता है (केवल पहली बार, तर्क सेट किए जाने चाहिए )। यदि पहले रन पर कोई तर्क नहीं दिया गया था, तो स्क्रिप्ट एक संदेश भेजती है:

    यहां छवि विवरण दर्ज करें

लिपी

#!/usr/bin/env python3
from random import randint
import sys
import subprocess
import time
import os

"""
Use this script to practice head count. Some explanation might be needed:
The script can be used for the following types of calculating:

Type          argument example      explanation
-------------------------------------------------------------------------------
add           a:30-100              to add in numbers from 30-100
subtract      s:10-100              to subtract in numbers from 10-100
multiply      m:10-20               to multiply in numbers from 10-20
divide        d:200-400             to divide in numbers from 200-400
square root   r:1-1000              to find square root in numbers from 1-1000

N.B.
-------------------------------------------------------------------------------
- The argument p: (pause in seconds; break between the assignments) *must* be
  set, for example: p:300 to launch an assignment every 5 minutes
- A calculation type will only run *if* the argument is set for the
  corresponding type. An example: python3 /path/to/script p:60 s:30-60
  will run a subtract- assignment every minute.

Miscellaneous information:
-------------------------------------------------------------------------------
- On first run, arguments *must* be set. After first run, when no arguments
  are used the last set arguments will run, until the script is run with a new
  set of arguments.
- A log file of the last 100 incorrectly answered questions is kept in
  ~/.calculog
- After 10 assignments, the score of the last 10 pops up.
"""

log = os.environ["HOME"]+"/.calculog"
prefs = os.environ["HOME"]+"/.calcuprefs"
levels = sys.argv[1:]

if levels:
    open(prefs, "wt").write(str(levels))
else:
    try:
        levels = eval(open(prefs).read())
    except FileNotFoundError:
        subprocess.call([
            "zenity", "--info",
            '--title=Missing arguments',
            '--text=On first run, the script needs to be run with arguments\n'
            ])

def fix_float(n):
    """
    if the assignment is a division, the script divides the random number by a
    number (integer) it can be divided by. it looks up those numbers, and picks
    one of them (at random). if the number is a prime number the assignment is
    changed into another type
    """
    try:
        divs = [i for i in range(2, n) if n%i == 0]
        pick = randint(1, len(divs))
        div_by = divs[pick-1]
        return [str(n)+" : "+str(div_by), int(n/div_by)]
    except (ValueError, IndexError):
        pass

def fix_sqr(f1, f2):
    """
    If the assignment is calculating a square root, this function finds the sets
    of numbers (integers) that make a couple, within the given range.
    """
    q = f1; r = q**(.5); sets = []
    while q < f2:
        r = q**(.5)
        if r == int(r):
            sets.append([int(r), int(q)])
        q = q+1
    if sets:
        pick = sets[randint(0, len(sets)-1)]
        return ["√"+str(pick[1]), pick[0]]

def get_assignment():
    """
    get a random number within the user defined range, make the assignment and
    the textual presentation
    """ 
    args = ["a:", "s:", "m:", "d:", "r:"]
    indc = []
    for i, item in enumerate(args):
        if item in str(levels):
            indc.append(i)

    index = indc[randint(0, len(indc)-1)]
    name = args[index]

    minmax = [
        [int(n) for n in item.replace(name, "").split("-")] \
        for item in levels if name in item][0]

    assignment = None
    # if the random number is a prime number *and* the assignment a division 
    # or a square root...
    while assignment == None:
        n1 = randint(minmax[0], minmax[1]); n2 = randint(minmax[0], minmax[1])
        assignment = [
            [str(n1)+" + "+str(n2), n1+n2],
            [str(n1)+" - "+str(n2), n1-n2],
            [str(n1)+" x "+str(n2), n1*n2],
            fix_float(n1),
            fix_sqr(minmax[0], minmax[1]),
            ][index]
    # run the interface job
    try:
        answer = int(subprocess.check_output(["/bin/bash", "-c",
            'zenity --entry --title="Think hard:" --text='+'"'+assignment[0]+'"'
            ]).decode("utf-8"))
        if answer == assignment[1]:
            subprocess.Popen(["notify-send", "Coolcool"])
            return "ok"
        else:
            subprocess.Popen([
                "notify-send", "Oooops, "+assignment[0]+\
                " = "+str(assignment[1])])
            open(log, "+a").write(assignment[0]+"\t\t"+str(answer)+"\n")
            try:
                history = open(log).read().splitlines()
                open(log, "wt").write(("\n").join(history[-100:])+"\n")     
            except FileNotFoundError:
                pass 
            return "mistake"
    except (subprocess.CalledProcessError, ValueError):
        return None

if levels:
    pause = [int(arg.replace("p:", "")) for arg in levels if "p:" in arg][0]
    [levels.remove(item) for item in levels if "p:" in item]
    results = []
    while True:
        time.sleep(pause)
        results.append(get_assignment())
        if len(results) >= 10:
            score = results.count("ok")
            subprocess.call([
                "zenity", "--info",
                '--title=Latest scores',
                '--text='+str(score)+' out of 10',
                '--width=160',
                ])
            results = []

कैसे इस्तेमाल करे

  • स्क्रिप्ट को एक खाली फ़ाइल में कॉपी करें, इसे (फिर से) के रूप में सहेजें mindpractice.py। इसे निम्न विकल्पों के साथ चलाएँ (उदाहरण के लिए)

    सेट होना चाहिए:

    p:300                to set the interval between assignments to 5 minutes

    वैकल्पिक (एक चयन करें):

    a:30-100             to add in numbers from 30-100 (optional)
    s:10-100             to subtract in numbers from 10-100
    m:10-20              to multiply in numbers from 10-20
    d:200-400            to divide in numbers from 200-400
    r:1-1000             to find square root in numbers from 1-1000
  • उदाहरण आदेश:

    python3 '/path/to/mindpractice.py' p:300 d:10-100 s:10-30  r:300-600

    स्थापित करना:

    p:300                to set the interval between assignments to 5 minutes
    d:10-100             to divide in numbers from 10-100
    s:10-30              to subtract in numbers from 10-30
    r:300-600            to calculate square roots from 300-600

    जोड़ने और गुणा करते समय उपयोग नहीं किया जाता है।

फिर अगली बार, यदि स्क्रिप्ट के साथ चलाया जाता है:

python3 '/path/to/mindpractice.py'

यह अंतिम प्रयुक्त तर्कों को याद रखेगा


उस संस्करण का उपयोग करें जो आपकी आवश्यकताओं को पूरा करता है ...



यह संस्करण अब तक बहुत अच्छा काम कर रहा है। आपको बहुत - बहुत धन्यवाद!
ओशोइरो

1
@orschiro ने कठिनाई को अलग करने के लिए एक विस्तारित संस्करण जोड़ा।
जैकब व्लिजम

लॉग फ़ाइल एक बहुत अच्छा विचार है! मैं वर्तमान में तीन अंकों के गुणा और विभाजनों में से कुछ के आसपास अपना सिर पाने की कोशिश कर रहा हूं। वे इतने सीधे नहीं हैं। :)
ओरसिरो

बस एक विचार: कभी-कभी मैं काम पर इतना ध्यान केंद्रित करता हूं कि मैं Think Hardकाम खत्म करने के लिए खिड़की को अनदेखा करता हूं (उदाहरण के लिए एक वाक्य लिखना समाप्त)। मैं फिर खिड़की के बारे में भूल जाता हूं। क्या यह संभव होगा कि 5 मिनट के बाद, Think Hardखिड़की स्वचालित रूप से ध्यान केंद्रित करती है?
orchichiro

1
@orschiro बिल्कुल! मैं अभी भी पूरी तरह से GUI- संस्करण पर चब रहा था ( कमांड लाइन से कुछ भी सेट करने की आवश्यकता नहीं, यहां तक ​​कि पहला रन भी नहीं), लेकिन मुझे यकीन नहीं है कि वे हमें उत्तर में अधिक मीटर जोड़ने की अनुमति देंगे :)
याकूब व्लिज़म

3

परिचय:

निम्न एप्लिकेशन उपयोगकर्ता द्वारा मूल्यांकन किए जाने के लिए यादृच्छिक पूर्णांक अभिव्यक्तियों का उत्पादन करता है। बेतरतीब ढंग से उत्पन्न भावों की श्रेणी मुख्य पॉपअप विंडो में उपयोगकर्ता की सेटिंग्स पर निर्भर करती है। Lets Beginबटन पर क्लिक करने पर , सत्र अनिश्चितकाल के लिए शुरू होता है, जब तक कि उपयोगकर्ता रद्द बटन को हिट नहीं करता है।

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

सोर्स कोड:

#!/usr/bin/env python

# Author: Serg Kolo
# Date: Jan 30,2016
# Purpose: A graphical utility for practicing
#          random arithmetic operations
# Written for: http://askubuntu.com/q/725287/295286

#    Copyright: Serg Kolo , 2016
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

import sys
import time
import random
from PyQt4 import QtGui


class mathApp(QtGui.QWidget):
   def __init__(self):
       super(mathApp,self).__init__()
       self.mainMenu()

   def mainMenu(self):
      self.setGeometry(300, 300, 400, 200)

      self.btn = QtGui.QPushButton("Let's begin",self)
      self.btn.move(20,150)
      self.btn.clicked.connect(self.askQuestions)

      self.lbl1 = QtGui.QLabel(self)
      self.lbl1.move(20,25)
      self.lbl1.setText("Numbers From")


      self.lbl2 = QtGui.QLabel(self)
      self.lbl2.move(20,55)
      self.lbl2.setText("Numbers To")

      self.lbl2 = QtGui.QLabel(self)
      self.lbl2.move(20,85)
      self.lbl2.setText("Repeat (seconds)")

      self.le1 = QtGui.QLineEdit(self)
      self.le1.move(150,20)

      self.le2 = QtGui.QLineEdit(self)
      self.le2.move(150,50)

      self.le3 = QtGui.QLineEdit(self)
      self.le3.move(150,80)

      self.lbl3 = QtGui.QLabel(self)
      self.lbl3.move(20,105)

      self.setWindowTitle('Random Integer Arithmetic')

      self.show()

   def askQuestions(self):
       rangeStart = int(self.le1.text())
       rangeEnd = int(self.le2.text())
       sleepTime = int(self.le3.text())
       done=False
       while not done:
          self.show()
          expression = self.generateOperation(rangeStart,rangeEnd)
          correctAnswer = eval(expression)

          prompt = QtGui.QInputDialog() 
          text,ok = prompt.getText(self,"Don't think too hard",expression) 
          if ok:
             if int(text) == correctAnswer:                
                self.showAnswer("CORRECT,YOU ROCK !")
             else :
                self.showAnswer("Nope");
          else:
              done=True

          if done==True:
              self.close()
          time.sleep(sleepTime)


   def generateOperation(self,start,end):
      a = random.randint(start,end)
      b = random.randint(start,end)
      oplist = ['+','-','/','*']
      op = oplist[random.randint(0,3)]
      expr = str(a) + op + str(b) + ''
      return expr

   def showAnswer(self,result):
       popup = QtGui.QMessageBox()
       popup.setText(result)
       popup.exec_()


def main():
   root = QtGui.QApplication(sys.argv)
   app = mathApp()
   sys.exit(root.exec_())

if __name__ == '__main__':
   main()

प्रिय @ शेर, मैं भी आपके विस्तारित जीयूआई संस्करण के लिए व्यक्तिगत रूप से धन्यवाद देना चाहता हूं। एक सवाल, मैं सिर्फ व्यायाम था 15/14 = 1। मुझे यकीन नहीं है कि इस तरह का व्यायाम कितना उपयोगी है। तुम क्या सोचते हो?
ओरशिरो

@orschiro यह है integer arithmetic। इसका मतलब है कि परिणाम केवल पूरा हिस्सा है, शेष नहीं है। यदि आप चाहें, तो मैं decimalअंकगणित को भी लागू करने का प्रयास कर सकता हूं । इसके अलावा, कृपया मुझे बताएं कि आप मुझे किस तरह के अन्य विकल्प लागू करना और जोड़ना चाहते हैं। वर्तमान में, मैं agile developmentविधि का अभ्यास करने की कोशिश कर रहा हूं , और ग्राहक के साथ संचार इस तरह की विधि में महत्वपूर्ण है। कृपया मुझे बताओ।
सर्गी कोलोडियाज़नी

यह सुनकर अच्छा लगा! मैं आपको अधिक प्रतिक्रिया प्रदान करना पसंद करूंगा, उदाहरण के लिए उबंटू डेस्कटॉप में एक बेहतर एकीकरण (रनिंग स्क्रिप्ट अधिक पृष्ठभूमि में, यानी उपयोगकर्ता इनपुट के बाद कम से कम)। मैं आपको आगे की प्रतिक्रिया कैसे दे सकता हूं?
orchichiro
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.