python解题_python 做题

哎,,辛苦的一天,写了这些python题,,头疼 菜鸟一个

import pandas as pd

df = pd.read_excel('E://data//朝阳医院2018年销售数据.xlsx')

df.head() #打印前五行

df.shape #有多少行,多少列

df.dtypes #查看每列的数据类型

colNameDict = {'购药时间':'销售时间'}

#列名重命名

df.rename(columns = colNameDict,inplace=True) #将购药时间改为销售时间 inplace=true表示不创建新的对象直接对原有的数据进行更改,false表示创建新的数据对象

df.head()

#缺失值的处理

print('删除缺失值前的大小',df.shape)

df=df.dropna(subset=['销售时间','社保卡号'],how='any') #删除列(销售时间,社保卡号)中为空的行,其中how='any'意思为给定列中任何一个有空值就删除行

print('删除缺失值后的大小',df.shape)

#数据类型的转换

df['销售数量']=df['销售数量'].astype('float')

df['应收金额']=df['应收金额'].astype('float')

df['社保卡号']=df['社保卡号'].astype('ocject')

##修改日期

def splitsaletime(timeColser):

timelist=[]

for value in timeColser: #例如2018-01-01 星期五 ,分割后为:2018-01-01

dateStr = value.split(' ')[0]

timelist.append(dateStr)

timeSer= pd.Series(timelist) #将列表转行为一维数据series类型

return timeSer

##输入:timecolser--销售时间这一列,是个series数据类型

##输出:分割后的时间,返回也是这个数据类型

timeSer= df.loc[:,'销售时间'] #获取销售时间这一列

dateSer = splitsaletime(timeSer) #对字符串进行分割,获取销售日期

df.loc[:,'销售时间']=dateSer #修改销售时间这一列的值

df.head()

#字符串转换日期

df.loc[:,'销售时间']= pd.to_datetime(df.loc[:,'销售时间'],format='%Y-%m-%d',errors='coerce')

df.dtypes

df=df.dropna(subset=['销售时间','社保卡号'],how='any')

##数据排序

#### 使用pd.sort.values方法进行排序,by表示按照那一列进行排序,ascending=true时表示升序排列,false表示降序排列

print('排序前的数据')

df.head()

df=df.sort_values(by='销售时间',ascending=True)

print('排序后的数据')

df.head()

##排序后的行号乱了,,需要进行重新的排序

df= df.reset_index(drop=True)

df.head()

##异常值的处理,,首先我用describe()方法查看数据框中所有数据每列的描述统计信息、

df.dedscribe() #从结果可以看出销售数量有负值出现,,可能是记录错误,删除

#删除通过条件判断删除

queryser=df.loc[:,'销售数量']>0 #设置查询条件

print('删除异常值之前',df.shape)

df= df.loc[queryser,:] #条件的应用

print('删除异常值之后',df.shape)

## 构建模型

#### 计算第一个指标,月均消费次数=总消费次数/月份数,,,,如果同一天所有消费算一次同一个人,销售时间和社区卡号

kpi_df = df.drop_duplicates(

subset=['销售时间','社区卡号']

) #删除重复的数据

totali = kpi_df.shape[0] #总消费的次数,,,总共的行数

print('消费次数:',totali)

# -----------------------------------------------------------------------

# 北京出租车计价:

# 收费标准:

# 3公里以内收费13元

# 基本单价: 2.3元 / 公里(超出3公里以外)

# 空驶费: 超过15公里后,每公里加收单价的50 % 的空驶费(即3.45元 / 公里)

# 要求:输入公里数,打印出费用金额(以元为单位四舍五入)

km = int(input("请输入公里数:"))

money=0

if km>=0 and km <=3:

print("你需要支付:13元")

elif km>3 and km <=15:

feiyong =13+2.3*(km-3)

print("你需要支付:",feiyong)

else:

feiyong = 13+2.3*(km-3)+2.3*0.5*(km-15)

print("你需要支付:",feiyong)

# -------------------------------------------------------------

# 2. 输入一个学生的三科成绩(三个整数):

# 打印出最高分是多少?

