首页/作品列表/利用 IdeaXcollege 学习 Python
利用 IdeaXcollege 学习 Python
12256 1
主要内容
ideaxcollege 最近的升级使用了 Microduino 独立研发的富文本编辑器 mEditor。
mEditor 提供了很多独特的能力,其中最重要的改进就是直接在富文本编辑器中增加了可执行 Jupyter 代码块。这样,在文章编写和阅读时,用户可以随时修改并执行示例 Python 代码。mEditor 的 Python 后台执行容器中已经安装了一些包,并对中文化环境进行了设置,能够满足主要的 Python 教学需求
我们先来简单的体验一下这个功能。未来美科会在 ideaxcollege 中增加更全面的 Python 教学教程。

一、Python 基本使用

ideaxcollege 后台的 Python 运行环境是 Python 3。



点击下面可执行代码框中的左上角的执行按钮,就可以执行它了。
print("欢迎来到美科科技创想空间,Welcome to microduino IdeaLab")

程序运行上下文

在同一页中,如果有多个 Jupyter 代码块,它们会运行在同一个上下文环境中。我们用下面两个 Jupyter 块来做个例子。
success = "Success"
在另一个框中去Print它,不同的执行顺序会产生不同的效果。
print("先执行会报变量未定义,后执行才出 : %s" % success)

下面的图显示了如果不执行声明块的话,系统的报错:

二、支持Python基础教学


  • 例: 输入与输出
name = input("What is your name? \n")
print("Hi, ", name)

  • 例: 数字与计算
unit_price = 8.5
number = input("How many apples do you want? \n")

total_cost = unit_price * int(number)
print("Please give me $%.2f" % total_cost)

  • 例: 函数
import math

def convert_cm_to_m(cm):
    return cm / 100.0
  
input_cm = input("Please input CM \n")
print("It is %.2f m." % convert_cm_to_m(float(input_cm)))

  • 例: 随机数
import random

keep_going = True
while keep_going:
    num = random.randint(1, 6)

    if num > 3:
        level = 'BIG'
    else:
        level = 'SMALL'
        
    print("You got %s, %d \n" % (level, num))
    
    key = input("Continue ? [y/n] \n")
    if key != 'y':
        keep_going = False
    else:
        keep_going = True

  • 例: 数组和排序
x = [46, 8, -10, 9, -28]

print(x, " ==> ", sorted(x))

print(x, " ==> ", sorted(x, key=abs))

x.sort()
print(x)

  • 例: 网络访问和正则表达式
import requests
import re

r = requests.get('https://github.com/timeline.json')
print(r.text)

m = re.search(r'(?<=-)\w+', r.text)	# 取出 - 包围的文字
print(m.group(0))

三、支持数据分析教学

首先import常用的数据分析教学所需要的常用包,包括 Pandas、Numpy、matplotlib等,这些包已经在mEditor中预先安装了。
import numpy as np
import pandas as pd

  • 例:使用Series
from pandas import Series,DataFrame

print('用一维数组生成Series')
x = Series([1,3,5,7,9]) 
print(x.values)
x

  • 例:使用 matplotlib
使用 matplotlib 时,有以下几点需要注意:
在首行增加 %matplotlib inline 能够让图表在第一次运行后直接显示。
mEditor 已经集成了中文支持,所以不需要再申明使用中文字体
因为结果回显底色为深色的原因,所以您可以在图表里增加 fig=plt.gcf().set_facecolor('white') 来将返回的图表显示成白色背景。请注意 plt.figure(facecolor='white') 在某些场景下不能正常显示,这似乎是 matplotlib 自己的一个bug。
你还可以试试为图表设置显示风格,如ggplotfivethirtyeightdark_background。设置的语句为 plt.style.use('fivethirtyeight')
%matplotlib inline

import matplotlib
import matplotlib.pyplot as plt

# 指定默认字体,在当前环境已经不需要了  
# matplotlib.rcParams['font.sans-serif'] = ['SimHei']   
# matplotlib.rcParams['font.family']='sans-serif'

labels='US','UK','中国','others'
sizes=15,20,45,10
colors='yellowgreen','gold','lightskyblue','lightcoral'
explode=0,0.1,0,0

plt.style.use('ggplot')
# fig=plt.gcf().set_facecolor('white')

plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',shadow=True,startangle=50)
plt.axis('equal')
plt.show()

  • 例:直方图
plot里面的描述可以使用Letax公式,例如下面的代码中 r'$\mu=100, \sigma=15$' 能够被正确的显示成希腊字母。

