吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5456|回复: 14
收起左侧

[Python 转载] 使用Python生成Excel版口算题

[复制链接]
gold312 发表于 2020-3-2 21:46
疫情无法上班,在家实在宅的难受就自学了从论坛中下载的《用Python自动办公,做职场高手》,所练手制作了这个小程序。
因为本人并非程序员出身而且编程的0基础,代码写的比较乱。也希望各位大神指正出代码的问题。
以下为代码,望指正

[Python] 纯文本查看 复制代码
import xlsxwriter
import random

"""以下为可修改参数"""
"出题数目--100题整个一页A4纸大小"
t = 100
"出题列数"
m = 4
"出题难度大小"
n = 10
"出题规则
1、加法
2、减法
3、加减混合
4、乘法
5、除法
6、乘除混合
7、四则运算
"
g = 7

"""以下为函数代码,修改可能会无法使用"""


# 运算符
def fu(x):
    sys = ['+', '-', '×', '÷']
    if x == 1:
        return sys[0]
    elif x == 2:
        return sys[1]
    elif x == 3:
        f = random.randint(0, 1)
        return sys[f]
    elif x == 4:
        return sys[2]
    elif x == 5:
        return sys[3]
    elif x == 6:
        f = random.randint(2, 3)
        return sys[f]
    elif x == 7:
        f = random.randint(0, 3)
        return sys[f]


# 随机数
def num(x):
    y = random.randint(1, x)
    return y


# 出题
def ti(x):
    n1 = num(x)
    n2 = num(x)
    f = fu(g)
    if f == '+':
        s = [n1, f, n2, n1 + n2]
        return s
    elif f == '-':
        n1, n2 = max(n1, n2), min(n1, n2)
        s = [n1, f, n2, n1 - n2]
        return s
    elif f == '×':
        s = [n1, f, n2, n1 * n2]
        return s
    elif f == '÷':
        n1, n2 = max(n1, n2), min(n1, n2)
        while n1 % n2 != 0:
            n1 = num(x)
            n2 = num(x)
            n1, n2 = max(n1, n2), min(n1, n2)
        s = [n1, f, n2, int(n1 / n2)]
        return s


# 四舍五入避免round(0.5)等于0
def sswr(x):
    return int(x + 0.5)


# Excel创建表格操作
workbook = xlsxwriter.Workbook('./口算.xlsx')
sheet1 = workbook.add_worksheet('试题')
sheet2 = workbook.add_worksheet('答案')
sheet1.set_column('A:D', 21.6)
sheet1.set_row(30)
sheet2.set_column('A:D', 21.6)
sheet2.set_row(30)

# 写入格式
font = workbook.add_format({
    'font_size': 20,
    'font_name': '微软雅黑',
    'bold': 1

})

# Excel写入操作
for h in range(sswr(t / m)):
    for l in range(m):
        s1 = ti(n)
        shiti = str(s1[0]) + str(s1[1]) + str(s1[2]) + '='
        daan = str(s1[0]) + str(s1[1]) + str(s1[2]) + '=' + str(s1[3])
        sheet1.write(h, l, shiti, font)
        sheet2.write(h, l, daan, font)
        t = t - 1
        if t == 0:
            break

workbook.close()

ToExcel.rar

1.02 KB, 下载次数: 170, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
穆萨 + 1 + 1 我很赞同!
lichen218 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| gold312 发表于 2020-7-14 16:13
起到凌晨 发表于 2020-7-11 02:02
runfile('D:/py/daxue.py', wdir='D:/py')
  File "D:\py\daxue.py", line 12
    "出题规则

把注释的方式换一下,别用一组双引号,用三组双引号,这个是注释出错了
起到凌晨 发表于 2020-7-11 02:02
runfile('D:/py/daxue.py', wdir='D:/py')
  File "D:\py\daxue.py", line 12
    "出题规则
         ^
SyntaxError: EOL while scanning string literal

同样报错
萌虎乖乖 发表于 2020-3-2 22:29
KILLCALL 发表于 2020-3-3 09:33
要是重新加入一列序号,显得的更加清晰
cj13888 发表于 2020-3-3 10:16
值得一试,谢谢分享
vipmomo 发表于 2020-6-25 19:19
支持!!!!!!
平凡之家 发表于 2020-6-26 11:53
谢谢分享
1e3e 发表于 2020-6-27 19:58
这是啥原因呢?求楼主解答
2020-06-27_195731.jpg
 楼主| gold312 发表于 2020-6-28 09:57
1e3e 发表于 2020-6-27 19:58
这是啥原因呢?求楼主解答

你看看是不是有些包没有安装
ycmpws 发表于 2020-7-10 14:36
谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-16 09:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表