原本想寫點shell腳本練練手,突發奇想試試做個猜數字遊戲吧.於是就有了後續的事情.最先寫了個最最原始的猜數字腳本.無論功能還是美觀度都不盡如人意,於是一個一個版本迭代更新,後續版本每次都比前一次功能更完善.
通過這次的腳本練習我明白一個道理,"心急吃不了熱豆腐" 亙古不變的真理啊,無論創業也好,做實事打工也罷,還的從頭一步一步做起,凡是心高氣傲一次性想做出完美產品的都不切實際.好的產品需要從用戶需求出發,精雕細琢,層層迭代,才能經受更嚴峻的考驗.
猜數字遊戲原版V1
#給定一個不可變更的兩位數,用戶輸入數字,程序提示大小,根據提示繼續輸入,直到正確輸入數字爲止,遊戲結束.
#!/bin/bash num="32" while true do read -p "Please input a "double-digit": " input if [ $input -gt $num ] ; then echo "Try smaller!" elif [ $input -lt $num ];then echo "Try bigger!" else echo "Good! You are right!" break; fi done
猜數字遊戲改進版V2
增加非法輸入判斷功能.
增加了隨機數功能.
#!/bin/bash NUM=`echo $RANDOM$RANDOM |cut -c 2-3` while true do read -p "Please input a "double-digit": " input case $input in [0-9][0-9] ) if [ $input -gt $NUM ] ;then echo "Try smaller!" elif [ $input -lt $NUM ];then echo "Try bigger!" else echo "Good! You are right!" break; fi ;; *) read -p "Please input a "double-digit": " input ;; esac done
猜數字遊戲改進版V3
增加了次數統計功能.
增加歷史最好成績前十排名功能.
增加時間顯示功能.
優化結果顯示.
#!/bin/bash NUM=`echo $RANDOM$RANDOM |cut -c 2-3` DATE=`date +%y%m%d-%H:%M` read -p "Please input your name: " USER while true do read -p "Please input a "double-digit": " input i=$((i+1)) case $input in [0-9][0-9] ) if [ $input -gt $NUM ] ;then echo "Try smaller!" elif [ $input -lt $NUM ];then echo "Try bigger!" else echo "Good! You are right!" break; fi ;; *) read -p "Please input a "double-digit": " input ;; esac done printf "%-12s %s\n" "<$USER>" "your record is $i! Try better next time! $DATE" |tee -a ./record.record printf "\n\n" printf "%15s %6s %-8s\n" "-----" "HISTORY RECORD" "-----" cat ./record.record |sort -k5 -g|awk -F! '{print $1,"!",$3}'|head -10 printf "%15s %6s %-8s\n" "-----" "HISTORY RECORD" "-----"
猜數字遊戲改進版
#V4
#修改提示語
#修改計算次數BUG
#!/bin/bash NUM=`echo $RANDOM$RANDOM |cut -c 2-3` DATE=`date +%y%m%d-%H:%M` read -p "Please input your name: " USER i=1 while true do read -p "Please input a "double-digit": " input case $input in [0-9][0-9] ) if [ $input -gt $NUM ] ;then echo "Try smaller!" elif [ $input -lt $NUM ];then echo "Try bigger!" else echo "Good! You are right!" break; fi ;; *) echo "The number should be in 1 to 100: " ;; esac i=$((i+1)) done printf "%-12s %s\n" "<$USER>" "your record is $i! Try better next time! $DATE" |tee -a ./record.record printf "\n\n" printf "%15s %6s %-8s\n" "-----" "HISTORY RECORD" "-----" cat ./record.record |sort -k5 -g|awk -F! '{print $1,"!",$3}'|head -10 printf "%15s %6s %-8s\n" "-----" "HISTORY RECORD" "-----"
Python 第一版
#!/usr/bin/python3 #coding=utf-8 #Python3.4.1 import random number = random.randint(1,100) guessnumber = 0 print (number) do = True while do: inputnumber = input("Please input a double-digit:" ) guessnumber+=1 if int(inputnumber)<0 or int(inputnumber)>=100: print ("The number should be in 1 to 100.") else : if int(inputnumber) < int(number): print ("Try Bigger!") elif int(inputnumber) > int(number): print ("Try Smaller!") elif int(inputnumber) == int(number): print ("Good! You are right!") do = False print ("You have try %d times!" %guessnumber)