【读书笔记】python编程快速上手 --让繁琐工作自动化(一)(1-4章)

python编程快速上手 --让繁琐工作自动化

(第一部分 python编程基础)

第一章 python 基础

(略)

第二章 控制流

(略)

第三章 函数

异常处理

def spam(div):
	return 42/div

print(spam(2))
print(spam(12))
print(spam(0))
print(spam(7))

会报错,使用try的语句

def spam(divideBy):
    try:
        return 42/divideBy
    except ZeroDivisionError:
        print('Error:Invalid argument')
print(spam(2))
print(spam(12))
print(spam(0))
print(spam(3))

运行结果:
在这里插入图片描述
注意下面这个程序的结果不一样:

def spam(divideBy):
	return 42/divideBy
try:
		print(spam(2))
		print(spam(12))
		print(spam(0))
		print(spam(3))   
except ZeroDivisionError:
        print('Error:Invalid argument')

在这里插入图片描述
print(spam(3)) 这句话没有变执行,因为一旦执行跳到except子句的代码,就不会到try的语句。它会继续向下执行

一个小程序猜数字

import random
print("我心里有一个数,他在1-20之间")

sec=random.randint(1,20)
for i in range(1,7):
	print("请猜数")
	guess=int(input())

	if guess<sec:
		print("小了")
	elif guess>sec:
		print("大了")
	else:
		print("太棒了,你猜对了!")
		break

练习:
collatz:
输入验证

#Collatz序列
def clooatz(number):
    if number%2==0:
        print(str(number//2))
        return number//2
    else:
        print(str(3*number+1))
        return 3*number+1
try:
    number = int(input())
    while number!=1:
        number=clooatz(number)
except ValueError:
    print('your input must be intger!')

第四章 列表

列表

列表的引用,切片,连接

>>> sp=['ca','ds','da','ccc']
>>> print(sp[0])
ca
>>> print(sp[-1])
ccc
>>> print(sp[2:])
['da', 'ccc']
>>> sp=sp+['aa','bb']
>>> print(sp)
['ca', 'ds', 'da', 'ccc', 'aa', 'bb']

增:

>>> print(sp)
['ca', 'ds', 'da', 'aa', 'bb']
>>> sp.append('di')
>>> print(sp)
['ca', 'ds', 'da', 'aa', 'bb', 'di']
>>> sp.insert(2,'22')
>>> print(sp)
['ca', 'ds', '22', 'da', 'aa', 'bb', 'di']

删:

>>> print(sp)
['ca', 'ds', 'da', 'ccc', 'aa', 'bb']
>>> del sp[3]
>>> print(sp)
['ca', 'ds', 'da', 'aa', 'bb']
>>> sp=['ca', 'ds', '22', 'da', 'aa', 'bb', 'di']
>>> sp.remove('aa')
>>> print(sp)
['ca', 'ds', '22', 'da', 'bb', 'di']

改:

>>> print(sp)
['ca', 'ds', '22', 'da', 'bb', 'di']
>>> sp[1]='123'
>>> print(sp)
['ca', '123', '22', 'da', 'bb', 'di']

查:

 >>> print(sp)
['ca', '123', '22', 'da', 'bb', 'di']
>>> '123' in sp
True
>>> sp.index('di')
5
>>> sp.index('456')
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    sp.index('456')
ValueError: '456' is not in list

排序

>>> sp=[2,334,434,5,545,634,34,23]
>>> sp.sort()
>>> print(sp)
[2, 5, 23, 34, 334, 434, 545, 634]
>>> sp=['ca', 'ds', '22', 'da', 'aa', 'bb', 'di']
>>> sp.sort(reverse=True)
>>> print(sp)
['ds', 'di', 'da', 'ca', 'bb', 'aa', '22']

实践项目

逗号代码

假定有下面这样的列表:

spam=[‘apples’,‘bananas’,‘tofu’,’ cats’]

编写一个函数,它以一个列表值作为参数,返回一个字符串。该字符串包含所有表项,表项之间以逗号和空格分隔,并在最后一个表项之前插入 and 。例如,将前面的spam列表传递给函数,将返回’apples,bananas,tofu,and cats’。但是你的函数应该能够传递给它的任何列表。
我的代码:

spam=['apples','bananas','tofu','cats']

def new(sp):
    len1=len(sp)
    new=''
    for i in range(len1-1):
        new=new+','+sp[i]
    new=new[1:]+' and ' +sp[i+1]
    print(new)

new(spam)

字符图网格
假定有一个列表的列表,内层列表的每个值都是包含一个字符的字符串,像这样:

grid = [['.', '.', '.', '.', '.', '.'],
        ['.', 'O', 'O', '.', '.', '.'],
        ['O', 'O', 'O', 'O', '.', '.'],
        ['O', 'O', 'O', 'O', 'O', '.'],
        ['.', 'O', 'O', 'O', 'O', 'O'],
        ['O', 'O', 'O', 'O', 'O', '.'],
        ['O', 'O', 'O', 'O', '.', '.'],
        ['.', 'O', 'O', '.', '.', '.'],
        ['.', '.', '.', '.', '.', '.']]

你可以认为grid[x][y]是一幅“图”在x,y坐标处的字符,该图由文本字符组成。原点(0,0)在左上角,向右x坐标增加,向下y坐标增加。
复制前面的网格值,编写代码用它打印图像。

grid = [['.', '.', '.', '.', '.', '.'],
        ['.', 'O', 'O', '.', '.', '.'],
        ['O', 'O', 'O', 'O', '.', '.'],
        ['O', 'O', 'O', 'O', 'O', '.'],
        ['.', 'O', 'O', 'O', 'O', 'O'],
        ['O', 'O', 'O', 'O', 'O', '.'],
        ['O', 'O', 'O', 'O', '.', '.'],
        ['.', 'O', 'O', '.', '.', '.'],
        ['.', '.', '.', '.', '.', '.']]
for i in range(6):
    for j in range(9):
        print(grid[j][i],end="")
    print('\r')

注意:这里/r和/n 输出有区别(/n会多一行),使用/v 也可以
在这里插入图片描述
翻阅网上别人编写的用的\t(有些不明白)
在这里插入图片描述
试着用这些做个输出一个乘法口诀表
我写的代码:

i=1
while(i<10):
    for j in range(1,i+1):
        print('%d*%d=%d'%(j,i,i*j),end="\t")
    print('\v')
    i=i+1

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值