python项⽬之购物街价格竞猜
购物街价格竞猜
程序说明
本项⽬尝试⽤Python语⾔设计⼀个简单的交互式程序,来模仿购物街价格竞猜。程序模板已经给出,⽂件名为GuessPrice.py。计算机将扮演主持⼈,⽽你则扮演竞猜者。针对⼀件未标明价格的商品,计算机会在某个已知的范围内产⽣⼀个秘密数,⽽你则要尝试猜出这个数字。将你猜测的价格通过输⼊框送给计算机,计算机将会提⽰你“⽐实际价格⾼了”,“⽐实际价格低了”或者“竞猜正确!”等⼀些提⽰信息。计算机会在你竞猜开始时给你规定⼀个有限的竞猜次数,在规定的竞猜次数内你可以反复猜价。猜中价格或竞猜次数剩余为0时,游戏结束。
我们将通过使⽤⼀个可以输⼊价格的输⼊框和⼏个按钮来实现交互。对于这个项⽬,我们将忽略画布,⽽直接在控制台打印输出计算机的提⽰信息。当然我们可以尝试在画布上以更⽣动、直观的⽅式显⽰信息,但因为实现图形输出是⼀个⽐较复杂的过程,我们在后⾯的课程⾥会陆续接触到。⽬前,作为⼀名初学者,我们应该⾸先注重程序的逻辑正确性,重点放在如何建⽴你的项⽬风格和在掌握基于事件驱动编程的编程步骤上。
在这个程序⾥你将⾸次接触到框架、输⼊框、按钮等交互式对象,你会体验到⼈机交互的乐趣。
编写基于事件驱动的程序需要以下步骤:
定义全局变量(初始化)
定义程序需要的辅助函数
定义类(当前的这个程序不需要此环节,后⾯的作业中我们会⽤到)
定义事件处理函数
创建框架(交互界⾯)
注册需要的事件处理函数
启动框架和程序中的定时器(定时器的内容下⼀个作业会接触到)
通过该项⽬你可以有以下收获:
获得数学问题(随机)的具体化和试验验证能⼒
获得问题分解并分⽽治之的技巧
掌握编写交互式应⽤程序的步骤
熟悉事件驱动编程
了解算法的作⽤和意义
以下为完整代码:
# -*- coding: utf-8 -*-
# 猜物价游戏 - GuessPrice项⽬模板
# 通过按钮和⽂本框实现输⼊
# 所有和游戏相关的输出都显⽰在控制台上
#请在此处填写代码,分别导⼊math、simpleguitk、random模块
import math
import simpleguitk
import random
# 初始化全局变量
random_num =0# 电脑⽣成的随机数,初始化为0
num_range =10# ⽣成随机数的范围
remain_time =0# 剩余的竞猜次数,初始化为0
# ⾃定义函数,⽤于游戏和新⼀轮游戏的启动
def new_game():
global random_num, num_range, remain_time
remain_time =il(math.log(num_range +1,2)))
print("\n欢迎来到购物街!")
print("新⼀轮商品竞猜开始。竞猜价格范围从0到", num_range)
print("总的竞猜机会有", remain_time,"次")
random_num = random.randrange(0, num_range)
# 为控制⾯板定义事件处理程序
def range10():
# 改变竞价范围[0,10)和重新启动游戏的按钮
global num_range
num_range =10
new_game()
def range100():
# 改变竞价范围[0,100)和重新启动游戏的按钮
global num_range
num_range =100
new_game()
def range1000():
# 改变竞价范围[0,1000)和重新启动游戏的按钮
global num_range
num_range =1000
new_game()
def input_guess(guess):
# 游戏主要的逻辑设计在这⼀部分
# ⾸先判断竞猜机会是否已⽤完,如果没有⽤完就判断输⼊的价格和电脑产⽣的价格是否相同,# 根据⽐较结果输出相应内容,并修改剩余的竞猜次数。如果⽤完了竞猜机会就提⽰⽤户,
# 并显⽰商品实际价格,然后重新开始游戏。
global random_num, num_range, remain_time
if remain_time >0:
if random_num ==int(guess):
print('你猜对了')
elif random_num >int(guess):
print('价格低了,你还有',str(remain_time-1),'次机会')
remain_time = remain_time-1
elif random_num <int(guess):
print('价格⾼了,你还有',str(remain_time-1),'次机会')
random pythonremain_time = remain_time-1
if remain_time ==0:
print('竞猜结束')
new_game()
# 创建框架
# 请在此处填写代码,⽰例:frame = ate_frame('框架名', 300, 300)
frame = ate_frame('',300,300)
# 为框架添加按钮和输⼊框对象及处理事件
# 请在此处填写代码,⽰例:frame.add_button('按钮名', range10, 200)
frame.add_button('第⼀个商品的竞猜价格是0到10元', range10,200)
frame.add_button('第⼆个商品的竞猜价格是0到100元', range100,200)
frame.add_button('第三个商品的竞猜价格是0到1000元', range1000,200)
frame.add_input('请输⼊竞猜价格',input_guess,200)
# 调⽤new_game
new_game()
#启动框架
frame.start()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论