目录
货物托运收费(循环)
三角形判.
人民币和美元币值转换
打印斐波那契数列
购物
字符转换
编程任务:星期几
中位数计算
某月天数(列表)
字典翻转输出
登录
点菜
字母统计
电话簿
课程及其编码字典
CSV 格式数据清洗
文本字符分布
传感器采集数据
读取成绩
货物托运收费(循环)
描述
托运货物收费是根据货物重量来算的,某托运处的收费标准是:货物重量在50千克(包括)以下的,每千克0.5元,超过50千克部分每千克0.6元,
写一程序,输入货物重量,输出收费金额,每次输完重量后问一下,输入下一个货物的重量吗(y/n,Y/N),回答是y或Y,则继续,否则程序结束。
输入格式
第一行输入货物重量
第二行输入Y(y)或者N(n)
输出格式
收费金额,中间空格分隔,如下所示
货物重量: 30 收费: 15.0
weigh = eval(input())
judge = input()
while judge != 'n' and judge != 'N':
if weigh <= 50:
p = 0.5 * weigh
else:
p = (weigh - 50) * 0.6 + 25
print('货物重量: {} 收费: {}'.format(weigh, p))
weigh = eval(input())
judge = input()
else:
if weigh <= 50:
p = 0.5 * weigh
else:
p = (weigh - 50) * 0.6 + 25
print('货物重量: {} 收费: {}'.format(weigh, p))
weigh = eval(input())
judge = input()
三角形判.
描述
输入三个数,判断其是否能组成三角形。如果可以,则判断三角形的类型(等腰、等边、直角、普通)。 输出格式为:"等边三角形"、"等腰三角形"、"直角三角形"、"普通三角形"、"非三角形"
输入输出示例
输入:2,2,2
输出:等边三角形
a,b,c=eval(float("请输入三个数(用逗号隔开)"))
if (a + b > c and b + c > a and a + c > b ):
if (a == b == c):
print('等边三角形')
elif (a == b or a == c or b == c):
print('等腰三角形')
elif (a**2 + b**2 == c**2 or a**2 + c**2 == b**2 or b**2 + c**2 == a**2):
print('直角三角形')
else:
print('普通三角形')
else:
print('非三角形')
人民币和美元币值转换
描述
人民币和美元是世界上通用的两种货币之一,写一个程序进行货币间币值转换,其中:人民币和美元间汇率固定为:1美元 = 6.78人民币。
程序可以接受人民币或美元输入,转换为美元或人民币输出。人民币采用RMB表示,美元USD表示,符号和数值之间没有空格。实现如下功能:
输入:RMB100,程序输出:USD14.7
输入:USD100,程序输出:RMB678
输入格式
例1: RMB100
例2: USD100
例3: RMB203.5
输入使用input(''),且input不要输出任何提示信息!
输出格式
例1: RMB100
例2: USD100
例3: RMB203.5
输入输出示例
输入 | 输出 | |
示例 1 | RMB1000 | USD147.49 |
示例 2 | USD100 | RMB678 |
tmp= input('')#tmp用于接收输入币值,继续编程进行币值转换并输出
if tmp[0:3] == 'RMB':
print("USD{:.2f}".format(eval(tmp[3:])/6.78))
elif tmp[0:3] == 'USD':
print("RMB{:.2f}".format(eval(tmp[3:]) * 6.78))
打印斐波那契数列
描述
打印斐波那契数列中的前18项数据,每行打印2个。(用列表实现)
斐波那契数列第一个数和第二个数都为1,其后每个数都是前两个数字之和。
输入格式
无
输出格式
输出9行,每行2个数据用空格隔开
输入输出示例
输入 | 输出 | |
示例 1 |
|
ls = [1,1]
for i in range(2,19):
if i%2==0:
print("{} {}".format(ls[i-2],ls[i-1]))
tmp = ls[i-2]+ls[i-1]
ls.append(tmp)
购物
描述
从键盘输入收取顾客的钱数m和购买商品的价格p,通过计算输出应找给顾客的钱数,输出数据保留1位小数。
输入格式
输入数据分两行,第一行输入m的值,第二行输入p的值,输入时确保m的值大于等于p的值。
输出格式
一个浮点数,严格保留小数后1位小数。
输入输出示例
输入 | 输出 | |
示例 1 |
|
|
a=eval(input())
b=eval(input())
print("{:.1f}".format(a-b))
字符转换
描述
从键盘输入一行字符,将其中的小写字符转为大写字符,大写字符转为小写字符,其它字符保持不变,输出转换后的字符。
输入格式
一行字符
输出格式
转换后的字符
输入输出示例
输入 | 输出 | |
示例 1 |
|
|
s = list(input())#转列表好处理
for i in range(len(s)):
if 'a' <= s[i] <= 'z':
s[i]=chr(ord(s[i]) - 32)
elif 'A' <= s[i] <= 'Z':
s[i]=chr(ord(s[i]) + 32)
else:
s[i]=s[i]
print(''.join(s))#将列表合并为字符串
编程任务:星期几
任务描述:
我们经常需要知道若干天以后是星期几,以便安排活动日程表。通常我们会查日历、挂历或查手机、电脑提供的日历。现在,请你设计一个程序,如果告诉你某天是星期几,请计算出该天前或后第k天是星期几?
在此约定,0表示星期天,1表示星期一,2表示星期二,依此类推。k>0表示该天之后第k天,k=0表示当天,k<0表示该天之前的第k天。
输入:
第一行一个整数0至6的整数,表示当前为星期几。
第二行一个整数k,表示之后的第k天。
输出:
输出一个整数,表示该天前/后第k天是星期几。
输入举例1: 输入举例2: 输入举例3:
1 3 2
8 0 -4
输出举例1: 输出举例2: 输出举例3:
2 3 5
today = eval(input())
day = eval(input())
print(today+day%7)
中位数计算
描述
从键盘输入n个数字存入列表,输出升序排列后的列表以及这组数的中位数。
中位数指数据数列中的数按照从小到大的顺序排列后,处于最中间位置的数据值。若数据个数为奇数个,则中位数为处于最中间的数;若数据个数为偶数个,则中位数为最中间的两个数据的平均值。
输入格式
输入一行数据,数字之间用空格隔开。
输出格式
列表内容
中位数
输入输出示例
输入 | 输出 | |
示例 1 |
|
|
ls = input().split()
for i in range(len(ls)):
ls[i] = eval(ls[i])
ls.sort()
print(ls)
half = len(ls) // 2
count=ls[half] + ls[~half]
print(count//2) if count%2==0 else print(count/2)
某月天数(列表)
创建一个列表,依次存放每个月对应的天数。根据用户输入的年份和月份输出该月的天数。
注意:闰年2月的情况
输入输出示例
输入 | 输出 | |
示例 1 | 2000,2 | 2000年的2月份有29天 |
year,month = map(int,input().split(","))
monthdays=[31,28,31,30,31,30,31,31,30,31,30,31]
if ((year%4==0 and year%100!=0) or year%400==0)and month==2:
monthdays[month-1]=29
print("{}年的{}月份有{}天".format(year,month,monthdays[month-1]))
字典翻转输出
描述
读入一个字典类型的字符串,反转其中键值对输出。
即,读入字典key:value模式,输出value:key模式。
输入格式
用户输入的字典格式的字符串,如果输入不正确,提示:输入错误。
输出格式
给定字典d,按照print(d)方式输出
输入输出示例
输入 | 输出 | |
示例 1 |
|
|
try:
d = {}
a = input()
b = eval(a)
for k in b:#k是键,b[k]是值
d[b[k]] = k
print(d)
except:
print('输入错误')
登录
描述
编程实现登录程序。用户输入账号和密码,当账号和密码跟字典中的键值对相匹配时,显示“登录成功”,否则显示“登录失败”,登录失败时允许重复输入三次。字典内容:dic={'user':'1234','admi':'2134','root':'1243'}
输入输出示例
输入 | 输出 | |
示例 1 | admi 2134 | 登录成功 |
dic={'user':'1234','admi':'2134','root':'1243'}
for i in range(3):
zh = input('') # 输入账号
mm = input('') # 输入密码
if zh in dic and dic[zh]==mm:
print('登录成功')
break
else:
print('登录失败')
点菜
描述
某餐馆的菜单: 拍黄瓜 6元; 小炒肉 28元; 西红柿炒蛋 18元 ;烤鱼 30元 ;手撕鸡 45元; 溜白菜 12元; 三鲜汤 15。编写程序,由用户输入要点的菜(在一行输入,英文的逗号分隔),然后计算菜金,生成账单。
输入输出示例
输入 | 输出 | |
示例 | 拍黄瓜,烤鱼 | 您的点单: |
menu={'拍黄瓜':6,'小炒肉':28,'西红柿炒蛋':18,'烤鱼':30,'红烧肉':38,\
'手撕鸡':45,'溜白菜':12,'三鲜汤':15}
d = input("").split(',') #输入菜名,用逗号分隔
print('您的点单:')
sum=0
for i in d:
print(i)
#填写下面语句,需要缩进的话缩进4个空格
for i in range(len(d)):
sum+=menu[d[i]]
print("合计:{}元。".format(sum))
字母统计
描述
输入一个英文字符串,编写程序,统计字符串中每个字符出现的次数,并输出。
输入输出示例
输入 | 输出 | |
示例 | aswdsawed | a 2 |
L=input() #输入一个字符串
counts={}
for word in L:
#下面填写语句,将程序补充完整,如果需要缩进,用四个空格。
if word not in counts:
counts[word] = 1
else:
counts[word] += 1
for i in counts:
print('{} {}'.format(i,counts[i]))
电话簿
描述
【问题描述】
定义一个电话簿,里头设置以下联系人:
'mayun':'13309283335',
'zhaolong':'18989227822',
'zhangmin':'13382398921',
'Gorge':'19833824743',
'Jordan':'18807317878',
'Curry':'15093488129',
'Wade':'19282937665'
现在输入人名,查询他的号码。
【输入形式】
人名,是一个字符串。
【输出形式】
电话号码。如果该人不存在,返回"not found"
【样例输入】
mayun
【样例输出】
13309283335
输入输出示例
输入 | 输出 | |
示例 1 |
|
|
telephone={ 'mayun':'13309283335','zhangmin':'13382398921',
'Gorge':'19833824743','Jordan':'18807317878',
'Curry':'15093488129','Wade':'19282937665'}
m=input()
print(telephone[m])if m in telephone else print('not found')
课程及其编码字典
描述
按以下格式输入课程及编码的字典,然后编写代码完成如下功能:
(1)向字典中添加键值对"chemist":205。
(2)修改"math"对应的值为 201。
(3)用pop方法删除"biology"对应的键值对(若不存在该键,则返回“not exist")。
(4)并按照键的升序打印字典 d 全部信息,参考格式如下(注意,其中冒号为英文冒号,逐行打印)
输入格式
{"math":200, "chinese":202, "english":203}
输出格式
205:chemist
202:chinese
203:english
201:math
t=eval(input())
dict(t)
a={"chemist":205}
d={}
t.update(a)
t["math"]=201
t.pop("biology","not exist")
for key in sorted(t):
d[t[key]]=key
for key in d:
print('{}:{}'.format(key,d[key]))
Python 字典 pop() 方法删除字典给定键 key 所对应的值,返回值为被删除的值。
语法
pop() 方法语法:
pop(key[,default])
参数
- key - 要删除的键
- default - 当键 key 不存在时返回的值
返回值
返回被删除的值:
- 如果
key
存在 - 删除字典中对应的元素 - 如果
key
不存在 - 返回设置指定的默认值 default - 如果
key
不存在且默认值 default 没有指定 - 触发KeyError
异常
CSV 格式数据清洗
类型:Python 文件
附件是一个 CSV 文件,其中每个数据前后存在空格,请对其进行清洗,要求如下:
- 去掉每个数据前后空格,即数据之间仅用逗号 (,) 分割;
- 清洗后打印输出。
示例1:
输入:"
1, 2, 3, 4, 5
'a', 'b' , 'c' , 'd','e'
"
输出:"
1,2,3,4,5
'a','b','c','d','e'
"
注意:
- 示例1 是一个格式示例,不是正确结果;
- 该题输入是读取附件中的数据。
fo = open("data.csv")
for line in fo:
line = line.replace(" ", "")
print(line, end="")
data.csv数据
1 | 2 | 3 | 4 | 5 | 6 | 7 | ||
8 | 3 | 2 | 7 | 1 | 4 | 6 | 5 | |
6 | 1 | 3 | 8 | 5 | 7 | 4 | 2 | |
'a' | 'b' | 'c' | 'x' | 'y' | 'z' | 'i' | 'j' | 'k' |
'k' | 'b' | 'j' | 'c' | 'i' | 'y' | 'z' | 'a' | 'x' |
'z' | 'c' | 'b' | 'a' | 'k' | 'i' | 'j' | 'y' | 'x' |
'a' | 'y' | 'b' | 'x' | 'z' | 'c' | 'i' | 'j' | 'k' |
5 | 2 | 4 | 7 | 1 | 6 | 8 | 3 |
文本字符分布
类型:Python 文件
分析附件 data.txt 文件的字符分布,即每个字符对应的数量。
按照 字符:数量
显示,每行一个结果,如果没有出现该字节则不显示输出,字符采用 Unicode 编码升序排列。
示例1:
输入:无
输出:"
a:1
b:2
c:3
"
注意:
- 示例1 是一个输入输出示范样例,不是正确结果;
-
字符:数量
,其中,字符表示为可打印字符,按照升序。
d = {}
with open("data.txt","r") as fp:#打开文件
for line in fp:#统计字符
for item in line:
d[item] = d.get(item,0) + 1
keys = sorted(d)#排序,注意!字典排序返回的是一个列表
for key in keys:#遍历输出
print(key +':'+ str(d[key]))
data.txt数据
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
传感器采集数据
类型:Python 文件
下面是一个传感器采集数据文件 sensor-data.txt 的一部分:
2018-02-28 01:03:16 19.3024 38.4629 45.08 2.68742
2018-02-28 01:06:16 19.1652 38.8039 46.08 2.68742
2018-02-28 01:06:46 19.175 38.8379 47.08 2.69964
……
其中,每行是一个读数,空格分隔多个含义,分别包括日期、时间、温度、湿度、光照和电压。其中,光照处于第 5 列。 请编写程序,统计并输出传感器采集数据中光照部分的最大值、最小值和平均值,所有值保留小数点后 2 位。
示例1:
输入:无
输出:"最大值、最小值、平均值分别是:49.08,40.08,44.37"
file = open ("sensor-data.txt","r")
ls=[]
for line in file.readlines():
ls.append(eval(line.split()[4]))
ls.sort()
print("最大值、最小值、平均值分别是:{},{},{:.2f}".format(ls[-1],ls[0],sum(ls)/len(ls)))
sensor-data.txt数据
2018-02-28 01:03:16 19.3024 38.4629 45.08 2.68742
2018-02-28 01:06:16 19.1652 38.8039 46.08 2.68742
2018-02-28 01:06:46 19.175 38.8379 47.08 2.69964
2018-02-28 01:07:16 20.3024 48.4629 45.08 3.68742
2018-02-28 01:08:16 21.2252 28.8039 49.08 2.78742
2018-02-28 01:08:46 21.345 39.8379 45.08 2.89964
2018-02-28 01:09:16 19.3024 38.4629 43.08 2.68142
2018-02-28 01:10:16 19.1652 37.8039 45.08 2.68242
2018-02-28 01:10:46 19.175 39.8379 44.08 2.79964
2018-02-28 01:11:16 20.3024 48.4629 45.08 3.78742
2018-02-28 01:12:16 21.2252 41.8039 40.08 2.68742
2018-02-28 01:12:46 21.345 40.8379 45.08 2.99964
2018-02-28 01:13:16 19.3024 38.4629 41.08 2.68742
2018-02-28 01:13:16 19.1652 38.8039 42.08 2.68742
2018-02-28 01:14:46 19.175 38.8379 45.08 2.69964
2018-02-28 01:15:16 20.3024 48.4629 49.08 3.68742
2018-02-28 01:15:16 21.2252 28.8039 40.08 2.78742
2018-02-28 01:16:46 21.345 39.8379 41.08 2.89964
2018-02-28 01:16:16 19.3024 38.4629 41.08 2.68142
2018-02-28 01:17:16 19.1652 37.8039 45.08 2.68242
2018-02-28 01:17:46 19.175 39.8379 43.08 2.79964
2018-02-28 01:18:16 20.3024 48.4629 44.08 3.78742
2018-02-28 01:18:16.023453 21.2252 41.8039 46.08 2.68742
2018-02-28 01:19:46.779088 21.345 40.8379 47.08 2.99964
读取成绩
现给定已读取的学生成绩字符串,里面包含学号,姓名,年龄,语文,数学信息具体内容如下:
101,李明,19,92,93
102,李达,18,86,91
103,李硕,17,94,93
104,李东,20,86,81
105,李果,21,80,85
106,李乐,20,68,89
107,李梅,17,98,86
108,李力,16,88,83
109,李丽,18,98,86
110,李利,15,71,83
111,李里,16,72,86
112,李立,16,78,89
113,李一,17,78,80
114,李李,18,78,86
115,李九,19,72,81
116,李五,15,78,86
117,李七,17,70,85
118,李地,19,78,82
119,李天,19,76,81
120,李海,17,78,85
请分别计算各位学生的总分,并按学号,姓名,年龄,语文,数学,总分的顺序,按总分降序排序输出指定个数的学生信息。
例如:从键盘输入
10
结果输出总分前10名学生信息如下:
103,李硕,17,94,93,187
101,李明,19,92,93,185
107,李梅,17,98,86,184
109,李丽,18,98,86,184
102,李达,18,86,91,177
108,李力,16,88,83,171
104,李东,20,86,81,167
112,李立,16,78,89,167
105,李果,21,80,85,165
114,李李,18,78,86,164
描述
注意:
1、输入每行一个参数 2、输出中不能出现多余的空格,最后一行不要多输出换行3、输入个数若超过原数据按原数据个数输出
输入输出示例
示例1输入:
10
示例1输出:
103,李硕,17,94,93,187
101,李明,19,92,93,185
107,李梅,17,98,86,184
109,李丽,18,98,86,184
102,李达,18,86,91,177
108,李力,16,88,83,171
104,李东,20,86,81,167
112,李立,16,78,89,167
105,李果,21,80,85,165
114,李李,18,78,86,164
示例2输入: 0 示例2输出: ERROR
s='101,李明,19,92,93 102,李达,18,86,91 103,李硕,17,94,93 104,李东,20,86,81 105,李果,21,80,85 ' \
'106,李乐,20,68,89 107,李梅,17,98,86 108,李力,16,88,83 109,李丽,18,98,86 110,李利,15,71,83 ' \
'111,李里,16,72,86 112,李立,16,78,89 113,李一,17,78,80 114,李李,18,78,86 115,李九,19,72,81 ' \
'116,李五,15,78,86 117,李七,17,70,85 118,李地,19,78,82 119,李天,19,76,81 120,李海,17,78,85'
s=s.replace(' ',',').split(',')
n=eval(input())
tmp=s.copy()
sum=0
count=2
ls=[]
xuehao=[]
for i in range(3,len(s),5):
sum=eval(s[i])+eval(s[i+1])
ls.append(sum)
xuehao.append(s[i-3])
tmp.insert(i+count,str(sum))
count+=1
dict=dict(zip(xuehao,ls))
d_order=sorted(dict.items(),key=lambda x:x[1],reverse=True)#字典按值降序排列
if 0<n<=20:
for i in range(n):
a=tmp.index(d_order[i][0])
print(','.join(tmp[a:a+6]))
elif n >20:
for i in range(20):
a = tmp.index(d_order[i][0])
print(','.join(tmp[a:a+6]))
else:
print('ERROR')