(太闲了一天天的,只会c/c++和python所以选了2,5题)
题目出处:http://www.grapecity.com.cn/career/challenge
题目2:数据可视化 编程语言:不限
题目描述:
有句话是这么说的:“文不如表,表不如图”。形象地描述了图表在传达信息时,给接收者带来的截然不同的效率和体验。因此,在计算机计算能力、数据规模和决策需求都不断提升的当下,数据可视化的应用也越来越普遍。输入
数据可视化的范围很广,涉及到数据的获取、加工、建模、图形学,人机交互等很多概念和领域,想更快上手,获得更好的体验,使用DragonFly
BI这样的专业工具和服务是更明智的选择。
今天,我们通过一个简化的命题,来亲手实现简单的数据可视化。编写一个程序,对于给定的一组数据和要求,输出一个以字符组成的柱状图。
第一行,一个整数 N(1<=n<=20),表示这组数据的条目数。输入示例
第二行,两个字符串,用于表示数据展示在柱状图上的排序方式。第一个字符串是“Name” 或者
“Value”,表示排序的依据是数据条目的名称亦或数值;第二个字符串是 “ASC” 或者 “DESC”,表示升序或降序。 随后的 N
行,每行包含一个字符串 S 和一个数字 V,以空格分隔,表示一条数据。S 即数据条目的名称,仅包含小写字母,V
即对应的数值,是一个整数,(0<=V<=1,000,000)
3
Value DESC
apple 5
pen 3
pineapple 10
输出示例
文章图片
题解
- 接受输入
- 关联排序
- 格式输出(找出最长的字符 和对应最大的value就好了,逐行print就好了)
- Don’t BB ,Please Code
#python 3.65,win10 Big——one #接受输入并初始化
def inputData():
try:
dataLen = int(input())
gist, way = input().split(' ')
data = https://www.it610.com/article/[]
maxLenWrod = 0
maxValue = 0
for _ in range(dataLen):
name, value = input().split(' ')
temp1 = len(name)
temp2 = int(value)data.append((name, temp2))
if maxLenWrod < temp1:
maxLenWrod = temp1
if maxValue < temp2:
maxValue = https://www.it610.com/article/temp2
return data, gist, way, dataLen, maxValue, maxLenWrod
except:
print("Error!输入错误")
#按要求排序
def mySort(data,gist,way):
resv=False
if way == "ASC":
resv = False #升序
elif way == "DESC":
resv = True#降序
else:
print("Warning!排序方式输入错误,请输入ASC:升序,DESC:降序(默认采用升序)")
#采用lambda表达式选择排序对象,调用内置列表的排序方法
if gist == "Value":
data.sort(key=lambda x: x[1], reverse=resv)
elif gist == "Name":
data.sort(key=lambda x: x[0], reverse=resv)
else:
print("Warning!排序对象输入错误,请输入Name:按名称排序,Value:按值排序(默认采用按值排序)")
data.sort(key=lambda x: x[1], reverse=resv)
#画表
def createTable(data,dataLen,maxValue,maxLenWrod):
#由于黑方块在python输出中占两个字符位置因此,需要进行*2
upside = "\u250c" + "\u2500" * (maxLenWrod+1) + \
"\u252c" + "\u2500" * (2*maxValue + 1) + "\u2510" #表格上边
downSide = "\u2514" + "\u2500" * (maxLenWrod+1) + "\u2534" \
+ "\u2500" * (2*maxValue + 1) + "\u2518"#表格下边
septalSide = "\u251c" + "\u2500" * (maxLenWrod+1) + "\u253c" \
+ "\u2500" * (2*maxValue + 1) + "\u2524"#表格间隔
print(upside)
for i in range(dataLen-1):
name = data[i][0]
value = https://www.it610.com/article/data[i][1]
#每一行数据(为了保持美观在字符前加一个空格保持对称)
temp ="\u2502" + "\u0020" +"\u0020" * (maxLenWrod - len(name))+name + "\u2502" + "\u0020" + \
"\u2588" * value + "\u0020" * (2*maxValue - value * 2) + "\u2502"
print(temp)
print(septalSide)
#最后一组数据显示
name = data[-1][0]
value = https://www.it610.com/article/data[-1][1]
temp ="\u2502" +"\u0020" +"\u0020" * (maxLenWrod - len(name))+name + "\u2502" + "\u0020" + \
"\u2588" * value + "\u0020" * (2*maxValue - value * 2) + "\u2502"
print(temp)
print(downSide)
pass
#主函数调用
def main():
data, gist, way, dataLen, maxValue, maxLenWrod = inputData()
mySort(data, gist, way)
#print(data)
createTable(data, dataLen, maxValue, maxLenWrod)if __name__ == "__main__":
main()
input()#保持cmd窗口不关闭
结果示例
文章图片
C++版
装逼演全套 c++也得整上
/*
author :Big——one
c++11, Ubuntu16
*/
//#include
#include
#includeusing namespace std;
/*定义排序规则*/
//根据value的值升序排序
bool cmp1(pair,int>a,pair,int>b)
{
return a.second < b.second;
}//根据value的值降序排序
bool cmp2(pair,int>a,pair,int>b)
{
return a.second > b.second;
}
//根据name的值升序序排序(a到z)
bool cmp3(pair,int>a,pair,int>b)
{
return a.first < b.first;
}
//根据name的值降序排序(按z到a)
bool cmp4(pair,int>a,pair,int>b)
{
return a.first > b.first;
}/*定义制表*/
//上边
void upSide(int x,int y)
{
cout<<"\u250c";
for(int i=0;
i&data,int maxLenS,int maxV)
{
int temp=0;
cout<<"\u2502";
//S字符
temp = maxLenS-data.first.length();
for(int j=0;
j*data,int maxLenS,int maxV,int N)
{
maxV +=1;
upSide(maxLenS,maxV);
int temp=0;
for(int i=0;
i>N;
if(N>20||N<1)
{
cout<<"input number 1<=N<=20"<>gist>>way;
if((gist!="Value"&&gist!="Name")||(way!="ASC"&&way!="DESC"))
{
cout<<"input the first char should be \"Value\" or \"Name\" "<pr[20];
int maxLenS = 0, maxV = 0;
for(int i=0;
i>pr[i].first>>pr[i].second;
if(maxLenS
文章图片
题目5:杨辉三角 大水题,没啥说的,通项式:f(x,y)=f(x-1,y-1)+f(x-1,y)
Don’t BB ,Please Code
//dev-c++ 5.11
#include
int func(int x,int y)
{
if((y==1)||(y==x))return 1;
//边缘为1 return func(x-1,y-1)+func(x-1,y);
//递归 f(x,y) = f(x-1,y-1)+f(x-1,y)
}
int main()
{
int x,y;
scanf("%d%d",&x,&y);
printf("%d\n",func(x,y));
return 0;
}
推荐阅读
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- 爬虫|若想拿下爬虫大单,怎能不会逆向爬虫,价值过万的逆向爬虫教程限时分享
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍
- java|微软认真聆听了开源 .NET 开发社区的炮轰( 通过CLI 支持 Hot Reload 功能)