《疯狂Python讲义》第四章练习题第10题和11题

mac2022-06-30  10

这是我做的《疯狂Python讲义》第四章练习中第10题和11题。 第10题是在终端是画近似圆。 第11题是打印一组有规律的字符。 我的代码如下:

#!/usr/bin/env python3 #coding=utf-8 def get_radius(): num = input("请输入圆的半径:") return int(num) '''画圆''' def draw_circle(): num = get_radius() if num < 9: precision = num/2 elif num < 19: precision = 3*num/5 else: precision = 2*num/3 char_list = [[" " for col in range(2*num+1)] for raw in range(2*num+1)] for raw in range(2*num+1): for col in range(2*num+1): if abs((raw-num)**2+(col-num)**2 - num**2) < precision: char_list[raw][col] = '*' print(char_list[raw][col], end=" ") print("") def get_num(): num = input("请输入一个正整数:") return int(num) def create_list(num): char_list = [[col for col in range(4*num-3)] for raw in range(2*num-1)] for raw in range(2*num-1): for col in range(4*num-3): #先将每一行的元素都赋值为'-' char_list[raw][col] = '-' if raw < num : #上半部分 for i in range(raw+1): #修改每一行特殊位置的元素 char_list[raw][2*num-2-2*i] = chr(ord('a')+i+abs(num-1-raw)) char_list[raw][2*num-2+2*i] = chr(ord('a')+i+abs(num-1-raw)) else: for i in range(num-(raw-num)-1): char_list[raw][2*num-2-2*i] = chr(ord('a')+i+abs(num-1-raw)) char_list[raw][2*num-2+2*i] = chr(ord('a')+i+abs(num-1-raw)) return char_list def print_list(num, char_list): for raw in range(2*num-1): for col in range(4*num-3): print(char_list[raw][col], end="") print("") '''画阵列''' def draw_array(): num = get_num() char_list = create_list(num) print_list(num, char_list) print("10题:画圆") draw_circle() print("\n11题:画阵列") draw_array()

运行效果如下图所示:

最新回复(0)