如何在MIPS中基于数组实现水平条形图?求解决方案
没问题,这个需求其实用Python就能轻松搞定,我给你拆解下实现思路和具体代码:
实现思路
核心逻辑很简单,分三步就能完成:
- 第一步:定义或获取自定义长度的非负整数数组(可以手动写死,也支持用户输入)
- 第二步:遍历数组中的每个元素,生成对应数量的星号,注意限制星号数量在0-20之间(如果元素大于20,就只输出20个星号)
- 第三步:把星号条形和对应的数值一起打印,用对齐格式让图表更规整
Python代码示例(基础版)
如果只是快速验证效果,可以直接手动定义数组:
# 自定义数组,长度和元素都可以随便改 num_array = [4, 5, 6, 7, 22, 0, 15] # 遍历数组生成条形图 for num in num_array: # 确保星号数量不超过20 star_count = min(num, 20) stars = '*' * star_count # 左对齐星号,占20位,让所有条形右端对齐,再显示数值 print(f"{stars:<20} | {num}")
运行这段代码后,输出会是:
**** | 4 ***** | 5 ****** | 6 ******* | 7 ******************** | 22 | 0 *************** | 15
Python代码示例(用户自定义输入版)
如果想让用户自己设置数组长度和元素,可以加上输入逻辑,还能做输入验证避免错误:
# 让用户输入数组长度 n = int(input("请输入数组长度:")) num_array = [] # 循环获取每个非负整数,做输入验证 for i in range(n): while True: try: num = int(input(f"请输入第{i+1}个非负整数:")) if num >= 0: num_array.append(num) break else: print("请输入非负整数哦!") except ValueError: print("请输入有效的整数!") # 打印最终的条形图 print("\n生成的水平条形图:") for num in num_array: star_count = min(num, 20) stars = '*' * star_count print(f"{stars:<20} | {num}")
关键细节说明
min(num, 20):这一步是核心,确保即使数组里的数值超过20,也只会输出20个星号,完全符合需求里的0-20范围f"{stars:<20}":用字符串格式化让星号左对齐并占20个字符宽度,这样所有条形的右端能对齐,图表看起来更整洁- 输入验证:第二个版本里的循环和try-except是为了防止用户输入负数或非整数,让程序更健壮
如果用其他语言(比如JavaScript、Java),思路也是完全一致的——遍历数组、生成对应星号、限制数量、格式化输出就行,本质逻辑没区别。
内容的提问来源于stack exchange,提问作者Lexie Anne
相关产品推荐
相关产品推荐

