1. 程式人生 > 其它 >初學python寫個自娛自樂的小遊戲

初學python寫個自娛自樂的小遊戲

一、摘要

當編寫完後的程式碼執行第一次後達到了目標的預期效果,內心有些許滿足,但是當突發情況產生後,程式便不能正常執行,於是準備從簡單的版本開始出發,綜合考慮使用者的需求,和使用過程中會遇到的問題,一步一步發現和解決問題,最終編寫成目前自己滿意的程式,由於目前知識有限,歡迎大家提出寶貴的建議。

二、遊戲規則

下面我們通過一個“猜數字”的小遊戲來看看如何使用while迴圈。猜數字遊戲的規則是:計算機出一個1到100之間的隨機數,玩家輸入自己猜的數字,計算機給出對應的提示資訊(大一點、小一點或猜對了),如果玩家猜中了數字,計算機提示使用者一共猜了多少次,遊戲結束,否則遊戲繼續。

三、簡易版程式

1、程式碼

點選檢視程式碼
#猜數字遊戲
import random
Ai = random.randint(1, 100)
co = 0
while True:
    co += 1
    num = int(input('請輸入: '))
    if Ai > num:
        print('大一點')
    elif Ai < num:
        print('小一點')
    else:
        print('恭喜你猜對了!')
        break
print(f'你總共猜了{co}次')
if co > 7:
    print('你的智商餘額明顯不足')

2、問題:

使用者如果輸入非整數,程式將會報錯,遊戲無法繼續

四、改版1

1、解決:

通過if判斷和break語句解決使用者誤輸入非整數型別的報錯

點選檢視程式碼
import random
Ai = random.randint(1, 100)
co = 0
a = input('接下來我們將開始猜數字遊戲,Are you ready! y/n: ')
if a == 'y':
  while True:
      co += 1
      num = int(input('請輸入: '))
      if Ai > num:
          print('大一點')
      elif Ai < num:
          print('小一點')
      else:
          print('恭喜你猜對了!')
          break
  print('你總共猜了{co}次')
  if co > 7:
      print('你的智商餘額明顯不足')
elif a == 'n':
    print('程式執行結束')
else:
    print('輸入無效,程式終止')

2、問題:

通過解決了使用者誤輸入報錯的問題,程式基本正常執行,也提升了使用者和程式的互動性。但是又發現了新的問題,使用者互動性不夠好,程式只能執行一次就自動結束。

五、改版2

1、解決:

通過巢狀if語句使得while語句內部的程式可以多次執行,為了避免if語句內部使用者誤輸入再次報錯,再使用while巢狀一層,然後使用break避免該結束的語句重複執行

點選檢視程式碼
import random
Ai = random.randint(1,100)
a = input('接下來我們將開始猜數字遊戲,Are you ready! y/n: ')
while True:
  if a == 'y':
    co = 0
    while True:
      num = int(input('請輸入一個1-100之間的數字:'))
      co +=1
      if Ai > num:
        print('你輸入的數字小了')
      elif Ai < num:
        print('你輸入的數字大了')
      elif Ai == num:
        if co < 7:
          print(f'恭喜你猜對了!你一共用了{co}次,實在優秀')
          a = input('請問是否繼續遊戲y/n: ')
          if a == 'n':
            break
        else:
          print(f'恭喜你猜對了!但是你一共用了{co}次,很遺憾的告訴你,你的智商餘額明顯不足')
          a = input('請問是否繼續遊戲y/n: ')
          if a == 'n':
            break
      else:
        print('你輸入的是無效的數字,程式自動終止')
        break
  elif a == 'n':
    print('程式執行結束')
    break
  else:
    print('輸入無效,程式終止')
    break

2、問題:

現在基本解決了使用者誤輸入報錯和互動性的問題,可以多次正常運行了,可是執行多次後發現程式提示使用者輸入次數是開始到程式結束的次數,但是預期希望的是每一次開始都是重新計算次數

六、改版三

1、解決:

通過每次重新開始都給co這個變數賦值為0,這樣就解決了程式每次開始不重新計數的問題了

點選檢視程式碼
import random
Ai = random.randint(1,100)
a = input('接下來我們將開始猜數字遊戲,Are you ready! y/n: ')
while True:
  if a == 'y':
    co = 0
    while True:
      num = int(input('請輸入一個1-100之間的數字:'))
      co +=1
      if Ai > num:
        print('你輸入的數字小了')
      elif Ai < num:
        print('你輸入的數字大了')
      elif Ai == num:
        if co < 7:
          print(f'恭喜你猜對了!你一共用了{co}次,實在優秀')
          a = input('請問是否繼續遊戲y/n: ')
          co = 0
          if a == 'n':
            break
        else:
          print(f'恭喜你猜對了!但是你一共用了{co}次,很遺憾的告訴你,你的智商餘額明顯不足')
          a = input('請問是否繼續遊戲y/n: ')
          co = 0
          if a == 'n':
            break
      else:
        print('你輸入的是無效的數字,程式自動終止')
        break
  elif a == 'n':
    print('程式執行結束')
    break
  else:
    print('輸入無效,程式終止')
    break

七、總結

以上是目前執行程式發現並解決問題的一些思路,這個程式對高手而言或許不夠簡潔,但是基於目前知識有限,希望大家能夠提出建議,還有執行中要是有發現其他問題歡迎提出,共同進步。最後小秀一把一次就猜對成績,嘿嘿!