# 打印出最低分是多少?

# 打印出平均分是多少?

a=input("请输入第一科成绩:")

b=input("请输入第二科成绩:")

c=input("请输入第三科成绩:")

x=max(a,b,c)

print("最高成绩是:",x)

y=min(a,b,c)

print("最低成绩是:",y)

zuida = a #假设A最大

if b>zuida:

zuida = b

if c>zuida:

zuida=c

print(zuida)

# ----------------------------------------------------------------

# 3、 BMI指数(Body Mass Index) 以称身体质量指数

# BMI值计算公式:

# BMI = 体重(公斤) / 身高的平方(米)

# 例如:

# 一个人69公斤,身高是173公分

# BMI = 69 / 1.73**2 = 23.05

# 标准表:

# BMI < 18.5 体重过轻

# 18.5 <= BMI < 24 体重正常

# BMI > 24 体重过重

# 要求: 输入身高的体重,打印出BMI的值并打印体重状况

for i in range(3):

x = float(input("请输入身高(米):"))

y = int(input("请输入体重(公斤):"))

BMI = y/(x**2)

print("BMI指数为:",BMI)

if BMI<18.5 and BMI>0:

print("体重过轻")

elif BMI>=18.5 and BMI<=24:

print("体重正常")

elif BMI>24:

print("体重过重")

else:

print("你的输入有误")

# ----------------------------------------------------------

# 2. 输入一年中的月份(1~12) 输出这个月在哪儿

# 个季度,如果输入的是其它数,则提示您输错了

for i in range(3):

yuefen = int(input("请输入月份:"))

if yuefen >=1 and yuefen <= 12:

if yuefen <=3:

print("春季")

elif yuefen <=6:

print("夏季")

elif yuefen <=9:

print("秋季")

else:

print("冬季")

# ------------------------------------------------------------------

# 3. 分三次输入当前的小时,分钟和秒数,在终端

# 打印时此距离凌晨0:0:0 秒过了多少秒

xiaoshi = int(input("请输入小时:"))

fenzhon = int(input("请输入分钟:"))

miaoshu = int(input("请输入秒数:"))

s = xiaoshi*60*60+fenzhon*60+miaoshu

print("你现在距离0:0:0经过了",s,"秒")

# -----------------------------------------------------

# 2. 输入任意一个字符串,判断这个字符串是否是回文

# 回文示例:

# 上海自来水来自海上

# ABCCBA

# 12321

# (回文是指中心对称的文字)

# ---------------------------------------------------

for i in range(3): # 控制下面这段代码的执行次数,目前为连续执行三次

s = input("请输入文字: ")

# 反转字符串s

r = s[::-1] ##将数据转换,例如:s=123789 r=987321

if s == r:

print(s, "是回文")

else:

print(s, "不是回文")

# ------------------------------------------------

# 题目:有1题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?

# 都是多少?、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

for i in range(1,4):

for j in range(1,4):

for k in range(1,4):

if (i!=j) and (i!=k) and (j!=k):

print(i,j,k)

# ---------------------------------------------------------

# 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%

# ;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,

# 可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,

# 可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,\高于100万元时,超过100万元的部分按1%提成,

# 从键盘输入当月利润I,求应发放奖金总数?

jianjing1 = 100000*0.01

jianjing2 = jianjing1+100000*0.075

jianjing3 = jianjing2+200000*0.05

jianjing4 = jianjing3+200000*0.03

jianjing5 = jianjing4+400000*0.015

x=0

while x<3:

lirun = int(input("请输入本月利润:"))

if lirun <= 100000:

jianjing=lirun*0.01

print('奖金为', jianjing,'元')

break

elif lirun<=200000:

jianjing = jianjing1+(lirun-100000)*0.075

print('奖金为', jianjing,'元')

break

elif lirun<=400000:

jianjing = jianjing2+(lirun-200000)*0.05

print('奖金为', jianjing,'元')

break

elif lirun<=600000:

jianjing = jianjing3+(lirun-400000)*0.03

print('奖金为', jianjing,'元')

break

elif lirun<=1000000:

