004,改进我们的小游戏
004,改进我们的小游戏
python的比较操作符:
> 左边大于右边
>>> 1 < 3
True
>>> 1 > 3
False
>= 左边大于等于右边
< 左边小于右边
<= 左边小于等于右边
== 左边等于右边
!= 左边不等于右边
条件分支语法:
if条件:
条件为真(true)执行的操作
else:
条件为假(false)执行的操作
ps:跟其他语言不同的是,if后面一定要有":"号,条件判断语句一定要“缩进”!(true,false属于布尔类型的值!)
课中练习:
1、
print('猜字谜')
temp = input ('猜猜我心里想的是什么数字?')
guess = int (temp)
if guess == 8:
print('wtf,你是我心里的蛔虫吗?')
else:
if guess > 8: #注意:缩进
print('大了大了!!')
else:
print('小了小了!!')
print('游戏结束,又被坑了吧!!')
运行结果:
>>>
猜字谜
猜猜我心里想的是什么数字?8
wtf,你是我心里的蛔虫吗?
游戏结束,又被坑了吧!!
>>> ================================ RESTART ================================
>>>
猜字谜
猜猜我心里想的是什么数字?9
大了大了!!
游戏结束,又被坑了吧!!
>>> ================================ RESTART ================================
>>>
猜字谜
猜猜我心里想的是什么数字?6
小了小了!!
游戏结束,又被坑了吧!!
>>> ================================ RESTART ================================
思考:做这个练习的时候没注意第二条件“if guess > 8”,是属于else:范围里面,必须缩进,不然会导致错误语法报错。琢磨了一下加入缩进,问题解决。
2、重复运行。
while循环
while条件:
条件为真(true)执行的操作
print('猜字谜')
temp = input ('猜猜我心里想的是什么数字?')#guess变量赋值,需放在while前面。
guess = int (temp)
while guess != 8:
#注意缩进!!
temp = input ('错了错了错了!!')
guess = int (temp)
if guess == 8:
print('wtf,你是我心里的蛔虫吗?')
else:
if guess > 8:
print('大了大了!!')
else:
print('小了小了!!')
print('游戏结束,又被坑了吧!!')
运行结果:
>>>
猜字谜
猜猜我心里想的是什么数字?5
错了错了错了!!4
小了小了!!
错了错了错了!!6
小了小了!!
错了错了错了!!9
大了大了!!
错了错了错了!!7
小了小了!!
错了错了错了!!8
wtf,你是我心里的蛔虫吗?
游戏结束,又被坑了吧!!
>>>
3、random模块
randint(),会返回一个随机的整数。
利用这个函数来改造我们的游戏
import random #必须在程序的最前面,导入random模块
secret = random.randint (1,10)#加多一个secret变量,生成一个1-10的随机整数
print('猜字谜')
temp = input ('猜猜我心里想的是什么数字?')#guess变量赋值,需放在while前面。
guess = int (temp)
while guess != secret: #把之前的8改成secret
#注意缩进!!
temp = input ('错了错了错了!!')
guess = int (temp)
if guess == secret: #把之前的8改成secret
print('wtf,你是我心里的蛔虫吗?')
else:
if guess > secret: #把之前的8改成secret
print('大了大了!!')
else:
print('小了小了!!')
print('游戏结束,又被坑了吧!!')
运行结果:
>>>
猜字谜
猜猜我心里想的是什么数字?5
错了错了错了!!6
大了大了!!
错了错了错了!!5
大了大了!!
错了错了错了!!4
大了大了!!
错了错了错了!!3
大了大了!!
错了错了错了!!2
大了大了!!
错了错了错了!!1
wtf,你是我心里的蛔虫吗?
游戏结束,又被坑了吧!!
>>>
ps:程序缺陷:第一次的数字没有提示大了或者小了。
课后练习:
测试题:
0. 请问以下代码会打印多少次“我爱C”
while 'C':
print('我爱C')
答:无数次循环
1. 请问以下代码会打印多少次“我爱鱼C!”
i = 10
while i:
print ('我爱鱼C!')
i = i - 1
答:10次
2. 请写出与 10 < cost < 50 等价的表达式
(10 < cost) and (cost < 50)
3. Python3 中,一行可以书写多个语句吗?
答:可以,用分号隔开,如:>>> print('I love you');print('very much!')
4. Python3 中,一个语句可以分成多行书写吗?
答:可以,用反斜杠\,或者括号分解成几行。如:
>>> 3>4 and \
1<2
False
>>> (4>3 and
5>4)
True
>>>
6. 听说过“短路逻辑(short-circuit logic)”吗?
答:逻辑操作符有个有趣的特性:在不需要求值的时候不进行操作。这么说可能比较“高深”,举个例子,表达式 x and y,需要 x 和 y 两个变量同时为真(True)的时候,结果才为真。因此,如果当 x 变量得知是假(False)的时候,表达式就会立刻返回 False,而不用去管 y 变量的值。这种行为被称为短路逻辑(short-circuit logic)或者惰性求值(lazy evaluation),这种行为同样也应用与 or 操作符。
操作:
0. 完善第二个改进要求(为用户提供三次机会尝试,机会用完或者用户猜中答案均退出循环)并改进视频中的代码。
import random
times = 3
secret = random.randint (1,10)#随机函数
print('猜字谜')
#先给出guess赋值(赋一个绝对不等于secret的值)
guess = 0
#print()默认是打印完字符串会自动添加一个换行符,end=" "参数告诉print()用空格代替换行
print ('猜猜我心里想的是什么数字?', end = ' ')#注意逗号用英文标点
while (guess != secret) and (times > 0):
temp = input ()
guess = int (temp)
times = times - 1#每输入一次,可用机会就-1
if guess == secret:
print('wtf,你是我心里的蛔虫吗?')
else:
if guess > secret:
print('大了大了!!')
else:
print('小了小了!!')
if times > 0:
print ('再试一次吧:', end = ' ')
else:
print('机会用完了,退下吧。')
print('游戏结束,又被坑了吧!!')
运行结果:
>>>
猜字谜
猜猜我心里想的是什么数字? 5
小了小了!!
再试一次吧: 6
小了小了!!
再试一次吧: 9
小了小了!!
机会用完了,退下吧。
游戏结束,又被坑了吧!!
>>>
2,
temp = input ('请输入一个整数:')
num = int (temp)
i = 1
while num:
print(i)
i = i + 1
num = num - 1
运行效果:(未理解其中用法)
>>>
请输入一个整数:10
1
2
3
4
5
6
7
8
9
10
>>>
3,
temp = input ('请输入一个整数:')
num = int (temp)
while num:#循环输入的数字次数,如输入8则执行8次
i = num - 1#变量i赋值
while i:#循环i次
print(' ',end = ' ')#打印结果中的*号前面的空格。
i = i - 1
j = num
while j:
print('*',end = ' ')#打印结果中的*号
j = j - 1
print()#打印完自动添加换行符
num = num - 1
运行效果
>>>
请输入一个整数:8
* * * * * * * *
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
>>>
做下改动,
temp = input ('请输入一个整数:')
num = int (temp)
while num:#循环输入的数字次数,如输入8则执行8次
i = num - 1#变量i赋值
while i:#循环i次
print(' ',end = ' ')#打印结果中的*号前面的空格。
i = i - 1
j = num
while j:
print('*',end = ' ')#打印结果中的*号
j = j - 1
k = num
while k:
print('$',end = ' ')
k = k - 1
print()#打印完自动添加换行符
num = num - 1
加多一个变量k,然后做循环,看看效果如下:
>>>
请输入一个整数:8
* * * * * * * * $ $ $ $ $ $ $ $
* * * * * * * $ $ $ $ $ $ $
* * * * * * $ $ $ $ $ $
* * * * * $ $ $ $ $
* * * * $ $ $ $
* * * $ $ $
* * $ $
* $
>>>
课时小结:
1、while循环语句及其应用(需加深理解)
2、 了解输入随机数:import random 和 random.randint ()的含义
3、and的使用