Day 1-开始记录的第一篇

Register关键字:

  暗示这个变量可能会经常使用,需要放进速度较快的寄存器中存取。

  但是有几点限制:

  1、register变量必须是能被CPU接受的类型

  2、register变量可能不放在内存中,所以不能用&来取地址

  3、register变量只能是局部自动变量和形式参数,其他如全局变量不行

  4、局部静态变量也不能定义为register变量

  5、不能定义任意多个register变量,因为寄存器有限,且有些寄存器只能存取特定类型的变量(比如字符型或者指针)

Auto关键字:

  当你不知道要定义的变量是什么类型是都可以用auto,但是必须初始化,一旦初始化赋值后,auto会根据赋值结果自动给变量分配类型

  exp:auto a = 10  //赋值完auto就把a的类型定为int了

#ifdef  #ifndef :

  C中的条件编译指令,满足条件才执行的预编译指令,主要是为了防止重复定义,python中没有这样的机制,可以试试用lambda函数设置条件

按位与&,按位或 |  按位异或 ^(就是两边先取反再或) 按位取反 ~   a<<4 左移4位  a >> 4右移四位

使用circle画圆形:

  导入Tkinter模块,Tkinter模块主要是提供展示,方位控制的小工具,包括了Tk ,框架,标签,文本,画布,按钮等

  调用了class Canvas(Widget, XView, YView),展示画布x,y的坐标,Wiget可以定义背景颜色,然后还有canvas.create_oval(x1,y1,x2,y2,...)画椭圆的坐标,反正我也不懂就一通操作

 

  

学用line画直线:

  遇到一个问题,import和 from import *有什么区别,因为如下图所示

  这种就是正确写法 

   这种就报错了               

 

  改成这样就对了,因为from import*导入的Canvas函数就是模块中的函数,而import的Canvas函数是未被定义的

  接下来我们再画直线调用canvas.create_line(x0,y0,x0,y1,fill = 'red'),同上面的椭圆类似,同理可以画方形,坐标以及大小需要控制,合理的话可以画出图案

 打印杨辉三角形(哇,蓝瘦)

from sys import stdout
if __name__ == '__main__':
    a = []
    for i in range(10):
        a.append([])
        for j in range(i+1):
           if j == 0 | j == i:
                a[i][j] = 1
           else:
               a[i][j] = a[i -1][j - 1] + a[i - 1][j]
    for i in range(10):
        for j in range(i+1):
            stdout.write(str(a[i][j]))
            stdout.write(' ')
        print

 然后就报错了:

Traceback (most recent call last):
  File "F:/Python100/zqxt061.py", line 14, in <module>
    a[i][j] = 1
IndexError: list assignment index out of range

Process finished with exit code 1

 因为定义列表a的时候是直接附了一个列表元素,而没有说明列表元素的大小,所以会报错下标越界,要先给列表元素定大小,然后才能通过下标直接赋值,修改如下:

if __name__ == '__main__':
    a = []
    for i in range(10):
        a.append([])
        for j in range(10):
            a[i].append(0)
    for i in range(10):
        a[i][0] = 1
        a[i][i] = 1
        for j in range(1,i):
            a[i][j] = a[i - 1][j-1] + a[i - 1][j]
    from sys import stdout
    for i in range(10):
        for j in range(i + 1):
            stdout.write(str(a[i][j]))
            stdout.write(' ')
        print
        

 数组最大元素和第一个元素交换,最小元素和最后一个元素进行交换:

def inp(numbers):
    for i in range(9):
        numbers.append(int(raw_input('Input a number:\n')))
def max_min(array):
    min = max = 0
    for i in range(1,len(array)):
        if array[min] > array[i]:
            min = i
        if array[max] < array[i]:
            max = i
    return min,max
def outp(array):
    for i in range(len(array)):
        print array[i],#加,print就不会换行了
if __name__ == '__main__':
    array = []
    inp(array)
    min,max = max_min(array)
    if max == len(array) - 1 & min == array[0]:#如果array[0]就是最小的,那之后换最小值的时候就会出错,所以要先进行判断
        array[min],array[max] = array[max],array[min]
    elif max != len(array) -1 & min == 0:
        array[len(array) - 1], array[min] = array[min], array[len(array) - 1]
        array[0], array[max] = array[max], array[0]
    else:
        array[0],array[max] = array[max],array[0]
        array[len(array) - 1],array[min] = array[min],array[len(array) - 1]
    outp(array)

 attention:考虑最小或者最大元素就是要交换的第一个元素或最后一个元素,否则交换的时候会出错

 

posted @ 2018-03-22 22:01  地上好凉啊  阅读(194)  评论(2编辑  收藏  举报