jianjing = jianjing4+(lirun-600000)*0.015

print('奖金为', jianjing,'元')

break

elif lirun>1000000:

jianjing = jianjing5+(lirun-1000000)*0.01

print('奖金为', jianjing,'元')

break

else:

print('你的输入有误,请重新输入。。。')

x = x + 1

# --------------------------------------------------------------------------------------------------------------

# 题目:一个整数,它加上100后是一个完全平方数,再加上268又是一个完全平方数,请问该数是多少?

# 如果一个正整数 a 是某一个整数 b 的平方,那么这个正整数 a 叫做完全平方数。零也可称为完全平方数。

# main()

# {

# long int i,x,y,z;

# for (i=1;i<100000;i++):

# {x=sqrt(i+100);   /*x为加上100后开方后的结果*/

#   y=sqrt(i+268);   /*y为再加上268后开方后的结果*/

#    if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/

#     printf("\n%ld\n",i); /*\n是换行的意思,%ld是长整型*/

#  }

# }

import math

for i in range(10000):

#转化为整型值

x = int(math.sqrt(i + 100))

y = int(math.sqrt(i + 268))

if(x * x == i + 100) and (y * y == i + 268):

print(i)

# -------------------------------------------------------------------------------------------------------------

# 题目:输入某年某月某日,判断这一天是这一年的第几天?

year = int(input('请输入年份:\n'))

month = int(input('请输入月份:\n'))

day = int(input('请输入天:\n'))

# 分别为每年一月至十一月的天数相加和,因为进入12月开始就按天加,所以此处没有加至12月,只加到了11月末

# 此部分为按月累加

months = (0,31,59,90,120,151,181,212,243,273,304,334)

if 0 <= month <= 12:

sum = months[month - 1]

else:

print ('data error')

# 加天数

sum += day # /*sum = sum + day*/

leap = 0

if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):

leap = 1

if (leap == 1) and (month > 2):

sum += 1

print ('距离本年初已经经过%d天' % sum)

# --------------------------------------------------------------------------------------------------------

# 写出九九乘法表的效果

for m in range(1,10):

for n in range(1,10):

if m>=n: # 控制跳转行的,当m>n时进入m的下一次循环,,为了呈现出下三角的形状

print('%s×%s=%s'%(m,n,m*n),end=' ') # end = ' ' 表示去除自动换行,让数据呈现一行 其中的%s为占位符,表示将得到值插入所占的位置

print() # 让for n in range(1,10) 循环一次结束换行一次

# ---------------------------------------------------------------------------

# 1到100求和

x = 0

for i in range(1,101):

x = x+1

# 第二种方法

sum(range(1,101))

# ------------------------------------------------------------------

# 用代码实现,输入三个值使得从小到大的顺序输出

# -------------------------------------------------------------------

data = []

for i in range(1,4): # 控制循环的次数,使得你有三次输入的机会

x = int(input('请输入第%d个数值:\n'%(i)))

data.append(x) # 将输入的值存放到建立好的列表中

data.sort() # 对列表的数据进行从小大打的排序

print(data)

# ----------------------------------------------------------

# 用*打印出来一个P的形状

# ----------------------------------------------------------

print ('*' * 10)

for i in range(5):

print ('* *')

print ('*' * 10)

print ('*\n' * 6)

# -------------------------------------------------------------------

#题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,

# 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

# -------------------------------------------------------------------

f1 = 1

f2 = 1

for i in range(1,12):

print ('%12d %12d' % (f1,f2))

if (i % 2) == 0:

print ('\n')

f1 = f1 + f2

f2 = f1 + f2

# -------------------------------------------------------

# 计算在101到201之间有多少个素数

h = 0

leap = 1

from math import sqrt

from sys import stdout

for m in range(101,201):

k = int(sqrt(m + 1))

for i in range(2,k + 1):

if m % i == 0:

leap = 0

break

if leap == 1:

print ('%-4d' % m)

h += 1

if h % 10 == 0:

print ('\n')

leap = 1

print ('The total is %d' % h)

# ---------------------------------

# 创建列表将文字所对应的索引打印出来

# ----------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值