grow函数Python grow growth

用python做一个地球围绕太阳转的图形

平台: python2.7.10 + wxpython 3.0.2

成都创新互联公司是一家专注于网站建设、成都网站制作与策划设计,凤泉网站建设哪家好?成都创新互联公司做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:凤泉等地区。凤泉做网站价格咨询:18980820575

#!/usr/bin/env python

#-*- coding: utf-8 -*-

from __future__ import unicode_literals

import wx

__version__ = '0.1'

app_title = 'Temperature Translator - {}'.format(__version__)

class TempTranslator(wx.Frame):

def __init__(self, parent=None, size=(620, 200), title=app_title):

super(TempTranslator, self).__init__(parent, size=size, title=title)

self.SetMinSize(self.GetSize())

self.panel = wx.Panel(self)

self.init_layout()

self.panel.Layout()

self.Centre(wx.BOTH)

self.Show()

def init_layout(self):

font = self.GetFont()

font.SetWeight(wx.BOLD)

font.SetPointSize(15)

self.panel.SetFont(font)

vbox = wx.BoxSizer(wx.VERTICAL)

self.add_label(vbox, f2c=True)

self.f_tc1, self.c_tc1 = self.add_input(vbox, f2c=True)

self.f_tc1.Bind(wx.EVT_TEXT, self.on_f_text)

line = wx.StaticLine(self.panel, -1, style=wx.LI_HORIZONTAL)

style = wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.RIGHT | wx.TOP

vbox.Add(line, 0, style, 5)

self.add_label(vbox, f2c=False)

self.c_tc2, self.f_tc2 = self.add_input(vbox, f2c=False)

self.c_tc2.Bind(wx.EVT_TEXT, self.on_c_text)

self.panel.SetSizer(vbox)

def add_label(self, vbox, f2c=True):

if f2c:

text1 = 'Fahrenheit'

text2 = 'Celsius'

else:

text1 = 'Celsius'

text2 = 'Fahrenheit'

hbox = wx.BoxSizer(wx.HORIZONTAL)

label = wx.StaticText(self.panel, -1, text1, size=(-1, 30),

style=wx.ALIGN_CENTER)

hbox.Add(label, 1, wx.EXPAND, 10)

label = wx.StaticText(self.panel, -1, text2, size=(-1, 30),

style=wx.ALIGN_CENTER)

hbox.Add(label, 1, wx.EXPAND, 10)

vbox.Add(hbox, 0, wx.EXPAND, 10)

def add_input(self, vbox, f2c=True):

hbox = wx.BoxSizer(wx.HORIZONTAL)

tc1 = wx.TextCtrl(self.panel, -1, size=(260, 40), style=wx.TE_CENTER)

tc1.Bind(wx.EVT_TEXT, self.on_f_text)

label = wx.StaticText(self.panel, -1, ' = ')

tc2 = wx.TextCtrl(self.panel, -1, size=(260, 40), style=wx.TE_CENTER)

hbox.Add(tc1, 1, wx.EXPAND, 10)

hbox.Add(label, 0, wx.ALL | wx.EXPAND, 10)

hbox.Add(tc2, 1, wx.EXPAND, 10)

vbox.Add(hbox, 1, wx.EXPAND, 10)

return tc1, tc2

def on_f_text(self, evt):

f = self.f_tc1.GetValue()

self.c_tc1.SetValue('{}'.format(self.f2c(f)))

def on_c_text(self, evt):

c = self.c_tc2.GetValue()

self.f_tc2.SetValue('{}'.format(self.c2f(c)))

def f2c(self, f):

return (float(f) - 32) / 1.8 if f else ''

def c2f(self, c):

return float(c) * 1.8 + 32 if c else ''

if __name__ == '__main__':

app = wx.App()

TempTranslator()

app.MainLoop()

定义一个tree类,有成员ages,成员函数grow(int years)对ages加上years,age()显示tree对象的ages的值

#include "stdafx.h"

#include iostream

using namespace std;

class tree

{

public:

tree(int age){ages=age;}

virtual ~tree(){}

int grow(int years){ages+=years;return ages;}

void age(){cout"这棵树的年龄是"agesendl;}

private:

int ages;

};

