1. # 用井字符开头的是单行注释
  2.  
  3. """ 多行字符串用三个引号
  4. 包裹,也常被用来做多
  5. 行注释
  6. """
  7.  
  8. ####################################################
  9. ## 1. 原始数据类型和运算符
  10. ####################################################
  11.  
  12. # 整数
  13. 3 # => 3
  14.  
  15. # 算术没有什么出乎意料的
  16. 1 + 1 # => 2
  17. 8 - 1 # => 7
  18. 10 * 2 # => 20
  19.  
  20. # 但是除法例外,会自动转换成浮点数
  21. 35 / 5 # => 7.0
  22. 5 / 3 # => 1.6666666666666667
  23.  
  24. # 整数除法的结果都是向下取整
  25. 5 // 3 # => 1
  26. 5.0 // 3.0 # => 1.0 # 浮点数也可以
  27. -5 // 3 # => -2
  28. -5.0 // 3.0 # => -2.0
  29.  
  30. # 浮点数的运算结果也是浮点数
  31. 3 * 2.0 # => 6.0
  32.  
  33. # 模除
  34. 7 % 3 # => 1
  35.  
  36. # x的y次方
  37. 2**4 # => 16
  38.  
  39. # 用括号决定优先级
  40. (1 + 3) * 2 # => 8
  41.  
  42. # 布尔值
  43. True
  44. False
  45.  
  46. # 用not取非
  47. not True # => False
  48. not False # => True
  49.  
  50. # 逻辑运算符,注意and和or都是小写
  51. True and False # => False
  52. False or True # => True
  53.  
  54. # 整数也可以当作布尔值
  55. 0 and 2 # => 0
  56. -5 or 0 # => -5
  57. 0 == False # => True
  58. 2 == True # => False
  59. 1 == True # => True
  60.  
  61. # 用==判断相等
  62. 1 == 1 # => True
  63. 2 == 1 # => False
  64.  
  65. # 用!=判断不等
  66. 1 != 1 # => False
  67. 2 != 1 # => True
  68.  
  69. # 比较大小
  70. 1 < 10 # => True
  71. 1 > 10 # => False
  72. 2 <= 2 # => True
  73. 2 >= 2 # => True
  74.  
  75. # 大小比较可以连起来!
  76. 1 < 2 < 3 # => True
  77. 2 < 3 < 2 # => False
  78.  
  79. # 字符串用单引双引都可以
  80. "这是个字符串"
  81. '这也是个字符串'
  82.  
  83. # 用加号连接字符串
  84. "Hello " + "world!" # => "Hello world!"
  85.  
  86. # 字符串可以被当作字符列表
  87. "This is a string"[0] # => 'T'
  88.  
  89. # 用.format来格式化字符串
  90. "{} can be {}".format("strings", "interpolated")
  91.  
  92. # 可以重复参数以节省时间
  93. "{0} be nimble, {0} be quick, {0} jump over the {1}".format("Jack", "candle stick")
  94. # => "Jack be nimble, Jack be quick, Jack jump over the candle stick"
  95.  
  96. # 如果不想数参数,可以用关键字
  97. "{name} wants to eat {food}".format(name="Bob", food="lasagna")
  98. # => "Bob wants to eat lasagna"
  99.  
  100. # 如果你的Python3程序也要在Python2.5以下环境运行,也可以用老式的格式化语法
  101. "%s can be %s the %s way" % ("strings", "interpolated", "old")
  102.  
  103. # None是一个对象
  104. None # => None
  105.  
  106. # 当与None进行比较时不要用 ==,要用is。is是用来比较两个变量是否指向同一个对象。
  107. "etc" is None # => False
  108. None is None # => True
  109.  
  110. # None,0,空字符串,空列表,空字典都算是False
  111. # 所有其他值都是True
  112. bool(0) # => False
  113. bool("") # => False
  114. bool([]) # => False
  115. bool({}) # => False
  116.  
  117. ####################################################
  118. ## 2. 变量和集合
  119. ####################################################
  120.  
  121. # print是内置的打印函数
  122. print("I'm Python. Nice to meet you!")
  123.  
  124. # 在给变量赋值前不用提前声明
  125. # 传统的变量命名是小写,用下划线分隔单词
  126. some_var = 5
  127. some_var # => 5
  128.  
  129. # 访问未赋值的变量会抛出异常
  130. # 参考流程控制一段来学习异常处理
  131. some_unknown_var # 抛出NameError
  132.  
  133. # 用列表(list)储存序列
  134. li = []
  135. # 创建列表时也可以同时赋给元素
  136. other_li = [4, 5, 6]
  137.  
  138. # 用append在列表最后追加元素
  139. li.append(1) # li现在是[1]
  140. li.append(2) # li现在是[1, 2]
  141. li.append(4) # li现在是[1, 2, 4]
  142. li.append(3) # li现在是[1, 2, 4, 3]
  143. # 用pop从列表尾部删除
  144. li.pop() # => 3 且li现在是[1, 2, 4]
  145. # 把3再放回去
  146. li.append(3) # li变回[1, 2, 4, 3]
  147.  
  148. # 列表存取跟数组一样
  149. li[0] # => 1
  150. # 取出最后一个元素
  151. li[-1] # => 3
  152.  
  153. # 越界存取会造成IndexError
  154. li[4] # 抛出IndexError
  155.  
  156. # 列表有切割语法
  157. li[1:3] # => [2, 4]
  158. # 取尾
  159. li[2:] # => [4, 3]
  160. # 取头
  161. li[:3] # => [1, 2, 4]
  162. # 隔一个取一个
  163. li[::2] # =>[1, 4]
  164. # 倒排列表
  165. li[::-1] # => [3, 4, 2, 1]
  166. # 可以用三个参数的任何组合来构建切割
  167. # li[始:终:步伐]
  168.  
  169. # 用del删除任何一个元素
  170. del li[2] # li is now [1, 2, 3]
  171.  
  172. # 列表可以相加
  173. # 注意:li和other_li的值都不变
  174. li + other_li # => [1, 2, 3, 4, 5, 6]
  175.  
  176. # 用extend拼接列表
  177. li.extend(other_li) # li现在是[1, 2, 3, 4, 5, 6]
  178.  
  179. # 用in测试列表是否包含值
  180. 1 in li # => True
  181.  
  182. # 用len取列表长度
  183. len(li) # => 6
  184.  
  185. # 元组是不可改变的序列
  186. tup = (1, 2, 3)
  187. tup[0] # => 1
  188. tup[0] = 3 # 抛出TypeError
  189.  
  190. # 列表允许的操作元组大都可以
  191. len(tup) # => 3
  192. tup + (4, 5, 6) # => (1, 2, 3, 4, 5, 6)
  193. tup[:2] # => (1, 2)
  194. 2 in tup # => True
  195.  
  196. # 可以把元组合列表解包,赋值给变量
  197. a, b, c = (1, 2, 3) # 现在a是1,b是2,c是3
  198. # 元组周围的括号是可以省略的
  199. d, e, f = 4, 5, 6
  200. # 交换两个变量的值就这么简单
  201. e, d = d, e # 现在d是5,e是4
  202.  
  203. # 用字典表达映射关系
  204. empty_dict = {}
  205. # 初始化的字典
  206. filled_dict = {"one": 1, "two": 2, "three": 3}
  207.  
  208. # 用[]取值
  209. filled_dict["one"] # => 1
  210.  
  211. # 用 keys 获得所有的键。
  212. # 因为 keys 返回一个可迭代对象,所以在这里把结果包在 list 里。我们下面会详细介绍可迭代。
  213. # 注意:字典键的顺序是不定的,你得到的结果可能和以下不同。
  214. list(filled_dict.keys()) # => ["three", "two", "one"]
  215.  
  216. # 用values获得所有的值。跟keys一样,要用list包起来,顺序也可能不同。
  217. list(filled_dict.values()) # => [3, 2, 1]
  218.  
  219. # 用in测试一个字典是否包含一个键
  220. "one" in filled_dict # => True
  221. 1 in filled_dict # => False
  222.  
  223. # 访问不存在的键会导致KeyError
  224. filled_dict["four"] # KeyError
  225.  
  226. # 用get来避免KeyError
  227. filled_dict.get("one") # => 1
  228. filled_dict.get("four") # => None
  229. # 当键不存在的时候get方法可以返回默认值
  230. filled_dict.get("one", 4) # => 1
  231. filled_dict.get("four", 4) # => 4
  232.  
  233. # setdefault方法只有当键不存在的时候插入新值
  234. filled_dict.setdefault("five", 5) # filled_dict["five"]设为5
  235. filled_dict.setdefault("five", 6) # filled_dict["five"]还是5
  236.  
  237. # 字典赋值
  238. filled_dict.update({"four":4}) # => {"one": 1, "two": 2, "three": 3, "four": 4}
  239. filled_dict["four"] = 4 # 另一种赋值方法
  240.  
  241. # 用del删除
  242. del filled_dict["one"] # 从filled_dict中把one删除
  243.  
  244. # 用set表达集合
  245. empty_set = set()
  246. # 初始化一个集合,语法跟字典相似。
  247. some_set = {1, 1, 2, 2, 3, 4} # some_set现在是{1, 2, 3, 4}
  248.  
  249. # 可以把集合赋值于变量
  250. filled_set = some_set
  251.  
  252. # 为集合添加元素
  253. filled_set.add(5) # filled_set现在是{1, 2, 3, 4, 5}
  254.  
  255. # & 取交集
  256. other_set = {3, 4, 5, 6}
  257. filled_set & other_set # => {3, 4, 5}
  258.  
  259. # | 取并集
  260. filled_set | other_set # => {1, 2, 3, 4, 5, 6}
  261.  
  262. # - 取补集
  263. {1, 2, 3, 4} - {2, 3, 5} # => {1, 4}
  264.  
  265. # in 测试集合是否包含元素
  266. 2 in filled_set # => True
  267. 10 in filled_set # => False
  268.  
  269. ####################################################
  270. ## 3. 流程控制和迭代器
  271. ####################################################
  272.  
  273. # 先随便定义一个变量
  274. some_var = 5
  275.  
  276. # 这是个if语句。注意缩进在Python里是有意义的
  277. # 印出"some_var比10小"
  278. if some_var > 10:
  279. print("some_var比10大")
  280. elif some_var < 10: # elif句是可选的
  281. print("some_var比10小")
  282. else: # else也是可选的
  283. print("some_var就是10")
  284.  
  285. """
  286. 用for循环语句遍历列表
  287. 打印:
  288. dog is a mammal
  289. cat is a mammal
  290. mouse is a mammal
  291. """
  292. for animal in ["dog", "cat", "mouse"]:
  293. print("{} is a mammal".format(animal))
  294.  
  295. """
  296. "range(number)"返回数字列表从0到给的数字
  297. 打印:
  298. 0
  299. 1
  300. 2
  301. 3
  302. """
  303. for i in range(4):
  304. print(i)
  305.  
  306. """
  307. while循环直到条件不满足
  308. 打印:
  309. 0
  310. 1
  311. 2
  312. 3
  313. """
  314. x = 0
  315. while x < 4:
  316. print(x)
  317. x += 1 # x = x + 1 的简写
  318.  
  319. # 用try/except块处理异常状况
  320. try:
  321. # 用raise抛出异常
  322. raise IndexError("This is an index error")
  323. except IndexError as e:
  324. pass # pass是无操作,但是应该在这里处理错误
  325. except (TypeError, NameError):
  326. pass # 可以同时处理不同类的错误
  327. else: # else语句是可选的,必须在所有的except之后
  328. print("All good!") # 只有当try运行完没有错误的时候这句才会运行
  329.  
  330. # Python提供一个叫做可迭代(iterable)的基本抽象。一个可迭代对象是可以被当作序列
  331. # 的对象。比如说上面range返回的对象就是可迭代的。
  332.  
  333. filled_dict = {"one": 1, "two": 2, "three": 3}
  334. our_iterable = filled_dict.keys()
  335. print(our_iterable) # => dict_keys(['one', 'two', 'three']),是一个实现可迭代接口的对象
  336.  
  337. # 可迭代对象可以遍历
  338. for i in our_iterable:
  339. print(i) # 打印 one, two, three
  340.  
  341. # 但是不可以随机访问
  342. our_iterable[1] # 抛出TypeError
  343.  
  344. # 可迭代对象知道怎么生成迭代器
  345. our_iterator = iter(our_iterable)
  346.  
  347. # 迭代器是一个可以记住遍历的位置的对象
  348. # 用__next__可以取得下一个元素
  349. our_iterator.__next__() # => "one"
  350.  
  351. # 再一次调取__next__时会记得位置
  352. our_iterator.__next__() # => "two"
  353. our_iterator.__next__() # => "three"
  354.  
  355. # 当迭代器所有元素都取出后,会抛出StopIteration
  356. our_iterator.__next__() # 抛出StopIteration
  357.  
  358. # 可以用list一次取出迭代器所有的元素
  359. list(filled_dict.keys()) # => Returns ["one", "two", "three"]
  360.  
  361. ####################################################
  362. ## 4. 函数
  363. ####################################################
  364.  
  365. # 用def定义新函数
  366. def add(x, y):
  367. print("x is {} and y is {}".format(x, y))
  368. return x + y # 用return语句返回
  369.  
  370. # 调用函数
  371. add(5, 6) # => 印出"x is 5 and y is 6"并且返回11
  372.  
  373. # 也可以用关键字参数来调用函数
  374. add(y=6, x=5) # 关键字参数可以用任何顺序
  375.  
  376. # 我们可以定义一个可变参数函数
  377. def varargs(*args):
  378. return args
  379.  
  380. varargs(1, 2, 3) # => (1, 2, 3)
  381.  
  382. # 我们也可以定义一个关键字可变参数函数
  383. def keyword_args(**kwargs):
  384. return kwargs
  385.  
  386. # 我们来看看结果是什么:
  387. keyword_args(big="foot", loch="ness") # => {"big": "foot", "loch": "ness"}
  388.  
  389. # 这两种可变参数可以混着用
  390. def all_the_args(*args, **kwargs):
  391. print(args)
  392. print(kwargs)
  393. """
  394. all_the_args(1, 2, a=3, b=4) prints:
  395. (1, 2)
  396. {"a": 3, "b": 4}
  397. """
  398.  
  399. # 调用可变参数函数时可以做跟上面相反的,用*展开序列,用**展开字典。
  400. args = (1, 2, 3, 4)
  401. kwargs = {"a": 3, "b": 4}
  402. all_the_args(*args) # 相当于 foo(1, 2, 3, 4)
  403. all_the_args(**kwargs) # 相当于 foo(a=3, b=4)
  404. all_the_args(*args, **kwargs) # 相当于 foo(1, 2, 3, 4, a=3, b=4)
  405.  
  406. # 函数作用域
  407. x = 5
  408.  
  409. def setX(num):
  410. # 局部作用域的x和全局域的x是不同的
  411. x = num # => 43
  412. print (x) # => 43
  413.  
  414. def setGlobalX(num):
  415. global x
  416. print (x) # => 5
  417. x = num # 现在全局域的x被赋值
  418. print (x) # => 6
  419.  
  420. setX(43)
  421. setGlobalX(6)
  422.  
  423. # 函数在Python是一等公民
  424. def create_adder(x):
  425. def adder(y):
  426. return x + y
  427. return adder
  428.  
  429. add_10 = create_adder(10)
  430. add_10(3) # => 13
  431.  
  432. # 也有匿名函数
  433. (lambda x: x > 2)(3) # => True
  434.  
  435. # 内置的高阶函数
  436. map(add_10, [1, 2, 3]) # => [11, 12, 13]
  437. filter(lambda x: x > 5, [3, 4, 5, 6, 7]) # => [6, 7]
  438.  
  439. # 用列表推导式可以简化映射和过滤。列表推导式的返回值是另一个列表。
  440. [add_10(i) for i in [1, 2, 3]] # => [11, 12, 13]
  441. [x for x in [3, 4, 5, 6, 7] if x > 5] # => [6, 7]
  442.  
  443. ####################################################
  444. ## 5. 类
  445. ####################################################
  446.  
  447. # 定义一个继承object的类
  448. class Human(object):
  449.  
  450. # 类属性,被所有此类的实例共用。
  451. species = "H. sapiens"
  452.  
  453. # 构造方法,当实例被初始化时被调用。注意名字前后的双下划线,这是表明这个属
  454. # 性或方法对Python有特殊意义,但是允许用户自行定义。你自己取名时不应该用这
  455. # 种格式。
  456. def __init__(self, name):
  457. # Assign the argument to the instance's name attribute
  458. self.name = name
  459.  
  460. # 实例方法,第一个参数总是self,就是这个实例对象
  461. def say(self, msg):
  462. return "{name}: {message}".format(name=self.name, message=msg)
  463.  
  464. # 类方法,被所有此类的实例共用。第一个参数是这个类对象。
  465. @classmethod
  466. def get_species(cls):
  467. return cls.species
  468.  
  469. # 静态方法。调用时没有实例或类的绑定。
  470. @staticmethod
  471. def grunt():
  472. return "*grunt*"
  473.  
  474. # 构造一个实例
  475. i = Human(name="Ian")
  476. print(i.say("hi")) # 印出 "Ian: hi"
  477.  
  478. j = Human("Joel")
  479. print(j.say("hello")) # 印出 "Joel: hello"
  480.  
  481. # 调用一个类方法
  482. i.get_species() # => "H. sapiens"
  483.  
  484. # 改一个共用的类属性
  485. Human.species = "H. neanderthalensis"
  486. i.get_species() # => "H. neanderthalensis"
  487. j.get_species() # => "H. neanderthalensis"
  488.  
  489. # 调用静态方法
  490. Human.grunt() # => "*grunt*"
  491.  
  492. ####################################################
  493. ## 6. 模块
  494. ####################################################
  495.  
  496. # 用import导入模块
  497. import math
  498. print(math.sqrt(16)) # => 4.0
  499.  
  500. # 也可以从模块中导入个别值
  501. from math import ceil, floor
  502. print(ceil(3.7)) # => 4.0
  503. print(floor(3.7)) # => 3.0
  504.  
  505. # 可以导入一个模块中所有值
  506. # 警告:不建议这么做
  507. from math import *
  508.  
  509. # 如此缩写模块名字
  510. import math as m
  511. math.sqrt(16) == m.sqrt(16) # => True
  512.  
  513. # Python模块其实就是普通的Python文件。你可以自己写,然后导入,
  514. # 模块的名字就是文件的名字。
  515.  
  516. # 你可以这样列出一个模块里所有的值
  517. import math
  518. dir(math)
  519.  
  520. ####################################################
  521. ## 7. 高级用法
  522.  
  523. ####################################################
  524.  
  525. # 用生成器(generators)方便地写惰性运算
  526. def double_numbers(iterable):
  527. for i in iterable:
  528. yield i + i
  529.  
  530. # 生成器只有在需要时才计算下一个值。它们每一次循环只生成一个值,而不是把所有的
  531. # 值全部算好。
  532. #
  533. # range的返回值也是一个生成器,不然一个1到900000000的列表会花很多时间和内存。
  534. #
  535. # 如果你想用一个Python的关键字当作变量名,可以加一个下划线来区分。
  536. range_ = range(1, 900000000)
  537. # 当找到一个 >=30 的结果就会停
  538. # 这意味着 `double_numbers` 不会生成大于30的数。
  539. for i in double_numbers(range_):
  540. print(i)
  541. if i >= 30:
  542. break
  543.  
  544. # 装饰器(decorators)
  545. # 这个例子中,beg装饰say
  546. # beg会先调用say。如果返回的say_please为真,beg会改变返回的字符串。
  547. from functools import wraps
  548.  
  549. def beg(target_function):
  550. @wraps(target_function)
  551. def wrapper(*args, **kwargs):
  552. msg, say_please = target_function(*args, **kwargs)
  553. if say_please:
  554. return "{} {}".format(msg, "Please! I am poor :(")
  555. return msg
  556.  
  557. return wrapper
  558.  
  559. @beg
  560. def say(say_please=False):
  561. msg = "Can you buy me a beer?"
  562. return msg, say_please
  563.  
  564. print(say()) # Can you buy me a beer?
  565. print(say(say_please=True)) # Can you buy me a beer? Please! I am poor :(

