2018-04-03周2课程笔记
缩进格式
说明:python的缩进代表向上包含一个内置或自定义函数,并以冒号结尾,换行后,使用缩进来区分不同的层级函数。
def hello(name):# 这里代表了自定义一个名字为“hello”的函数,函数的内部参数名为“name”
print("hello {0}".format(name))# 当函数执行时,输出“hello ”带上参数
print("hello world")# 这里按序提现了缩进执行的前后关系,输出中应该为首位
for i in range(1,10):# 这里使用了内置函数for,通过缩进可以观察到
hello(i)# 当函数执行时,调用上述自定义“hello”函数,并使用内部参数“i”传参
print(i)# 当函数执行时,输出内部参数“i”
# 以下为输出内容
hello world
hello 1
1
hello 2
2
hello 3
3
hello 4
4
hello 5
5
hello 6
6
hello 7
7
hello 8
8
hello 9
9
If条件判断
有事没事 a.strip() 一下,避免无意义的空格和判断空值
if语句执行有个特点,它是从上往下判断,如果在某个判断上是True,把该判断对应的语句执行后,就忽略掉剩下的elif和else(也支持if嵌套),所以,请测试并解释为什么下面的程序打印的是teenager:
# if <条件判断1>:
# <执行1>
# elif <条件判断2>:
# <执行2>
# elif <条件判断3>:
# <执行3>
# else:
# <执行4>
age = 20
if age >= 6:
print('teenager')
elif age >= 18:
print('adult')
else:
print('kid')
teenager
d = dict(a=1)
print(type(d))
if type(d) == dict:
print("{0} is dict".format(d))
# 鉴于tpye判断不了子类继承的父类属性,推荐用以下代码
if isinstance(d, dict):
print("{0} is dict".format(d))
# {0}大括号的0不建议省略
# 强制类型转换:问题:字典和字符串相加,怎么搞
print(str(d) + "hello world")
m = [x for x in range(1,10)]# 前开后闭
print(len(m))
<class 'dict'>
{'a': 1} is dict
{'a': 1} is dict
{'a': 1}hello world
9
age = input("Please input your age: ")# a18
print(type(age))
if age.strip():
if int(age)>18:# 这里肯定报错
print("成年人")
else:
print("未成年")
else:
print("输入不是数字")
Please input your age: 18
<class 'str'>
未成年
age = input("Please input your age: ")# a18
print(type(age))
if age.strip():
if age.isdigit():
if int(age)>18:
print("成年人")
else:
print("未成年")
else:
print("输入不是数字")
else:
print("输入只有空格")
Please input your age: 18
<class 'str'>
未成年
number = input("Please input a number: ")# 123
if int(number)>0:
print("{0} 是正数!".format(number))
elif int(number)<0:
print("{0} 是负数!".format(number))
else:
print("输入数字是{0}".format(number))
Please input a number: 123
123 是正数!
while循环
# while 判断条件:
# 执行语句
# while 1:
# 这种代码的效率高,因为计算机底层回归到0和1
# 在pycharm中因为是管理着python.exe,python.exe不会跑满cpu
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
2500
break:跳出循环
continue:跳到下一次循环
while 1:
age = input("Please input your age: ")# a18
print(type(age))
if age.strip():
if age.isdigit():
if int(age)>18:
print("成年人")
break
else:
print("未成年")
break
else:
print("输入不是数字")
continue# 等于直接跳到while 1:
print("数字")
else:
print("输入只有空格")
continue
print("空格")
print("break")
Please input your age: 18
<class 'str'>
未成年
break
for 循环
# for item in sequence:
# 执行语句
for i in range(1, 10):# >=1,<10
print("{0} x {1} = {2}".format(i, i, i*i))
1 x 1 = 1
2 x 2 = 4
3 x 3 = 9
4 x 4 = 16
5 x 5 = 25
6 x 6 = 36
7 x 7 = 49
8 x 8 = 64
9 x 9 = 81
#1 1x1=1
#2 1x2=2 2x2=4
#3 1x3=3 2x3=6 3x3=9
#4 1x4=4 2x4=8 3x4=12 4x4=16
# a x b = a*b
# a 最小为1,最大为行号
# b 等于行号
for b in range(1, 10):
for a in range(1,b+1):# 前开后闭,只能取到b
# python2的不换行是“,”,python3的不换行是“,end=" "”
# 可以点进去看print的函数内容,查看到end=的用法
if len(str(a*b))==1:
print("{0} x {1} = {2}".format(a, b, a*b),end=" ")
elif len(str(a*b))==2:
print("{0} x {1} = {2}".format(a, b, a*b),end=" ")
else:
print("err")
if a == b:
print()# 换行
1 x 1 = 1
1 x 2 = 2 2 x 2 = 4
1 x 3 = 3 2 x 3 = 6 3 x 3 = 9
1 x 4 = 4 2 x 4 = 8 3 x 4 = 12 4 x 4 = 16
1 x 5 = 5 2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 25
1 x 6 = 6 2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30 6 x 6 = 36
1 x 7 = 7 2 x 7 = 14 3 x 7 = 21 4 x 7 = 28 5 x 7 = 35 6 x 7 = 42 7 x 7 = 49
1 x 8 = 8 2 x 8 = 16 3 x 8 = 24 4 x 8 = 32 5 x 8 = 40 6 x 8 = 48 7 x 8 = 56 8 x 8 = 64
1 x 9 = 9 2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45 6 x 9 = 54 7 x 9 = 63 8 x 9 = 72 9 x 9 = 81
range和xrange的区别
python range() 函数可创建一个整数列表,一般用在 for 循环中。函数语法
range(start, stop[, step])
参数说明:
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
实例
>>> range(10) # 从 0 开始到 10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 11) # 从 1 开始到 11
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> range(0, 30, 5) # 步长为 5
[0, 5, 10, 15, 20, 25]
>>> range(0, 10, 3) # 步长为 3
[0, 3, 6, 9]
>>> range(0, -10, -1) # 负数
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0)
[]
>>> range(1, 0)
[]
# 以下是 range 在 for 中的使用,循环出runoob 的每个字母:
x = 'runoob'
for i in range(len(x)):
print(x[i])
r
u
n
o
o
b
描述
xrange() 函数用法与 range 完全相同,所不同的是生成的不是一个数组,而是一个生成器。
语法
xrange 语法:
xrange(stop)
xrange(start, stop[, step])
参数说明:
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
返回值
返回生成器。
实例
以下实例展示了 xrange 的使用方法:
>>>xrange(8)
xrange(8)
>>> list(xrange(8))
[0, 1, 2, 3, 4, 5, 6, 7]
>>> range(8) # range 使用
[0, 1, 2, 3, 4, 5, 6, 7]
>>> xrange(3, 5)
xrange(3, 5)
>>> list(xrange(3,5))
[3, 4]
>>> range(3,5) # 使用 range
[3, 4]
>>> xrange(0,6,2)
xrange(0, 6, 2) # 步长为 2
>>> list(xrange(0,6,2))
[0, 2, 4]
Python的练习题
题目1:get
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
程序分析:利用while语句,条件为输入的字符不为'\n'.
#用isdigit函数判断是否数字
#用isalpha判断是否字母
#isalnum判断是否数字和字母的组合
'''
判断一个字符串数字有多少个
字母有多少个
空格有多少个
其他字符
'''
while 1:
strings = input("Please inpur a string(quit will be exit):")
alpha, dig, space, other = 0, 0, 0, 0
if strings.strip() == "quit":
exit(1)
for i in strings:
if i.isdigit():
dig += 1
elif i.isspace():
space += 1
elif i.isalpha():
alpha += 1
else:
other += 1
print("alpha = {0}".format(alpha))
print("dig = {0}".format(dig))
print("space = {0}".format(space))
print("other = {0}".format(other))
Please inpur a string(quit will be exit):123qwe +_
alpha = 3
dig = 3
space = 3
?other?
题目6:get
0! + 1! + 2! + 3! + 4! + 5! + 6!+ n!
- 0! = 1
- 1! = 1
- 2! = 2*1=2
- 3! = 321=6
'''
0! +1! +2! + 3! +4! + 5! + n!
1 + 1 + 2 + 6 + …… + n*(n-1)*(n-2)……*1
'''
def jc(n):
result = 1
if n == 0:
return result
else:
for i in range(1, n+1):
result *= i
return result
n = input("Plese inpurt number n:")
count = 0
for i in range(0, int(n)+1):
count += jc(i)
print("count = {0}".format(count))
Plese inpurt number n:3
count = 10