两个集合求并集以后,会返回一个新的集合,这个新集合中元素排列是按照什么规则进行的?
给的资料上是:
a = {1,3,’sxt’}
b = {‘he’,’it’,’sxt’}
求并集以后结果是:
{1,3,’sxt’, ‘he’,’it’}
我自己操作得到的结果不是这样,得到的结果是
{1,3,’it’, ‘he’,’sxt’}
在Python3.8和3.6版本都是这个结果,而不是资料上给的。
老师,我做练习的时候,遇到问题,我明明写了两个参数但是它提示我还少一个参数
# 定义战士类 class Warrior: def __init__(self): self.health = 50 self.attack = 5 self.is_alive = True # 定义骑士类 class Knight(Warrior): def __init__(self): super().__init__() self.attack = 7 # 定义军队 class Army: def __init__(self): self.arm = [] def add_units(self, soldier, number): for i in range(number): new_unit = soldier self.arm.append(new_unit) return self.arm # 定义战斗类 class Battle: def fight(self, armclass1, armclass2): arm1 = armclass1.arm arm2 = armclass2.arm while len(arm1) > 0 and len(arm2) > 0: if fight1(arm1[0], arm2[0]) == True: arm2.remove(arm2[0]) else: arm1.remove(arm1[0]) if len(arm1) > 0: return True else: return False def fight1(unit_1, unit_2): while unit_1.is_alive and unit_2.is_alive: unit_2.health -= unit_1.attack if unit_2.health <= 0: unit_2.is_alive = False break unit_1.health -= unit_2.attack if unit_1.health <= 0: unit_1.is_alive = False break return unit_1.is_alive if __name__ == '__main__': # battle tests my_army = Army() my_army.add_units(Knight, 3) enemy_army = Army() enemy_army.add_units(Warrior, 3) Battle.fight(my_army, enemy_army) army_3 = Army() army_3.add_units(Warrior, 20) army_3.add_units(Knight, 5) army_4 = Army() army_4.add_units(Warrior, 30) battle = Battle()
import copy a=[90,80,[6,7]] b=copy.copy(a) print("a",a) print("b",b) b.append(70) b[2].append(8) print("a",a) print("b",b)
为什么不对呀?
为什么运行错误呀?
a=[,,[,]] b=copy.copy(a) (,a) (,b) b.append() b[].append() (,a) (,b)
给的资料中指出访问元组时会返回元组对象,但是我自己在通过索引进行访问的时候发现,如 果只访问元组中的一个值的时候,并不会返回一个元组对象,而通过切片访问超过2个元组对象的时候才会返回元组对象,请问是我哪里理解的有问题吗?
老师,在pycharm中画完之后马上图就消失了,有没有办法让图一直停留?
运行输入idle,显示windows找不到idle
class Employee : id=1000 def __init__(self,name,salary): Employee.id += 1 #这行为什么不能是self,为什么这样能实现加employee指的是什么 self.name=name self.__salary=salary
import math def f(x1,y1,x2,y2,x3,y3): '''输入三角形三个顶点的坐标,若有效则计算三角形的面积;如坐标无效,则给出提示''' a = math.sqrt((x1-x2)**2+(y1-y2)**2) b = math.sqrt((x1-x3)**2+(y1-y3)**2) c = math.sqrt((x3-x2)**2+(y3-y2)**2) if a+b>c and a+c>b and b+c>a: print('为三角形') s = (1/2)*(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2) print('三角形面积为{0:.2f}'.format(s)) else: print('不是三角形') f(0,0,4,8,6,5)
运行结果:
为三角形 三角形面积为-14.00
请问:这个作业中,输入有效坐标后可能会出现负数,代码如何改进呢?谢谢老师
为什么用pycharm 运行不了turtle的运行图
构造函数 __init__本质上不是对应__new__方法吗?这样有点难理解,麻烦老师解答一下。
老师,这样是什么意思,全局变量是直接可以在函数内引用是吗?
全局变量局部变量.png
class Man: pass class Chinese(Man): def eat(self): print("中国人用筷子吃饭") class English(Man): def eat(self): print("英国人用叉子吃饭") class Indian(Man): def eat(self): print("印度人用手吃饭") def maneat(m): if isinstance(m,Man): m.eat() else: print("不能吃饭") maneat(Chinese()) maneat(English()) maneat(Indian())
老师说多态的存在有两个必要条件,是继承和方法的重写。在这里我的每一个子类都没有对父类方法进行重写,但运行起来和老师的效果一样。我写出来的还算不算是多态?感觉这里写的多态貌似没什么意义啊。精华就在m.eat()这一句,而m是我们传进去的类名。“类名.方法名”,这样的语句不就是直接限定了执行eat方法的位置嘛。我觉得甚至连父类都不需要有,两个必要条件里我连继承都不需要继承,我直接就能达到所谓多态的效果。呃,所以多态到底干了个啥。我留下了不学无术的泪水QAQ。求老师点拨。谢谢
class Chinese: def eat(self): print("中国人用筷子吃饭") class English: def eat(self): print("英国人用叉子吃饭") class Indian: def eat(self): print("印度人用手吃饭") def maneat(m): m.eat() maneat(Chinese()) maneat(English()) maneat(Indian())
看我改成这个样子多爽,两个必要条件:继承和方法重写,我都不要了。一样能实现“多态”的功能。
class Person: def work(self): print("努力上班") def play_game(s): print("{0}在玩游戏".format(s)) def work2(a): print("好好工作,努力上班,赚大钱,娶媳妇!") Person.play=play_game Person.work=work2 p1=Person() p1.play() p1.work()
老师,我和老师一样把这个代码写了一下,发现倒数第二行p1.play()中的函数名play被涂成了黄色,视频中老师的代码也是黄色的,看着好别扭,为什么pycharm会把这个函数名标成黄色?求解答
老师,我的help函数无法正常使用,能帮我看看怎么回事吗?
函数.PNG
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637