Python實現簡單的四則運算


GitHub 項目地址

https://github.com/745421831/-/tree/master


 

PSP

 

PSP2.1

Personal Software Process Stages

預估耗時(分鍾)

實際耗時(分鍾)

Planning

計划

10

20

· Estimate

· 估計這個任務需要多少時間

10

10

Development

開發

360

600

· Analysis

· 需求分析 (包括學習新技術)

30

40

· Design Spec

· 生成設計文檔

30

40

· Design Review

· 設計復審 (和同事審核設計文檔)

10

15

· Coding Standard

· 代碼規范 (為目前的開發制定合適的規范)

5

5

· Design

· 具體設計

40

80

· Coding

· 具體編碼

300

500

· Code Review

· 代碼復審

60

120

· Test

· 測試(自我測試,修改代碼,提交修改)

180

120

Reporting

報告

120

60

· Test Report

· 測試報告+博客

120

120

· Size Measurement

· 計算工作量

10

10

· Postmortem & Process Improvement Plan

· 事后總結, 並提出過程改進計划

40

30

合計

 

1325

1770

 

項目要求

 

  • 能自動生成小學四則運算題目
  • 除了整數以外,還要支持真分數的四則運算

 

解題思路

  • 了解四則運算的基本法則
  • 利用隨機函數隨機生成數字以及運算符
  • 用戶輸入答案程序需要判斷答案是否正確
  • 支持真分數運算

 

設計實現及代碼說明

 

import random

from fractions import Fraction

operation = ['+', '-', '*', '/']   #四則運算的符號

global f

def integer_score():

    #rand = operation[random.randint(0,3)]

    number = random.randint(1,4)     #隨機產生的表達式長度

    f = ''

    for i in range(number):

        a = random.randint(1,20)       #隨機產生的表達式中的數

        rand = operation[random.randint(0, 3)]     #隨機選擇一個四則運算中的符號

        if rand == '/':

            b = random.randint(a, 20)               #隨機產生的真分數的分母

            f += str(a) + rand + str(b)               #數與符號相連

            rand = operation[random.randint(0, 2)]     #隨機選擇一個四則運算中的符號

            f += rand

        else:

            f += str(a) + rand

        #print(a,rand,end='')

    b = random.randint(1, 20)

    f += str(b)                     #得到完整的表達式

    n = eval(f)                      #得到表達式的結果

    n = Fraction('{}'.format(n)).limit_denominator()    #小數轉化為分數

    if n > 0:

        print('題目:')

        print(f,'=')

        print('請輸出答案:')

        x = Fraction('{}'.format(eval(input()))).limit_denominator()

        if n == x:                  #輸入的數與表達式比較

            print(True)

        else:

            print(False)

            print('正確的答案為:',n)

    else:

        integer_score()

def integer():

    # rand = operation[random.randint(0,3)]

    number = random.randint(1, 3)

    f = ''

    for i in range(number):

        a = random.randint(1, 10)

        rand = operation[random.randint(0, 3)]

        f += str(a) + rand

    b = random.randint(1, 10)

    f += str(b)

    n = eval(f)

    if isinstance(n, int) and n > 0:

        print('題目:')

        print(f, '=')

        print('請輸出答案:')

        x = eval(input())

        if n == x:

            print(True)

        else:

            print(False)

            print('正確的答案為:', n)

    else:

        integer()

def score():

    op = ['+', '-']

    number = random.randint(1, 3)

    f = ''

    for i in range(number):

        a = random.randint(1, 10)

        b = random.randint(a, 10)

        rand = op[random.randint(0, 1)]

        f += str(a) + '/'+ str(b)+rand

    a = random.randint(1, 10)

    b = random.randint(a, 10)

    f += str(a) + '/'+ str(b)

    n = eval(f)

    n = Fraction('{}'.format(n)).limit_denominator()

    if n > 0:

        print('題目:')

        print(f,'=')

        print('請輸出答案:')

        x = Fraction('{}'.format(eval(input()))).limit_denominator()

        if n == x:

            print(True)

        else:

            print(False)

            print('正確的答案為:',n)

    else:

        score()



if __name__ == '__main__':

    while True:

        print('選擇你想做的題目:')

        print('0(退出)1(分數題目),2(整數題目),3(綜合題目)')

        m = int(input())

        if m == 1:

            score()

        elif m == 2:

            integer()

        elif m == 3:

            integer_score()

        elif m == 0:

            exit()

        else:

            print('請重新輸入你的選擇')



#isinstance(1, int)

 

總結

這次利用Python實現簡單的四則運算還不夠完美,比如沒有隨機生成帶括號的由於時間原因以及個人能力有限,這些只能以后慢慢完善。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM