赞
踩
1. 我们知道在游戏运行后,通常是玩家中断游戏或者主角被打败了,才会退出游戏。那么现在让你来开发一个游戏,你觉得应该如何实现这个机制(可以画流程图,也可以简单概述)?
利用while循环来实现有些的主体,当触发退出游戏机制的时候(玩家中断游戏或者主角被打败了),通过 break语句跳出来。
2. 请问下面代码存在什么问题?
love = 'yes'
while love = 'yes':
love = input("今天你还爱我吗:")
while 后面应该是判断 love 变量的值是否为 ‘yes’(love == ‘yes’),然而这里粗心少写了一个等号(=)。幸亏现在 Python 自动会帮你排查,条件部分写成赋值语句直接就给你一个 SyntaxError: invalid syntax。
3. 如果不上机,你能算出下面循环执行完毕之后,打印的值应该是多少吗?
i = 1
sum = 0
while i < 10:
sum = sum + i
i = i + 1
print(sum)
45。注意,条件是 i < 10,也就是当 i 等于 10 的时候就退出循环了,所以是 1 + 2 + … + 9 = 45。如果是要加到 10,记得条件要改为 i <= 10 哦(初学者在这里特别容易出错)。
4. 请问下面代码是否会构成一个死循环?
x = 9
while x:
print(x)
x -= 3
x += 1
会。循环的条件是 x,那么在这段代码中,只有当 x 的值为 0,循环才能退出。循环体的内容除了打印 x 的值,就是对 x 进行减 2 的操作(先减 3 再加 1)。由于初始值是 9,每执行一次循环减 2,它这辈子也不可能等于 0 的,所以是一个死循环。
5. 当程序跑起来之后,如果发现是死循环,如何强制退出呢?
Ctrl+C 。实在不行,就强制关闭窗口吧
6. 以下两段代码实现相同的功能,你觉得哪一段代码的实现更优雅?
代码A:
password = ''
while password != "FishC":
password = input("请输入密码:")
print("欢迎您来!")
代码B:
while True:
password = input("请输入密码:")
if password == "FishC":
break
print("欢迎您来!")
代码B
7. 请编写一个程序,实现如下图所示的效果:
while True:
slogan = input("请输入一局口号(输入STOP结束)")
if slogan == "STOP":
break
print(slogan)
8. 大家还记得第 008 讲课后作业那个模拟抛硬币的题目吗?请增加代码,让它可以实现以下功能:
如果抛硬币的次数小于 100,则打印每次的结果,否则不打印。
统计最终正面和反面的次数。
import random counts = int(input("请输入抛硬币的次数:")) i = 0 n = 0 m = 0 print("开始抛硬币实验:") while i < counts: num = random.randint(1, 10) if counts >= 100: if num % 2: n += 1 else: m += 1 i += 1 else: if num % 2: print("正面", end=" ") n += 1 else: print("反面", end=" ") m += 1 i += 1 print("") #起到换行的作用 print("正面的次数:",n,sep='') print("反面的次数:",m,sep='')
改进:
import random counts = int(input("请输入抛硬币的次数:")) # 利用 ignore 变量来判断是否打印每次的结果 if counts > 100: ignore = True else: ignore = False heads = 0 # 统计正面的次数 tails = 0 # 统计反面的次数 i = 0 print("开始抛硬币实验……") while i < counts: num = random.randint(1, 10) if num % 2: heads += 1 if not ignore: print("正面", end=" ") else: tails += 1 if not ignore: print("反面", end=" ") i += 1 print("") print("一共模拟了", counts, "次抛硬币,结果如下:") print("正面:", heads, "次", sep="") print("反面:", tails, "次", sep="")
9. 终极考验:编写代码,让程序分别统计正反面最多出现连续的次数。不要使用超纲的知识。
import random counts = int(input("请输入抛硬币的次数:")) i = 0 n = 0 #统计正面次数 m = 0 #统计反面次数 last = 0 #记录上一次的状态 x = 0 #连续正面次数 y = 0 #连续反面次数 x_max = 0 #最多连续正面次数 y_max = 0 #最多连续反面次数 print("开始抛硬币实验......") while i < counts: num = random.randint(1, 10) if counts >= 100: if num % 2: n += 1 x += 1 if last == 2: x = 1 if x > x_max: x_max = x last = 1 else: m += 1 y += 1 if last == 1: y = 1 if y > y_max: y_max = y last = 2 i += 1 else: if num % 2: print("正面", end=" ") n += 1 x += 1 if last == 2: x = 1 if x > x_max: x_max = x last = 1 else: print("反面", end=" ") m += 1 y += 1 if last == 1: y = 1 if y > y_max: y_max = y last = 2 i += 1 print("") #起到换行的作用 print("一共模拟了",counts,"次抛硬币,结果如下:",sep='') print("正面:",n,"次",sep='') print("反面:",m,"次",sep='') print("最多连续正面:",x_max,"次",sep='') print("最多连续反面:",y_max,"次",sep='')
改进:
import random counts = int(input("请输入抛硬币的次数:")) i = 0 n = 0 #统计正面次数 m = 0 #统计反面次数 ignore = 0 #决定是否打印结果 last = 0 #记录上一次的状态 x = 0 #连续正面次数 y = 0 #连续反面次数 x_max = 0 #最多连续正面次数 y_max = 0 #最多连续反面次数 if counts >= 100: ignore = False else: ignore = True print("开始抛硬币实验......") while i < counts: num = random.randint(1, 10) if num % 2: n += 1 x += 1 if last == 2: x = 1 if x > x_max: x_max = x if ignore: print("正面", end=" ") last = 1 else: m += 1 y += 1 if last == 1: y = 1 if y > y_max: y_max = y if ignore: print("反面", end=" ") last = 2 i += 1 print("") #起到换行的作用 print("一共模拟了",counts,"次抛硬币,结果如下:",sep='') print("正面:",n,"次",sep='') print("反面:",m,"次",sep='') print("最多连续正面:",x_max,"次",sep='') print("最多连续反面:",y_max,"次",sep='')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。