版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wuq757693255/article/details/81073665
题目要求
生成一个随机整数组成的网格的程序,用户可以规定需要输入多少行,多少列,以及整数所在的范围。
示例:
rows:7v
invalid literal for int() with base 10: '7v'
rows:4
columns:7
minimum(or Enter for 0):-10
maximum(or Enter for1000):
478 297 0 487 508 56 456
762 691 285 599 511 163 450
763 194 744 19 716 210 5
777 363 356 27 468 992 351
解决思路
1.定义一个获取用户输入整数的函数,用来获取行、列及整数范围(最大最小值)
2.使用random模块的randint方法随机生成整数
3.使用2个循环将每行每列的整数打印出来
源码
#-*- coding: utf-8 -*-
import random
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)
rows=get_int("rows:",1,None)
columns=get_int("columns:",1,None)
minimum=get_int("minimum(or Enter for 0):",-10000,0)
default=1000
#注意默认值如果小于最小值的情况
if default<minimum:
default=2*minimum
maximum=get_int("maximum(or Enter for"+str(default)+"):",minimum,default)
row=0
while row<rows:
column=0
line=""
while column<columns:
i=random.randint(minimum,maximum)
s=str(i)
while len(s)<8: #每个随机生成的数字都使用8字符的字符串来表示
s=" "+s
line+=s
column+=1
print(line)
#注意 该行不能放在第三个循环里面,因为每print一次,换行。
row+=1
涉及知识点
循环语句while的使用
try: except: 捕获异常语句的使用
python 内置模块random模块,使用randint随机生成给定范围的整数