Python练习题二
1、计算有n个字符串中最长的字符串长度
编写程序,用于计算有n(1<n<10)个字符串中最长的字符串的长度。前导空格不要计算在内!
输入格式:
在第一行中输入n,接下的每行输入一个字符串
输出格式:
在一行中输出最长的字符串的长度
n = int(input())max = 0for i in range(n): li = str(input()) li = li.strip() if len(li) > max: max = len(li)print("length=%d" % max)
2、统计单词的个数
输入一行字符,以回车结束,统计其中单词的个数。单词是中间没有空格的字符序列,各单词之间用空格分隔,单词间空格数可以是多个。
输入格式:
在一行中输入字符
输出格式:
在一行中输出单词的数量
words=list(input().split())print("count =",len(words))
3、输出10个不重复的英文字母
随机输入一个字符串,把最左边的10个不重复的英文字母(不区分大小写)挑选出来。
如没有10个英文字母,显示信息“not found”
输入格式:
在一行中输入字符串
输出格式:
在一行中输出最左边的10个不重复的英文字母或显示信息“not found"
alpha = input()str = []for i in alpha: if i.isalpha() and (i.upper() not in str) and (i.lower() not in str): str.append(i)str2 = "".join(str)if len(str2)>=10: print(str2[:10])else: print("not found")
4、图的字典表示
图的字典表示。输入多行字符串,每行表示一个顶点和该顶点相连的边及长度,输出顶点数,边数,边的总长度。比如上图0点表示:
{'O':{'A':2,'B':5,'C':4}}。用eval函数处理输入,eval函数具体用法见第六章内置函数。
输入格式:
第一行表示输入的行数
下面每行输入表示一个顶点和该顶点相连的边及长度的字符串
输出格式:
在一行中输出顶点数,边数,边的总长度
n=int(input())num=0sum=0for i in range(n): dic=eval(input()) for j in dic: temp=dic[j] for key in temp: num+=1 sum+=temp[key]print("{:d} {:d} {:d}".format(n,num,sum))
5、字典合并
输入用字符串表示两个字典,输出合并后的字典。字典的键用一个字母或数字表示。注意:1和‘1’是不同的关键字!
输入格式:
在第一行中输入第一个字典字符串;
在第二行中输入第二个字典字符串。
输出格式:
在一行中输出合并的字典,输出按字典序。
"1" 的 ASCII 码为 49,大于 1,排序时 1 在前,"1" 在后。其它的字符同理。
dic1 = eval(input())dic2 = eval(input())for key in dic2.keys(): dic1[key] = dic1.get(key, 0) + dic2[key]t = list(dic1.items())t.sort(key=lambda x : ord(x[0]) if type(x[0]) == str else x[0])out = str(dict(t)).replace(' ', '').replace("'", '"')print(out)
6、jmu-分段函数l
本题目要求计算以下分段函数的值(x为从键盘输入的一个任意实数):
如果输入非数字,则输出“Input Error!”
输入格式:
在一行中输入一个实数x。
输出格式:
在一行中按”y=result”的格式输出,其中result保留两位小数。
x = input()try: x = eval(x) if x > 1: y = 2*x +1 elif x <= -2: y = -2*x - 1 else: y = 3 print('y={:.2f}'.format(y))except: print('Input Error!')
7、 jmu-python-简单计算器
输入一个表达式字符串,计算其结果
输入格式:
- 行1:输入字符串数目
- 下面分别输入要计算的表达式
输出格式:
输出计算结果,结果保留2位小数。对于异常数据能输出相应异常信息。
n = int(input())for i in range(n): exp = input() try: result = eval(exp) except NameError: print("NameError") except ZeroDivisionError: print("ZeroDivisionError") except SyntaxError: print("SyntaxError") else: print("%.2f"%result)
8、求矩阵鞍点的个数
一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。
本题要求编写程序,求一个给定的n阶方阵的鞍点。
输入格式:
输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。
输出格式:
鞍点的个数。
n=int(input())a=[]count=0count1=0cnt=0for i in range(n): s=input() a.append([int(n) for n in s.split()])for j in range(n): if count1 == n and count == n: break for k in range(n): for k1 in range(n): if a[j][k]>=a[j][k1]: count+=1 if count==n: for j1 in range(n): if a[j][k]<=a[j1][k]: count1+=1 if count1==n: cnt=cnt+1 count1=0 count=0print(cnt)
9、两数之和
给定一组整数,还有一个目标数,在给定这组整数中找到两个数字,使其和为目标数,如找到,解是唯一的。找不到则显示 "no answer"。输出的下标按从小到大排序。用一重循环加字典实现。
输入格式:
在一行中给出这组数。
在下一行输入目标数
输出格式:
在一行中输出这两个数的下标,用一个空格分开。
s=list(eval(input()))n=eval(input())sp=0for i in s: if n-i in s: print(s.index(i),s.index(n-i)) sp=1 breakif sp==0: print("no answer")
10、企业根据利润提成发放奖金问题
企业根据利润提成发放奖金问题。利润低于或等于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%提成。从键盘输入当月利润,求应发放奖金总数?
输入格式:
输入一个利润整数。例如:输入120000。
输出格式:
输出一个实数。例如:11500.0。
profit = float(input()) if profit < 0: reward = 0elif profit <= 100000: reward = profit * 0.1elif 100000 < profit <= 200000: extra = profit - 100000 reward = 10000 + extra * 0.075elif 200000 < profit <= 400000: extra = profit - 200000 reward = 17500 + extra * 0.05elif 400000 < profit <= 600000: extra = profit - 400000 reward = 27500 + extra * 0.03elif 600000 < profit <= 1000000: extra = profit - 600000 reward = 33500 + extra * 0.015else: extra = profit - 1000000 reward = 39500 + extra * 0.01print(reward)
希望家人们支持,三连一波吧。