这是今天需要预习的一个小项目,规则如下
- 给定年龄,用户可以猜三次年龄
- 年龄猜对,让用户选择两次奖励
- 用户选择两次奖励后可以退出
'''
给定年龄,用户可以猜三次年龄
年龄猜对,让用户选择两次奖励
用户选择两次奖励后可以退出
'''
age = 18 # 答案
count = 0 # 游戏次数控制
prize_dict = {0: '布娃娃', 1: '变形金刚', 2: '奥特曼', 3: '<Python从入门到放弃>'}
while count < 3:
age_of_user = input("输入您猜的年龄:")
if not age_of_user.isdigit():
print("请输入数字兄弟")
continue
age_of_user = int(age_of_user)
if age_of_user == age:
print("恭喜您猜对了,您有两次选择奖励的机会,输入'q'退出")
count = 2
prize_key = [0]*2
k = 0
while k < 2:
print(prize_dict)
choice = input("输入您想要的奖励")
if choice == 'q':
count = 99
break
if not choice.isdigit():
print("请输入数字兄弟")
continue
choice = int(choice)
if choice in prize_dict:
print("您选择了%s" % prize_dict[choice])
prize_key[k] = choice
k += 1
else:
print("请输入0-3")
continue
print("您选择的奖励有:")
if k:
for i in range(2):
print(" %s" % prize_dict[prize_key[i]])
elif age_of_user < age:
print("猜 小 了嗷铁子")
else:
print("猜 大 了嗷铁子,你还有%d次机会")
if count == 99:
print("不要奖励你是真的牛批,拜拜")
break
if count == 2:
while True:
choice_want_continue = input("机会用完啦,还想继续吗 ['Y'or'y' 是] ['N'or'n' 否]")
if choice_want_continue == 'Y' or choice_want_continue == 'y':
count = 0
break
elif choice_want_continue == 'N' or choice_want_continue == 'n':
break;
else:
print("不要调皮了,能成熟一点吗")
continue
else:
while True:
again = int(input("还想继续吗铁子,你还有%s次机会,按0退出,按1继续" % (2 - count)))
if again == 1:
count += 1
break;
elif again == 0:
count =3
break;
else:
print("输入0或者1,别玩了兄弟")
continue
其实也没有什么好说的,我觉得可以更新的一些地方就是,给用户来一个列表用来放已经获得的奖品,或者说奖品每一份有多少,这样选择的时候就比较现实了。
而且我觉得挺有意思的就是关于猜数字,如果有人能够告诉你,你猜的跟实际的是偏大还是偏小的话,每次都选择中间的数字就挺好的,比如给出范围0-100,第一次就猜50,大了就25,小了就75,哈哈哈,就是二分法啦。
不过我觉得可以引申下去,那么在100以内,最多猜多少次就能猜中这个数字呢?
我的猜想是7次,毕竟2^7^>100>2^6^...