我們會需要使用random()函式,首先需要匯入random()模塊:
import random
random.random()
random函式的作用是回傳一個[0,1)之間的數值,如:
import random
print(random.random())
輸出的值為:
0.36988584264616886
但是,如果使用random模塊中的randint() 函式,就可以回傳指定范圍內的整數,如:
import random
print(random.randint(0,10))
會輸出:
4
稍微加工一下,就可以做成一個和電腦猜數字的小游戲:
import random #匯入random模塊
a=random.randint(0,10) #設定隨機變數a
b=int(input("請輸入0-10之間的整數:")) #讓用戶輸入值為b
while b != a: #判斷用戶是否猜對
if b > a:
print("太大了")
b=int(input("請再次嘗試:")) #讓用戶再次輸入b
if b < a:
print("太小了")
b=int(input("請再次嘗試:")) #讓用戶再次輸入 b
else:
print("猜對啦!")
運行實體:
請輸入0-10之間的整數:>? 5
太大了
請再次嘗試:>? 2
太大了
請再次嘗試:>? 1
猜對啦!
突發奇想,可以讓電腦自己猜一下自己生成的值是多少:
import random
a=random.randint(0,11) #程式生成的隨機變數a
b=random.randint(0,11) #程式生成的隨機猜測值b
i=1 #i變數用來記錄程式作了幾次猜測
while b !=a:
if b < a:
print("太小了{}".format(i))
b = random.randint(b,11)
elif b > a:
print("太大了{}".format(i))
b = random.randint(0,b)
i+=1 #每猜錯一次,i加一個
else:
print("對了{}".format(i))
運行實體:
PyDev console: starting.
Python 3.8.3 (default, Jul 2 2020, 17:30:36) [MSC v.1916 64 bit (AMD64)] on win32
runfile('D:/pycharm/practise/交換變數.py', wdir='D:/pycharm/practise')
太大了1
太小了2
太大了3
太大了4
對了5
可以再加入time模塊來計算程式花了多久來猜對這個數字:
import random
import time
a=random.randint(0,11)
b=random.randint(0,11)
i=1
ts=time.perf_counter()
while b !=a:
if b < a:
print("太小了{}".format(i))
b = random.randint(b,11)
elif b > a:
print("太大了{}".format(i))
b = random.randint(0,b)
i+=1
else:
te=time.perf_counter()
t=te-ts
print("猜對了{},用時{:.2f}s".format(i,t))
運行實體:
太大了1
太大了2
太大了3
太大了4
猜對了5,用時0.00s
可以再引入兩個變數“s”和“e”來方便日后要修改隨機值:
import random
import time
s=0
e=100
a=random.randint(s,e)
b=random.randint(s,e)
i=1
ts=time.perf_counter()
while b !=a:
if b < a:
print("太小了{}".format(i))
b = random.randint(b,e)
elif b > a:
print("太大了{}".format(i))
b = random.randint(s,b)
i+=1
else:
te=time.perf_counter()
t=te-ts
print("猜對了{},用時{:.2f}s".format(i,t))
再進行一些文本優化:
import random
import time
s=0
e=10000
a=random.randint(s,e)
b=random.randint(s,e)
i=1
ts=time.perf_counter()
while b !=a:
if b < a:
print("第{}次太小了,本次猜測值為:{}".format(i,b))
b = random.randint(b,e)
elif b > a:
print("第{}次太大了,本次猜測值為:{}".format(i,b))
b = random.randint(s,b)
i+=1
else:
te=time.perf_counter()
t=te-ts
print("第{}次猜對了,猜測值為{},用時{:.2f}s".format(i,b,t))
可以加入一個串列記錄電腦每次猜測的資料:
import random
import time
s=0
e=100
a=random.randint(s,e)
b=random.randint(s,e)
i=1
ts=time.perf_counter()
lst=[]
lst.append(b)
while b !=a:
if b < a:
print("第{}次太小了,本次猜測值為:{}".format(i,b))
b = random.randint(b,e)
lst.append(b)
elif b > a:
print("第{}次太大了,本次猜測值為:{}".format(i,b))
b = random.randint(s,b)
lst.append(b)
i+=1
else:
te=time.perf_counter()
t=te-ts
lst.append(b)
print("第{}次猜對了,猜測值為{},用時{:.2f}s".format(i,b,t))
ask=input("是否查看電腦猜測的所有數值?(是或否)")
if ask == "是":
print(lst)
else:
print("程式結束")
運行實體:
PyDev console: starting.
Python 3.8.3 (default, Jul 2 2020, 17:30:36) [MSC v.1916 64 bit (AMD64)] on win32
runfile('D:/pycharm/practise/交換變數.py', wdir='D:/pycharm/practise')
第1次太大了,本次猜測值為:56
第2次太大了,本次猜測值為:17
第3次太大了,本次猜測值為:10
第4次太小了,本次猜測值為:3
第5次太大了,本次猜測值為:54
第6次太大了,本次猜測值為:31
第7次太大了,本次猜測值為:20
第8次太大了,本次猜測值為:9
第9次太小了,本次猜測值為:3
第10次太大了,本次猜測值為:60
第11次太大了,本次猜測值為:31
第12次太大了,本次猜測值為:9
第13次猜對了,猜測值為8,用時0.00s
是否查看電腦猜測的所有數值?(是或否)>? 是
[56, 17, 10, 3, 54, 31, 20, 9, 3, 60, 31, 9, 8, 8]
添加了記錄電腦猜測的每個值,并將其用pyplot將其畫出“
import random
import time
from matplotlib import pyplot as plt
s=0
e=20
a=random.randint(s,e)
b=random.randint(s,e)
i=1
ts=time.perf_counter()
lst=[]
lst.append(b)
while b !=a:
if b < a:
print("第{}次太小了,本次猜測值為:{}".format(i,b))
b = random.randint(b,e)
lst.append(b)
elif b > a:
print("第{}次太大了,本次猜測值為:{}".format(i,b))
b = random.randint(s,b)
lst.append(b)
i+=1
else:
te=time.perf_counter()
t=te-ts
lst.append(b)
print("第{}次猜對了,猜測值為{},用時{:.2f}s".format(i,b,t))
ask=input("是否查看電腦猜測的所有數值?(是或否)")
if ask == "是":
x=range(1,i+2)
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
plt.title("Matplotlib demo")
plt.xlabel("次數")
plt.ylabel("預測值")
plt.plot(x,lst)
plt.show()
else:
print("程式結束")
得到的結果會是這樣子的:
第1次太大了,本次猜測值為:20
第2次太小了,本次猜測值為:10
第3次太小了,本次猜測值為:14
第4次太大了,本次猜測值為:20
第5次太小了,本次猜測值為:5
第6次太小了,本次猜測值為:13
第7次猜對了,猜測值為16,用時0.00s
是否查看電腦猜測的所有數值?(是或否)是
同時會畫出這個折線圖:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/210001.html
標籤:其他