参考: https://learnxinyminutes.com/docs/zh-cn/python3-cn/

X分钟速成Y (其中Y=Python3)的更多相关文章

  1. 学习笔记之X分钟速成Python3

    X分钟速成Python3 https://mp.weixin.qq.com/s/QT5sR0nUKgJYsYgrj2SleA https://learnxinyminutes.com/docs/zh- ...

  2. pageX/Y, offset(), position(), scrollTop(), screenX/Y, clientX/Y, pageX/Y

    event.pageX get mouse position Description: The mouse position relative to the left edge of the docu ...

  3. x+y = ((x&y)<<1) + (x^y) 证明

    法一:我们考虑x,y在二进制表示时候,按位相加其中第i位xi+yi = ((xi&yi)<<1) + (xi^yi)其中(xi&yi)<<1表示当xi和yi都是 ...

  4. (x&y) + ((x^y)>>1)即x和y的算数平均值

    (x&y) + ((x^y)>>1)相当于(x+y)/2 (x&y)+((x^y)>>1),把x和y里对应的每一位(指二进制位)都分成三类,每一类分别计算平均值 ...

  5. 原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y【转】

    关于js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种 event.clientX/Y event.pageX/Y event.offsetX/Y event.layerX/Y event.sc ...

  6. 给定表达式[x/2] + y + x * y, 其中x,y都是正整数。

    改进了一下,不过还是要十多秒吧. package com.boco.study; import java.math.BigDecimal; import java.util.Calendar; imp ...

  7. clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y ,offsetTop,offsetLeft 详解

    clientX/Y: clientX/Y获取到的是触发点相对浏览器可视区域左上角距离,不随页面滚动而改变 兼容性:所有浏览器均支持 pageX/Y: pageX/Y获取到的是触发点相对文档区域左上角距 ...

  8. 关于(x&y)+((x^y)>>1)的探究

    今天在程序员面试宝典上看到 int f(int x int y ) { return (x&y)+((x^y)>>1) } f(729,271) 结果为500 从式子中可以看出分为 ...

  9. 不可表示的数[x/2] + y + x * y

    前端是时间在庞果网上看到不可表示的数的编程题(如下),我自己也试着解答了一下,写的算法虽然没有没有错,但是跑了一些还只是跑到a8,后来到自己整理一下网上的解答过程,虽然解答写的很清晰,但是有些知识还是 ...

  10. 原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y

    关于js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种 event.clientX/Y event.pageX/Y event.offsetX/Y event.layerX/Y event.sc ...

