參考教材:《Python3程序開發(fā)指南(第二版)》1.3.2
程序描述:
創(chuàng)建隨機(jī)整數(shù)數(shù)矩陣
運(yùn)行
分析開始艾疟!
- 既然是生成隨機(jī)數(shù)柒巫,那么首先我們需要加載一個(gè) random 包
import random
- 然后我們需要一個(gè)生成隨機(jī)整數(shù)的函數(shù)
get_int(msg, minimum, default)
Ps:其實(shí)直接用random.randint(minimum, maximum)
也可以直接得到隨機(jī)的整數(shù)诡挂,可能是教材想通過這個(gè)例子讓我們回顧函數(shù)的應(yīng)用吧徙垫。
示例代碼
def get_int(msg, minimum, default):
while True:
try:
line = input(msg)
if not line and default is not None:
return default
i = int(line)
if i < minimum:
print('must be >= ',minimum)
else:
return i
except ValueError as err:
print(err)
注意 這里的if not line and default is not None:
比較繞
可以這么理解:if not (line and default is not None):
等價(jià)于if not line and default
它的意思是:判斷輸入的字符串跟default 是不是同時(shí)指向同一個(gè)對象:python中 None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元組()都相當(dāng)于False)
如果只按下Enter鍵 那么line指向None迅办,如果default也指向None line and default == None
, 函數(shù)就返回一個(gè)空的defaulf
Ps: 根據(jù)網(wǎng)評肴裙,還是推薦大家以后用if not x
而不是if not x is None
的判斷語句,畢竟前者看起來顯然很多
如果input()輸入非空涌乳,那么就開始接下來轉(zhuǎn)整型等等一系列操作蜻懦,這里就不多說了
3.現(xiàn)在,我們要獲取生成矩陣的4個(gè)要素:行數(shù)夕晓, 列數(shù)宛乃,最大值,最小值
很顯然可以這么實(shí)現(xiàn):
rows = get_int('rows: ',1,None)
columns = get_int('columns: ',1,None)
minimum = get_int('minmum (or Enter for 0): ',-1000000, 0)
default = 1000
if default < minimum:
default = 2*minimum
maximum = get_int('maximum (or Enter for '+str(default)+'): ',
minimum,default)
Ps:其實(shí)這里maximum的定義我覺得根本沒必要這么麻煩蒸辆,直接定義一個(gè)值就完事了征炼,多簡單,還有這個(gè)default的作用我也沒有想明白
4.現(xiàn)在我們用兩層循環(huán)完成最后的工作
row = 0
while row < rows:
line = ''
column = 0
while column < columns:
i = random.randint(minimum,maximum)
s = str(i)
while len(s) < 10: #要讓每個(gè)元素對齊
s = ' '+s
line +=s
column +=1
print(line)
row +=1
最后完整的代碼:
__author__ = 'Administrator'
#! /usr/bin/python<br># -*- coding: utf8 -*-
import random
def get_int(msg, minimum, default):
while True:
try:
line = input(msg)
if not line and default:
return default
i = int(line)
if i < minimum:
print('must be >= ',minimum)
else:
return i
except ValueError as err:
print(err)
rows = get_int('rows: ',1,None)
columns = get_int('columns: ',1,None)
minimum = get_int('minmum (or Enter for 0): ',-1000000, 0)
default = 1000
if default < minimum:#其實(shí)無所謂
default = 2*minimum
maximum = get_int('maximum (or Enter for '+str(default)+'): ',
minimum,default)
row = 0
while row < rows:
line = ''
column = 0
while column < columns:
i = random.randint(minimum,maximum)
s = str(i)
while len(s) < 10:
s = ' '+s
line +=s
column +=1
print(line)
row +=1
Ps:其實(shí)對于給定循環(huán)次數(shù)的情況,我們更傾向與用 for in 循環(huán)
代碼如下:
for row in range(0,rows):
line = ''
for column in range(0,columns):
i = random.randint(minimum,maximum)
s = str(i)
while len(s) < 10:
s = ' '+s
line +=s
column +=1
print(line)
row +=1