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:考虑最小或者最大元素就是要交换的第一个元素或最后一个元素,否则交换的时候会出错