int main(int argc, char* argv[])

{

printf("Hello World!\n");

return 0;

}

python小游戏2048,上班摸鱼必备(附源码)

话不多说,直接上菜

为了方便大家copy,我就不分段解释了

import turtle, random

# 定义一个类,用来画除了数字方块之外的图形

class BackGround(turtle.Turtle):

def __init__(self):

    super().__init__()

    self.penup()

    self.ht()

def draw_block(self):

    self.shape('bg.gif')  # 画出背景方块

    for i in allpos:

        self.goto(i)

        self.stamp()

    self.color('white', 'white')  # 画出其他背景

    self.goto(-215, 120)

    self.begin_fill()

    self.goto(215, 120)

    self.goto(215, 110)

    self.goto(-215, 110)

    self.end_fill()

    self.shape('title.gif')

    self.goto(-125, 210)

    self.stamp()

    self.shape('score.gif')

    self.goto(125, 245)

    self.stamp()

    self.shape('top_score.gif')

    self.goto(125, 170)

    self.stamp()

# 游戏失败及达成2048的提示文字

def judge(self):

    global flag_win, flag_win_lose_text

    self.color('blue')

    judge = 0  # 判断是否还有位置可以移动

    for i in block_dic.values():

        for j in block_dic.values():

            if i.num == 0 or i.num == j.num and i.distance(j) == 100:

                judge += 1

    if judge == 0:  # 无位置可移动,游戏失败

        self.write('    GAME OVER\n重新开始请按空格键', align='center', font=('黑体', 30, 'bold'))

        flag_win_lose_text = False

    if flag_win is True:  # 此条件让2048达成的判断只能进行一次

        for k in block_dic.values():

            if k.num == 2048:  # 游戏达成

                flag_win = False

                self.write('    达成2048\n继续游戏请按回车键', align='center', font=('黑体', 30, 'bold'))

                flag_win_lose_text = False

def win_lose_clear(self):

    global flag_win_lose_text

    self.clear()

    flag_win_lose_text = True

def show_score(self):  # 分值的显示

    global score, top_score

    if score top_score:

        top_score = score

        with open('.\\score.txt', 'w') as f:

            f.write(f'{top_score}')

    self.color('white')

    self.goto(125, 210)

    self.clear()

    self.write(f'{score}', align='center', font=('Arial', 20, 'bold'))

    self.goto(125, 135)

    self.write(f'{top_score}', align='center', font=('Arial', 20, 'bold'))

# 数字方块类

class Block(turtle.Turtle):

def __init__(self):

    super().__init__()

    self.ht()

    self.penup()

    self.num = 0

def draw(self):

    self.clear()

    dic_draw = {2: '#eee6db', 4: '#efe0cd', 8: '#f5af7b',

                16: '#fb9660', 32: '#f57d5a', 64: '#f95c3d',

                128: '#eccc75', 256: '#eece61', 512: '#efc853',

                1024: '#ebc53c', 2048: '#eec430', 4096: '#aeb879',

                8192: '#aab767', 16384: '#a6b74f'}

    if self.num 0:  # 数字大于0,画出方块

        self.color(f'{dic_draw[self.num]}')  # 选择颜色

        self.begin_fill()

        self.goto(self.xcor()+48, self.ycor()+48)

        self.goto(self.xcor()-96, self.ycor())

        self.goto(self.xcor(), self.ycor()-96)

        self.goto(self.xcor()+96, self.ycor())

        self.goto(self.xcor(), self.ycor()+96)

        self.end_fill()

        self.goto(self.xcor()-48, self.ycor()-68)

        if self.num 4:  # 按照数字选择数字的颜色

            self.color('white')

        else:

            self.color('#6d6058')

        self.write(f'{self.num}', align='center', font=('Arial', 27, 'bold'))

        self.goto(self.xcor(), self.ycor()+20)

class Game():

def init(self):

    back = BackGround()  # 实例画出游戏的背景

    back.draw_block()

    for i in allpos:  # 画出16个海龟对应16个数字块

        block = Block()

        block.goto(i)

        block_dic[i] = block

    game.grow()

