前言
一个学妹问我的11道python题,我就顺手拿来做了下,发现有些题目还是很有意思的。
1
随机生成一个在[5,10]区间内的整数n,分别输出如下图所示的n行有规律字符图。
【提示】
(I)随机数生成需要导入random库后调用randint(a,b)函数;
(2)利用序列range()函数,获得字母编码值,调用chr()函数将字母编码值转换成字母。
import random
n = random.randint(5, 10) # 随机生成5到10之间的整数n
for i in range(1, n+1):
num_of_chars = 2 * i - 1 # 第i行有2i-1个字符
if i % 2 == 0: # 判断当前行数i是否为偶数
char = chr(97+i-1) # 偶数行字符为小写字母i的大写字母
else:
char = chr(97+i-1) # 奇数行字符为小写字母i本身
line = char * num_of_chars # 构造第i行的字符
print(line.center(n*2-1)) # 将第i行字符居中排列,并输出
运行结果
2
随机生成一个在[5,10]区间内的整数n,分别输出如下图所示的n行有规律字符图。
【提示】
(1)随机数生成需要导入random库后调用randint(a,b)函数;
(2)利用序列range()函数,获得字母编码值,调用chr(0函数将字母编码值转换成字母。
(3)若n是奇数,输出如左图所示的图形;若n是偶数,输出如右图所示的图形。
import random
# 生成[5,10]范围内的随机整数n
n = random.randint(5, 10)
# 根据n的奇偶性,选择输出A、B字母的范围
if n % 2 == 0:
letter_range = range(65, 74) # A~I字母的编码值
else:
letter_range = range(65, 73) # A~H字母的编码值
# 输出图形
for i in range(n):
letter = chr(letter_range[i % len(letter_range)]) # 获取当前行应输出的字母
spaces = n - i - 1 # 计算当前行前面应输出的空格数
print(' ' * spaces + letter * (2 * i + 1)) # 输出当前行
for i in range(n - 2, -1, -1):
letter = chr(letter_range[i % len