%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt
 
mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)
 
# 数据的直方图
n, bins, patches = plt.hist(x, 50, density=1, facecolor='g', alpha=0.75)

# plt.style.use('dark_background')
fig=plt.gcf().set_facecolor('white')

plt.xlabel('Smarts')
plt.ylabel('概率')

#添加标题
plt.title('Histogram of IQ')

#添加文字
plt.text(60, .025, r'$\mu=100, \sigma=15$')
plt.axis([40, 160, 0, 0.03])
plt.grid(True)

plt.show()

  • 例:数据载入
mEditor 目前仅支持从特殊的位置读取数据文件,并且不支持数据写入,因此要进行数据操作会稍微麻烦一下。例如,系统中已经预置了下面这个程序中所需的 DataLog.csv
%matplotlib inline

import csv
from datetime import datetime

import matplotlib.dates as mdates
import matplotlib.pyplot as plt
import pandas as pd

headers = ['DateTime', 'Sensor Value']
df = pd.read_csv('DataLog.csv', names=headers)
print(df)

df['DateTime'] = df['DateTime'].map(
    lambda x: datetime.strptime(str(x), '%Y/%m/%d %H:%M:%S'))

x = df['DateTime']
y = df['Sensor Value']

# plot
plt.plot(x, y)
# beautify the x-labels
plt.gcf().autofmt_xdate()

plt.show()

  • 例:数据库的使用
数据库可以使用 SQLite,因为它可以直接在内存中建立数据库 conn = sqlite3.connect(':memory:')。但是,一旦内存数据库的连接关闭,就会被释放而不复存在。

创建表
import sqlite3

conn = sqlite3.connect(':memory:')
print("Opened database successfully \n");

# 创建表
c = conn.cursor()
c.execute('''CREATE TABLE COMPANY
       (ID INT PRIMARY KEY     NOT NULL,
       NAME           TEXT    NOT NULL,
       AGE            INT     NOT NULL,
       ADDRESS        CHAR(50),
       SALARY         REAL);''')
print("Table created successfully \n");
conn.commit()

# 插入数据
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (1, 'Paul', 32, 'California', 20000.00 )");
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");
conn.commit()
print("Records created successfully");

cursor = c.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
    print("ID = ", row[0])
    print("NAME = ", row[1])
    print("ADDRESS = ", row[2])
    print("SALARY = ", row[3], "\n")

print("Operation done successfully \n");
conn.close()

四、支持人工智能教学

mEditor支持以下的人工智能包:sklearn、tensorflow、opencv等。
  • 例:Scikit-Learn
from sklearn import datasets

iris = datasets.load_iris()
digits = datasets.load_digits()

print(digits.data) 

  • 例:手写数字识别数据加载
import pandas as pd

# Load in the data with `read_csv()`
digits = pd.read_csv("optdigits.tra", header=None)

# Print out `digits`
print(digits)

  • 例:鸢尾花实验
# Sample Decision Tree Classifier
from sklearn import datasets
from sklearn import metrics
from sklearn.tree import DecisionTreeClassifier

# load the iris datasets
dataset = datasets.load_iris()

# fit a CART model to the data
model = DecisionTreeClassifier()
model.fit(dataset.data, dataset.target)
print(model)
# make predictions
expected = dataset.target
predicted = model.predict(dataset.data)
# summarize the fit of the model
print(metrics.classification_report(expected, predicted))
print(metrics.confusion_matrix(expected, predicted))

五、mEditor Python的局限

为了为用户提供更快的程序执行运行体验,mEditor 对于普通用户提供的是共同的后台 Python 运行容器,这个容器已经安装了满足大多数 Python 教学要求所需的包。但是,在这个环境里,用户不能写入文件、不能随意安装 Python 包。
因为资源是共享的,所以不能跑大的AI学习任务!!!目前,大家使用时自律吧。
当然,如果你您有独特的 Python 教学环境要求,请直接和美科的销售或技术支持联系,我们可以为您定制所需的运行容器。
mEditor 刚上线,在交互体验上还有不少考虑不周的地方,当然也少不了我们没有测试出来的Bug,你要是发现什么问题,请及时告诉我们改进。谢谢。
所需硬件
暂无数据!
代码展示
暂无数据!
附件下载
暂无数据!
6

小机智

这个所谓的富文本编辑器 mEditor在哪里能找到?是单独的一个软件么?

回复1

大牛,别默默的看了,快登录帮我点评一下吧!

立即注册