def restart(self):  # 重开游戏的方法

    global score, flag_win_lose_text

    score = 0

    for i in block_dic.values():

        i.num = 0

        i.clear()

    win_lose_text.clear()

    game.grow()

    flag_win_lose_text = True  # 此flag为游戏达成或失败出现提示语后的判断,要提示语被clear后才能继续move

def grow(self):  # 随机出现一个2或4的数字块

    block_list = []

    for i in allpos:

        if block_dic[i].num == 0:

            block_list.append(block_dic[i])  # 挑出空白方块的海龟

    turtle_choice = random.choice(block_list)  # 随机选中其中一个海龟

    turtle_choice.num = random.choice([2, 2, 2, 2, 4])  # 赋属性num=2/4

    turtle_choice.draw()

    win_lose_text.judge()

    show_score_text.show_score()

    ms.update()

def move_up(self):

    allpos1 = allpos[::4]  # 切片为四列

    allpos2 = allpos[1::4]

    allpos3 = allpos[2::4]

    allpos4 = allpos[3::4]

    self.move_move(allpos1, allpos2, allpos3, allpos4)

def move_down(self):

    allpos1 = allpos[-4::-4]

    allpos2 = allpos[-3::-4]

    allpos3 = allpos[-2::-4]

    allpos4 = allpos[-1::-4]

    self.move_move(allpos1, allpos2, allpos3, allpos4)

def move_left(self):

    allpos1 = allpos[:4]

    allpos2 = allpos[4:8]

    allpos3 = allpos[8:12]

    allpos4 = allpos[12:16]

    self.move_move(allpos1, allpos2, allpos3, allpos4)

def move_right(self):

    allpos1 = allpos[-1:-5:-1]

    allpos2 = allpos[-5:-9:-1]

    allpos3 = allpos[-9:-13:-1]

    allpos4 = allpos[-13:-17:-1]

    self.move_move(allpos1, allpos2, allpos3, allpos4)

def move_move(self, allpos1, allpos2, allpos3, allpos4):

    if flag_win_lose_text is True:

        count1 = self.move(allpos1)  # 四列或四行依次移动

        count2 = self.move(allpos2)

        count3 = self.move(allpos3)

        count4 = self.move(allpos4)

        if count1 or count2 or count3 or count4:  # 判断是否有方块移动,有才能继续出现新的数字块

            self.grow()

def move(self, pos_list):

    num_list = []  # 为某一列或行的数字块海龟的坐标

    for i in pos_list:

        num_list.append(block_dic[i].num)  #  把这些海龟的NUM形成list

    new_num_list, count = self.list_oper(num_list)  #  只是list_oper的方法形成新的list

    for j in range(len(new_num_list)):  # 把新的list依次赋值给对应的海龟.num属性并调用draw()方法

        block_dic[pos_list[j]].num = new_num_list[j]

        block_dic[pos_list[j]].draw()

    return count

def list_oper(self, num_list):  # num_list的操作,假设其为【2,0,2,2】

    global score

    count = True

    temp = []

    new_temp = []

    for j in num_list:

        if j != 0:

            temp.append(j)  # temp=[2,2,2]

    flag = True

    for k in range(len(temp)):

        if flag:

            if k len(temp)-1 and temp[k] == temp[k+1]:

                new_temp.append(temp[k]*2)

                flag = False

                score += temp[k]

            else:

                new_temp.append(temp[k])  # new_temp=[4,2]

        else:

            flag = True

    for m in range(len(num_list)-len(new_temp)):

        new_temp.append(0)  # new_temp=[4,2,0,0]

    if new_temp == num_list:

        count = False  # 此变量判断num_list没有变化,数字块无移动

    return(new_temp, count)

if __name__ == '__main__':

ms = turtle.Screen()  # 主窗口的设置

ms.setup(430, 630, 400, 50)

ms.bgcolor('gray')

ms.title('2048')

ms.tracer(0)

ms.register_shape('bg.gif')

ms.register_shape('title.gif')

ms.register_shape('score.gif')

ms.register_shape('top_score.gif')

