本專案嘗試用python語言設計乙個簡單的互動式程式,來模仿購物街**競猜。程式模板已經給出,檔名為guessprice.py。計算機將扮演主持人,而你則扮演競猜者。針對一件未標明**的商品,計算機會在某個已知的範圍內產生乙個秘密數,而你則要嘗試猜出這個數字。將你猜測的**通過輸入框送給計算機,計算機將會提示你「比實際**高了」,「比實際**低了」或者「競猜正確!」等一些提示資訊。計算機會在你競猜開始時給你規定乙個有限的競猜次數,在規定的競猜次數內你可以反覆猜價。猜中**或競猜次數剩餘為0時,遊戲結束。
我們將通過使用乙個可以輸入**的輸入框和幾個按鈕來實現互動。對於這個專案,我們將忽略畫布,而直接在控制台列印輸出計算機的提示資訊。當然我們可以嘗試在畫布上以更生動、直觀的方式顯示資訊,但因為實現圖形輸出是乙個比較複雜的過程,我們在後面的課程裡會陸續接觸到。目前,作為一名初學者,我們應該首先注重程式的邏輯正確性,重點放在如何建立你的專案風格和在掌握基於事件驅動程式設計的程式設計步驟上。
在這個程式裡你將首次接觸到框架、輸入框、按鈕等互動式物件,你會體驗到人機互動的樂趣。
定義全域性變數(初始化)
定義程式需要的輔助函式
定義類(當前的這個程式不需要此環節,後面的作業中我們會用到)
定義事件處理函式
建立框架(互動介面)
註冊需要的事件處理函式
啟動框架和程式中的定時器(定時器的內容下乙個作業會接觸到)
獲得數學問題(隨機)的具體化和試驗驗證能力
獲得問題分解並分而治之的技巧
掌握編寫互動式應用程式的步驟
熟悉事件驅動程式設計
了解演算法的作用和意義
# -*- coding: utf-8 -*-
# 猜物價遊戲 - guessprice專案模板
# 通過按鈕和文字框實現輸入
# 所有和遊戲相關的輸出都顯示在控制台上
#請在此處填寫**,分別匯入math、******guitk、random模組
import math
import ******guitk
import random
# 初始化全域性變數
random_num =
0# 電腦生成的隨機數,初始化為0
num_range =
10# 生成隨機數的範圍
remain_time =
0# 剩餘的競猜次數,初始化為0
# 自定義函式,用於遊戲和新一輪遊戲的啟動
defnew_game()
:global random_num, num_range, remain_time
remain_time =
int(math.ceil(math.log(num_range +1,
2)))
print
("\n歡迎來到購物街!"
)print
("新一輪商品競猜開始。競猜**範圍從0到"
, num_range)
print
("總的競猜機會有"
, remain_time,
"次")
random_num = random.randrange(
0, num_range)
# 為控制面板定義事件處理程式
defrange10()
:# 改變競價範圍[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-
1elif random_num <
int(guess)
:print
('**高了,你還有'
,str
(remain_time-1)
,'次機會'
) remain_time = remain_time-
1if remain_time ==0:
print
('競猜結束'
) new_game(
)# 建立框架
# 請在此處填寫**,示例:frame = ******guitk.create_frame('框架名', 300, 300)
frame = ******guitk.create_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(
)
Python之購物清單
購物清單 第一行輸入總金額n,商品數量m 第二行至m 1行輸入商品資料,v p q,商品 v,商品重要度p,商品是主件0附件大於0 用數值代表是哪個主件的附件,比如1則代表第二行的主件的附件 如下 coding utf 8 找出有多少種方案組合 def choose goods n,m,goods ...
python之購物車
下面是我們這個程式的框架 下面說一些 中比較難理解的 下面這個自己領會就好啦,本人不多做介紹 a if not a print a列表為空的 else print a列表不為空 下面主要介紹一下index這個函式,index在英語中是索引的意思,在這裡也一樣,它是用來看看某個值在列表中的索引是多少,...
Python之模擬購物車
usr bin env python coding utf 8 filename shopping.py time 2020 3 1 14 14 author anqixiang function 模擬購物車功能 1.啟動程式,輸入工資,列印商品列表 2.使用者根據商品編號選擇商品 3.選擇商品後,...