003 改进之前的游戏
import random
secret = random.randint(1, 10)
temp = input("猜猜小鱼心里想的是哪个数字:")
guess = int(temp)
while guess != secret:
temp = input("哎呀,猜错了,重新输入吧:")
guess = int(temp)
if guess == secret:
print("猜对了!")
print("哼!猜对了也没有奖励!")
else:
if guess > secret:
print("a..大了大了")
else:
print("e..小了小了")
print("游戏结束")
#游戏改进
#猜错的时候程序应该给点提示,例如告诉用户输入的值是大了还是小了,if循环
#每运行一次程序只能猜一次,应该提供多次机会给用户猜测,while循环
#每次程序运行,答案可以是随机的。答案固定容易泄露,引入random模块
#条件分支:if 条件:条件为真执行的操作 else:条件为假执行的操作
#while循环:while 条件:条件为真执行的操作
007 闲聊之python数据类型:
>>> '520' + '1314'
'5201314'
>>> 520+1314
1834
整型:大数 int()
浮点型:小数 float()
字符串:str()
>>> a = '520'
>>> b = float(a)
>>> b
520.0
>>> a = 5.99
>>> b = str(a)
>>> b
'5.99'
>>> c = str(5e5)
>>> c
'500000.0'
>>> c = str('5e5')
>>> c
'5e5'
bool类型:
e记法:科学计数法,表示特别大/小的数
>>> 0.00000000000000000000000011
1.1e-25
>>> 1500000000000
1500000000000
>>> 1.5e11
150000000000.0
>>> 15e10
150000000000.0
>>> True + False
1
>>> True + True
2
>>> 1.5e4
15000.0
获取关于类型的信息:type()、isinstance()
>>> a = '560'
>>> type(a)
<class 'str'>
>>> type(.2)
<class 'float'>
>>> type(True)
<class 'bool'>
>>> a = '小甲鱼'
>>> isinstance(a, str)
True
008 python之常用操作符:幂运算>正负号>算术操作符>比较操作符>逻辑运算符
算术操作符:
>>> a = 3
>>> a += 3
>>> a
6
>>> b = 2
>>> b -= 1
>>> b
1
>>> a = b = c = d = 10
>>> a
10
>>> b
10
>>> c
10
>>> d
10
>>> a += 1
>>> a
11
>>> b *= 10
>>> b
100
>>> c /= 4
>>> c
2.5
>>> 10 // 8
1
>>> 3.0 // 2
1.0
>>> 3.0 / 2
1.5
>>> 10 / 8
1.25
>>> 10 % 3
1
>>> 3 ** 2
9
>>> -3 *2 + 5 / -2 + 4
-4.5
比较操作符:
逻辑操作符:and <or< not
009 了不起的分支和循环——打飞机逻辑框架:
加载背景音乐
播放背景音乐(设置单曲循环)
我方飞机诞生
interval = 0
while True:
if 用户是否点击关闭按钮:
退出程序
interval += 1
if interval == 50:
intereval =0
小飞机诞生
小飞机移动一个位置
屏幕刷新
if 用户鼠标产生移动:
我放飞机中心位置 = 用户鼠标位置
屏幕刷新
if 我放飞机与小飞机发生肢体冲突:
我方失败,播放随机音乐
修改我方飞机图案
打印“game over”
停止背景音乐,最好淡出
010 了不起的分支循环2
按照100分制,90分以上成绩为A,80-90为B,60-80为C,60分以下为D
断言assert
011 了不起的分支和循环3:while循环、for循环、range()
while 条件:
循环体
>>> favourite = 'FishC'
>>> for i in favourite:
print(i, end=' ')
F i s h C
>>> nember = ['小甲鱼', '西布顶', '会儿', '黑夜']
>>> for each in nember:
print(each,len(nember))
小甲鱼 4
西布顶 4
会儿 4
黑夜 4
range([start,] stop[,step=1])作用是生成一个从start参数的值开始到stop参数的值结束的数字序列
>>> range(5)
range(0, 5)
>>> list(range(5))
[0, 1, 2, 3, 4]
>>> for i in range(5):
print(i)
0
1
2
3
4
>>> for i in range(2,9):
print(i)
2
3
4
5
6
7
8
>>> for i in range(2,10,2):
print(i)
2
4
6
8
break终止循环并跳出循环体
continue终止本并开始下一轮循环
列表:打了一个激素的数组1
>>> mix = [1, '小甲鱼', 3.14, [1,2]]
>>> mix
[1, '小甲鱼', 3.14, [1, 2]]
>>> empty = []
>>> empty
[]
向列表添加元素,append,属于mix列表对象的方法;extend(),追加到末尾;insert()
>>> mix.append('娃娃')
>>> mix
[1, '小甲鱼', 3.14, [1, 2], '娃娃']
>>> len(mix)
5
>>> mix.extend(['阿花', '阿发'])
>>> mix
[1, '小甲鱼', 3.14, [1, 2], '娃娃', '阿花', '阿发']
>>> len(mix)
7
>>> mix.insert(1, '牡丹')
>>> mix
[1, '牡丹', '小甲鱼', 3.14, [1, 2], '娃娃', '阿花', '阿发']
>>>
从列表删除元素remove()、del、pop()
>>> mix.remove('娃娃')
>>> mix
[1, '牡丹', '小甲鱼', 3.14, [1, 2], '阿花', '阿发']
>>> del mix[0]
>>> mix
['牡丹', '小甲鱼', 3.14, [1, 2], '阿花', '阿发']
>>> mix.pop()
'阿发'
>>> name = mix.pop()
>>> name
'阿花'
>>> mix
['牡丹', '小甲鱼', 3.14, [1, 2]]
列表切片
012 列表:一个打了激素的数组3
>>> list1 = [123]
>>> list2 = [234]
>>> list1 > list2
False
>>> list1 = [123,456]
>>> list2 = [234,123]
>>> list1 > list2
False
>>> list3 = [123,456]
>>> (list1 < list2) and (list1 == list3)
True
>>> list4 = list1 + list2
>>> list3
[123, 456]
>>> list4
[123, 456, 234, 123]
>>> 123 in list3
True
>>> '小甲鱼' not in list3
True
>>> 123 not in list3
False
>>> list5 = [123, ['小甲鱼', '牡丹'], 456]
>>> '小甲鱼' in list5
False
>>> '小甲鱼' in list5[1]
True
>>> list5[1][0]
'小甲鱼'
>>> dir(list)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__',
'__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__',
'__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__',
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__',
'__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend',
'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>> list3 *= 5
>>> list3
[123, 456, 123, 456, 123, 456, 123, 456, 123, 456]
>>> list.count
<method 'count' of 'list' objects>
>>> list3.count(123)
5
>>> list3.index(123)
0
>>> list3.index(123,3,7)
4
sort(func, key,reverse=False)
>>> list3.reverse()
>>> list3
[456, 123, 456, 123, 456, 123, 456, 123, 456, 123]
>>> list6 = [4,2,5,1,9,23,32,0]
>>> list6.sort()
>>> list6
[0, 1, 2, 4, 5, 9, 23, 32]
>>> list6.sort(reverse = True)
>>> list6
[32, 23, 9, 5, 4, 2, 1, 0]
>>> list7 = list6[:] # 将list6全部复制
>>> list7
[32, 23, 9, 5, 4, 2, 1, 0]
>>> list8 = list6 # 指向list6的标签
>>> list8
[32, 23, 9, 5, 4, 2, 1, 0]
>>> list6.sort()
>>> list6
[0, 1, 2, 4, 5, 9, 23, 32]
>>> list7
[32, 23, 9, 5, 4, 2, 1, 0]
>>> list8
[0, 1, 2, 4, 5, 9, 23, 32]
013 元组:戴上了枷锁的列表
元组:不能改变的
列表:任意插入、删除元素,很随意
>>> tuple1 = (1,2,3,4,5,6,7,8)
>>> tuple1
(1, 2, 3, 4, 5, 6, 7, 8)
>>> tuple1[2]
3
>>> tuple1[5:]
(6, 7, 8)
>>> tuple1[1] =3
Traceback (most recent call last):
File "<pyshell#172>", line 1, in <module>
tuple1[1] =3
TypeError: 'tuple' object does not support item assignment
014 字符串:各种奇葩的内置方法
>>> str1[:6] + '插入的字符串' + str1[6:]
'I love插入的字符串 fishC.com'
>>> str1 = str1[:6] + '插入的字符串' + str1[6:]
>>> str1
'I love插入的字符串 fishC.com'
>>> str2 = 'xiaoxie'
>>> str2
'xiaoxie'
>>> str2.capitalize()
'Xiaoxie'
>>> str2 = 'DAXIExiaoxie'
>>> str2.casefold()
'daxiexiaoxie'
>>> str2
'DAXIExiaoxie'
>>> str2.center(40)
' DAXIExiaoxie '
>>> str2.count('xi')
2
>>> str2
'DAXIExiaoxie'
>>> str2.endswith('xi')
False
>>> str2.endswith('xie')
True
>>> str3 = 'I\tlove\tfishC.com!'
>>> str3.expandtabs()
'I love fishC.com!'
>>> str3.find('efc')
-1
>>> str3.find('z')
-1
>>> str5 = 'Fishc'
>>> str5.join('12345')
'1Fishc2Fishc3Fishc4Fishc5'
>>> str5.lower()
'fishc'
>>> # rstrip()删除字符串末尾的空格
>>> # lstrip()删除字符串开始的空格
>>> str6 = ' I love fishC.com! '
>>> str6.rstrip().lstrip()
'I love fishC.com!'
>>> str7 = str6[:]
>>> str7
' I love fishC.com! '
>>> str7 =str7.rstrip().lstrip()
>>> str7
'I love fishC.com!'
>>> str7.partition('ov')
('I l', 'ov', 'e fishC.com!')
>>> str7 = str6[:]
>>> str7
' I love fishC.com! '
>>> str7 =str7.rstrip().lstrip()
>>> str7
'I love fishC.com!'
>>> str7.partition('ov')
('I l', 'ov', 'e fishC.com!')
>>> str7.split()
['I', 'love', 'fishC.com!']
>>> str7.split('i')
['I love f', 'shC.com!']
>>> str8 = ' ssssssssaaaaa '
>>> str8.strip()
'ssssssssaaaaa'
>>> str8.strip('s')
' ssssssssaaaaa '
>>> str8
' ssssssssaaaaa '
>>> str8.strip()
'ssssssssaaaaa'
>>> str8 = str8.strip()
>>> str8
'ssssssssaaaaa'
>>> str8.strip('s')
'aaaaa'
015 字符串:格式化
帮助纠正分类问题,二者传入replacement字段
>>> "{0} love {1}.{2}".format("I", "FishC", ".com")
'I love FishC..com'
>>> "{a} love {b}.{c}".format("I", "FishC", ".com")
Traceback (most recent call last):
File "<pyshell#242>", line 1, in <module>
"{a} love {b}.{c}".format("I", "FishC", ".com")
KeyError: 'a'
>>> "{a} love {b}.{c}".format(a = "I", b = "FishC", c = ".com")
'I love FishC..com'
>>>
{0} love {1}.{2}#表示字段
>>> '\ta'
'\ta'
>>> print('\ta')
a
>>> print('\\')
\
>>> "{{0}}".format('不打印')
'{0}'
>>> '{0:.1f}{1}'.format(27.658, 'GB')
'27.7GB'
.1f表示四舍五入保留一位小数的定点数,{1}表示调入GB
>>> '%c' % 97
'a'
>>> '%c %c %c' % (97,98,99)
'a b c'
>>> '%s' % 'I love fish'
'I love fish'
>>> #格式化ASCII码、字符串、整数
>>> '%d + %d = %d' % (4, 5, 4+5)
'4 + 5 = 9'
>>> '%x' % 10
'a'
>>> '%x' % 160
'a0'
>>> '%f' % 27.68
'27.680000'
>>> '%e' % 27.68
'2.768000e+01'
>>> '%010d' % 5
'0000000005'