Python作业-3

这是我们老师布置的第三份作业

本博客参考地址

https://www.runoob.com/python/att-string-split.html

https://blog.csdn.net/qq_43210174/article/details/104659334

题目一

编写函数实现输入任意两个集合及对应运算符,能够返回两个集合的计算的结果
#如集合A = {1,2,3} B = {2,3} 运算符 - 得到计算结果为A与B的差集,Result = {1}

前提的函数

map

input

Converts input(prompt) to eval(input(prompt))

这是官网上的的解释

翻译一下,就是 把input(提示)转换为 eval()型的input

eval

eval(expression[, globals[, locals]])

后面跟一个表达式,一个全局变量,一个区域变量

官方的解释如下

The arguments(字符串) are a string and optional(可选择的) globals and locals. If provided, globals must be a dictionary. If provided, locals can be any mapping object.

The return value is the result of the evaluated expression. Syntax errors are reported as exceptions. Example:

翻译一下

eval的参数是一个字符串和一个可选择的全局变量和区域变量,如果提供全局变量一定是一个字典,如果提供了区域对象一个是map类型的对象

split()

语法

str.split(str="", num=string.count(str)).

参数

  • str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。

  • num – 分割次数。默认为 -1, 即分隔所有

    一个例子

    str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
    print(str.split( ))       # 以空格为分隔符,包含 \n
    print(str.split(' ', 1 )) # 以空格为分隔符,分隔成两个
    

    结果如下

    ['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
    ['Line1-abcdef', '\nLine2-abc \nLine4-abcd']
    

    split()返回的对象,就默认是一个集合

    所以这道题的代码如下

    A=set(input("请输入一个集合:").split())
    B=set(input("请输入一个集合:").split())
    s=input("请输入一个运算符(-差集 +并集 &交集 ^对称集):")
    def set_operation(setA,setB,symbol):
     if symbol=='&':
       print("交集:", setA & setB)
       print("交集:", setA.intersection(setB))	#求交集的函数	
     elif symbol=='+':
       print("并集:", setA | setA)
       print("并集:", setA.union(setA))			#求并集的函数
     elif symbol=='-':
       print("差集:", setA - setB)
       print("差集:", setA.difference(setB))		#求差集的函数	
     elif symbol=='^':
       print("对称差集:",setA ^ setB)
       print("对称差集:",setA.symmetric_difference(setB))	#求对称集的函数
     else:
        print("请重新输入运算符!")
    set_operation(A,B,s)
    

    题目二

    #1.编写函数实现输入任意键值均为数字的字典,可以返回按字典的键值升序排列的新字典。
    #如字典dict = {‘a’:1,‘b’:3,‘c’:2}
    #输出为[(‘a’, 1), (‘c’, 2), (‘b’, 3)];

    前提知识

    zip

    zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。

    我们可以使用 list() 转换来输出列表。

    如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 ***** 号操作符,可以将元组解压为列表。

    例子如下

    a = [1, 2, 3]
    b = [4, 5, 6]
    c = [4, 5, 9, 7, 8]
    zipped = zip(a, b)  # 返回一个对象
    list1=list(zipped)  # list() 转换为列表
    list2=list(zip(a, c))  # 元素个数与最短的列表一致
    print(list1)
    print(list2)
    a1, a2 = zip(*zip(a, b))  # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
    list3=list(a1)
    list4=list(a2)
    print(list3)
    print(list4)
    

    输出如下

    [(1, 4), (2, 5), (3, 6)]
    [(1, 4), (2, 5), (3, 9)]
    [1, 2, 3]
    [4, 5, 6]
    

    代码如下

import operator
A=set(input("请重输入Key:").split())
B=set(input("请重输入value:").split())
def dictionary_Order(ListA,ListB):
 mydict = dict(zip(ListA,ListB))    #把他们组合成一个新的字典
 print(mydict)                      #输出这个组合后的字典
 after_ordering=sorted(mydict.items(),key=operator.itemgetter(1))
 #operator.intemgetter是第一个域的
 print(after_ordering)

dictionary_Order(A,B)

题目三

定义Circle(圆)类,成员包括圆心位置、半径、颜色等属性。编写构造方法和其他方法,计算周长和面积。

class Circle:
    def __init__(self,site, radius, color):
        self.center = site
        self.radius = radius
        self.color = color
    def perimeter(self):#周长
        return 3.14 * 2 * self.radius
    def area(self):#面积
        return 3.14 * self.radius * self.radius
A=float(input("请输入半径:"))
circle = Circle((10,12),A,"绿色")
print(circle.perimeter())#周长
print(circle.area())#面积
print(circle.color)#颜色
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值