Exemplo n.º 1
0
            sales.append(sale)
    return sales


def calc_sales_total(sales):
    """
    计算销售总额

    :param sales: 销售记录列表
    :return: 销售总额
    """
    total = 0
    for s in sales:
        amount = s.price * s.quantity
        total += amount
    return total


filename = dlg.get_open_file_name("请选择csv文件", dlg.FileFilter.CSVFiles)
if filename == "":
    print("未选择文件!")
    exit(-1)

sales = read_csv(filename)

dlg.show_objects(sales)

total = calc_sales_total(sales)

dlg.show_message(f"销售总额{total}")
Exemplo n.º 2
0
code = "sh601006"
#抓取网页(json格式)
response = request.urlopen('http://hq.sinajs.cn/list=' + code)
raw_data = response.read().decode('gbk')

#提取""括起的内容(两个""之间的内容)
quote1 = raw_data.find('"')
quote2 = raw_data.find('"', quote1 + 1)
raw_data = raw_data[quote1 + 1:quote2]
#按逗号分割成多个数据项
datas = raw_data.split(',')

result = "股票{0}目前的价格是{1},最高价{2},最低价{3}".format(datas[0], datas[3], datas[4],
                                               datas[5])
#使用对话框显示查询结果
dlg.show_message(result, "股票信息")
"""
https://www.cnblogs.com/phpxuetang/p/4519446.html
以大秦铁路(股票代码:601006)为例,如果要获取它的最新行情,只需访问新浪的股票数据
接口:
http://hq.sinajs.cn/list=sh601006
这个url会返回一串文本,例如:
var hq_str_sh601006="大秦铁路, 27.55, 27.25, 26.91, 27.55, 26.20, 26.91, 26.92, 
22114263, 589824680, 4695, 26.91, 57590, 26.90, 14700, 26.89, 14300,
26.88, 15100, 26.87, 3100, 26.92, 8900, 26.93, 14230, 26.94, 25150, 26.95, 15220, 26.96, 2008-01-11, 15:05:32";
这个字符串由许多数据拼接在一起,不同含义的数据用逗号隔开了,按照程序员的思路,顺序号从0开始。
0:”大秦铁路”,股票名字;
1:”27.55″,今日开盘价;
2:”27.25″,昨日收盘价;
3:”26.91″,当前价格;
4:”27.55″,今日最高价;

def find_max_score(scores):
    """
    寻找并返回scores列表中成绩最高的学生信息

    :param scores: scores列表
    :return: 最高分同学信息
    """
    max_score = scores[0]
    for score in scores:
        if score.score > max_score.score:
            max_score = score
    return max_score


# 读取文件
filename = dlg.get_open_file_name("选择要打开的文件", dlg.FileFilter.CSVFiles)
if filename == '':
    print("未选择文件")
    exit(-1)

scores = read_csv_file(filename)

dlg.show_objects(scores)

max_score = find_max_score(scores)

dlg.show_message(
    f"获得最高分的同学:{max_score.id} {max_score.name},成绩为{max_score.score}")
Exemplo n.º 4
0
def find_using_index(index,name_key):
    """
    使用index索引列表,查找姓名等于name_key在scores列表中的下标
    :param index: 索引列表
    :param name_key: 要查找的姓名
    :return: 姓名为name_key的学生。None表示找不到。
    """
    i_index = hash(name_key) % MAX_INDEX_SIZE
    items=index[i_index]
    for item in items:
        if item.key == name_key:
            return item.student
    return None

#5-2-2.成绩.csv
filename = dlg.get_open_file_name("请选择成绩csv文件",dlg.FileFilter.CSVFiles)
if filename == "":
    print("未选择文件")
    exit(-1)

students = read_csv(filename)
dlg.show_objects(students)
index = create_index(students)
name = dlg.get_string("请输入要查找的姓名")
found = find_using_index(index,name)
if found is None:
    dlg.show_message(f"找不到姓名为{name}的学生")
else:
    dlg.show_message(f"id: {found.id} 姓名: {found.name} 成绩:{found.score}")
Exemplo n.º 5
0
import easygraphics.dialog as dlg


def cals_sales_price(price):
    sales = 0.9 * price
    return sales


price = int(dlg.get_string("请输入原始价格:"))
sales_price = cals_sales_price(price)
dlg.show_message(f"打折后价格为{sales_price}")
def find_using_index(index, name_key):
    """
    使用index索引列表,查找姓名等于name_key在scores列表中的下标
    :param index: 索引列表
    :param name_key: 要查找的姓名
    :return: 学生在scores列表中的下标。-1表示列表中无此学生。
    """
    i_index = hash(name_key) % MAX_INDEX_SIZE
    items = index[i_index]
    for item in items:
        if item.key == name_key:
            return item.index
    return -1


filename = dlg.get_open_file_name("请选择成绩csv文件", dlg.FileFilter.CSVFiles)
if filename == "":
    print("未选择文件")
    exit(-1)

scores = read_csv(filename)
dlg.show_objects(scores)
index = create_index(scores)
name = dlg.get_string("请输入要查找的姓名")
i = find_using_index(index, name)
if i == -1:
    dlg.show_message(f"找不到姓名为{name}的学生")
else:
    s = scores[i]
    dlg.show_message(f"id: {s.id} 姓名: {s.name} 成绩:{s.score}")
Exemplo n.º 7
0
import easygraphics.dialog as dlg


def calc_discount(total):
    """
    计算折扣数和折后金额

    :param total: 购物金额
    :return: 折扣数,折后金额
    """
    if total < 0:
        raise ValueError('total should not < 0!')
    if total >= 500:
        discountRate = 0.9
    elif total >= 200:
        discountRate = 0.95
    amount = total * discountRate
    return discountRate, amount


total = float(dlg.get_string("请输入总金额"))
dis_rate, amount = calc_discount(total)
dlg.show_message(f"折扣率为{dis_rate},折后金额为{amount}")
Exemplo n.º 8
0
import easygraphics.dialog as dlg

is_girl = dlg.get_yes_or_no("你是女生吗?")
if is_girl:
    dlg.show_message("免费送你个鸡腿~~")

dlg.show_message("继续打饭")
Exemplo n.º 9
0
import easygraphics.dialog as dlg

values = dlg.get_many_strings("请输入", labels=["身高(米)", "全票票价"])
height = float(values[0])
full_price = float(values[1])
if height <= 1.3:
    price = 0
else:
    if height <= 1.5:
        price = full_price / 2
    else:
        price = full_price

dlg.show_message("最终票价为:" + str(price))
    return sales


def calc_sub_total(sales, goods_name):
    """
    统计指定商品的销售额
    :param sales: 销售记录列表
    :param goods_name: 要统计的商品名
    :return: 指定商品的销售额
    """
    total = 0
    for s in sales:
        if s.name == goods_name:
            amount = s.price * s.quantity
            total += amount
    return total


filename = dlg.get_open_file_name("请选择csv文件", dlg.FileFilter.CSVFiles)
if filename == "":
    print("未选择文件!")
    exit(-1)

sales = read_csv(filename)

dlg.show_objects(sales)

sub_total = calc_sub_total(sales, "方便面")

dlg.show_message(f"方便面的销售额为{sub_total}元")

class User:
    def __init__(self, id, name, borrowed, type):
        self.id = id
        self.name = name
        self.borrowed = borrowed
        self.type = type


def calc_books_can_borrow(user):
    if user.type == '教师':
        n = 10 - user.borrowed
    else:
        n = 5 - user.borrowed
    return n


data = dlg.get_many_strings("用户信息", labels=['编号', '姓名', '已借数量', '类别'])

user_id = data[0]
name = data[1]
borrowed = int(data[2])
type = data[3]

user = User(user_id, name, borrowed, type)

can_borrow = calc_books_can_borrow(user)

dlg.show_message(f"用户{user.name}可以借{can_borrow}本书")
Exemplo n.º 12
0
import easygraphics.dialog as gui

s = gui.get_string("your name:")
gui.show_message(f"hello {s}")
Exemplo n.º 13
0
import easygraphics.dialog as gui
import math


def sqrt(a, epsilon):
    k = 0
    xk = a
    while True:
        k += 1
        xk1 = xk
        xk = (xk1 + a / xk1) / 2
        if math.fabs(xk - xk1) < epsilon:
            break
    root = xk
    return xk


ep = 0.0001
a = float(gui.get_string("请输入a:"))
root = sqrt(a, ep)
gui.show_message(f"{a}的平方根是{root}")
        if index.name == key_name:
            return index.index
        elif index.name < key_name:
            start = mid+1
        else:
            end = mid - 1
    return -1

# 从csv文件中读入学生成绩信息,放到scores列表中
# 5-2-1.成绩.csv
filename = dlg.get_open_file_name("请选择成绩csv文件",dlg.FileFilter.CSVFiles)
if filename == "":
    print("未选择文件")
    exit(-1)

scores = read_csv(filename)
dlg.show_objects(scores,fields=['id','name','clazz','math','literature','english'])

# 创建姓名的折半查找索引
name_indices = create_indices(scores)
dlg.show_objects(name_indices)


# 使用折半查找索引进行查找
key = dlg.get_string("请输入要查找的姓名")
i = find_using_index(name_indices,key)
if i == -1:
    dlg.show_message(f"找不到姓名为{key}的学生")
else:
    dlg.show_message(f"找到了!是{scores[i]}")