1. 程式人生 > >Python實現簡單的四則運算

Python實現簡單的四則運算

idt class per 工作 operation als evel mea name

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實現簡單的四則運算還不夠完美,比如沒有隨機生成帶括號的由於時間原因以及個人能力有限,這些只能以後慢慢完善。

Python實現簡單的四則運算