随机推荐

  1. D2欧拉路,拓扑排序,和差分约束

    第一题:太鼓达人:BZOJ3033 题意:给出k,求一个最长的M位01串,使其从每一个位置向后走k个得到 的M个k位01串互不相同(最后一个和第一个相邻,即是一个环).输出 字典序最小的答案. 2 ≤ ...

  2. SQLServer “无法对数据库'XX' 执行删除,因为它正用于复制”的解决方法

    修改数据库某个字段的长度时出现: “无法修改表.无法对 表'dbo.N_Client_content' 执行 删除,因为它正用于复制.” 不能直接对该数据库进行操作,通过alter 的办法来修改,问题 ...

  3. RabbitMQ&RocketMQ动态添加Queue参考

    Kafka重复消费与消息丢失参考: https://www.cnblogs.com/kaleidoscope/p/9763053.html https://blog.csdn.net/qingqing ...

  4. (转载)Unity3D开发之编辑器统一修改Text字体

    最近遇到一个需求,就是我们在做完一个场景后,美工感觉字体不好看,效果不是很好,想要换一种字体.UGUI的界面已经搭完,如果要一个一个Text寻找,工作量将是巨大.而且作为程序人员是不会容忍自己做这些机 ...

  5. spark生成大宽表的parquet性能优化

    1.  背景介绍 将一份数据量很大的用户属性文件解析成结构化的数据供查询框架查询剖析,其中用户属性包含用户标识,平台类型,性别,年龄,学历,兴趣爱好,购物倾向等等,大概共有七百个左右的标签属性.为了查 ...

  6. easyUI使用datagrid-detailview.js实现二级列表嵌套

    本文为博主原创,转载请注明: 在easyUI中使用datagrid-detailview.js可快速实现二级折叠列表,示例如下: 注意事项: 原本在谷歌浏览器进行示例测试的,url请求对应的json文 ...

  7. hduoj#1004 -Let the Balloon Rise [链表解法]

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1004 Problem Description Contest time again! How exci ...

  8. hdu 1895 Sum Zero hash

    Sum Zero Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Proble ...

  9. Ubuntu 停止 mydesktop 服务

    systemctl list-unit-files | grep mydesktop systemctl disable mydesktop.service

  10. word常用功能

    1. 安装office2013 cn_office_professional_plus_2013_x86_dvd_1134005 密钥激活 (1)用专用软件彻底卸载原来的 (2)安装 (3)用暴风激活 ...