block_dic = {}  # 放数字方块海龟的字典,位置坐标为key,对应海龟为value

allpos = [(-150, 50), (-50, 50), (50, 50), (150, 50),

          (-150, -50), (-50, -50), (50, -50), (150, -50),

          (-150, -150), (-50, -150), (50, -150), (150, -150),

          (-150, -250), (-50, -250), (50, -250), (150, -250)]

flag_win = True  # 达成2048的判断,让达成的文字仅出现一次

flag_win_lose_text = True  # 用来判断失败或成功的提示文字是否有被清除,不清除不能继续移动方块

score = 0

with open('.\\score.txt', 'r') as f:

    top_score = int(f.read())  #  读取score中的数据

show_score_text = BackGround()

win_lose_text = BackGround()

game = Game()

game.init()

ms.listen()

ms.onkey(game.move_up, 'Up')

ms.onkey(game.move_down, 'Down')

ms.onkey(game.move_left, 'Left')

ms.onkey(game.move_right, 'Right')

ms.onkey(win_lose_text.win_lose_clear, 'Return')

ms.onkey(game.restart, 'space')

ms.mainloop()

这是游戏界面:

欢迎挑战最高分。

要运行出来,必须本地要有这些文件:bg.gif,score.gif,title.gif,top_score.gif,score.txt

我把这些文件放在了群里,还有一些学习的资料,群号642109462,欢迎对python感兴趣的进群讨论。

支持作者的,可以关注和点赞。感谢你们!

python 类定义

self,作用是绑定,表示对类的实例化对象的绑定。比如实例化你这的Node类,n=Node(),如果方法traverse括号内不加self,当n.traverse()在Python执行则会变成n=traverse(n),然后就会报错。所以在Python里必须加self绑定。

你也可以用其他的,比如其他语言里用this,但都得有这么个参数来占位作为绑定。

[],表示列表的特征符。

那么这里的[self]即是让实例化对象n经过traverse得到的结果或者表达式后再将其转为列表。

比如整形数1,2。当我们用中括号把其包围,[1,2],那么其就成了列表。就这么回事。

还可以这样:int(self),tuple(self)等的。

其实很简单,别看到self就被唬住了。

我建议还是多看看面相对象编程那一快

定义一个tree类,包括成员ages。成员函数grow(int years)对ages加上years,age()显示tree对象的ages的

我简单讲一下额,创建一个Tree这个类时 因为楼主你定义的类里面没有构造函数,系统会自动给你加一个默认构造函数Tree();所以当你定义Tree t1不带参数(也不能加括号)的时候是可以的,但是定义Tree t2(5)的时候楼主没有设置Tree (int)的构造函数 所以系统会出现编译错误;

t1.age(); //访问t1的成员函数age,作用就是输出“该树的年龄为: ”;

t1.grow(3); //访问t1的成员函数grow,传入参数3,是给t1这个对象设置年龄,并对他t1的私有数据ages进行处理 ages+=3;其实我不明白楼主定义的成员函数grow需要传一个整形的year,后又

cinyear 不明白什么意思???

由于没有要求输出t1的ages的值 并且去掉cinyear 这句话 所以输出:

该树的年龄为:

请输入年份: 3

该树的年龄为:

补充估计楼主的意思是想在grow的函数里面传入自己想要的参数 而且要能有输出数据 可以在类里面定义构造函数。

//#include "StdAfx.h"

#includeiostream

using namespace std;

class Tree

{

public:

Tree(int a ){ age=a;}

void grow(int years);

void age();

private:

int ages;

};

void Tree::grow(int years){

cout"请输入年份:"yearsendl;

//cinyears;

ages+=years;

}

void Tree::age()

{

cout"该树龄为:"agesendl;

}

int main()

{

Tree t1(5);

t1.age();

//t2.age();

t1.grow(3);

t1.age();

//t2.grow(2);

//t2.age();

system("pause");

return 0;

}

输出:

该树的年龄为:5

请输入年份: 3

该树的年龄为: 8


当前名称:grow函数Python grow growth
浏览路径:http://myzitong.com/article/hhdhod.html