python第五周作业
-
一元二次方程求根
描述
一元二次方程ax2+bx+c=0,a、b、c的值由用户在三行中输入,根据用户输入的数值求解方程的实数解:
如果a值 为0,根据b值判断方程是否有解并输出,如果a与b同时为0,则输出Data error!
如果方程无实数解,输出“该方程无实数解”;
如果方程有两个相同的实数解,输出一个解;
如果方程有两个不同的实数解,在一行内按从大到小顺序输出方程的两个解,用空格分隔。
输入格式
输入三行数据, 每行输入一个实数
输出格式
方程的解
输入输出示例
输入 输出 示例 1 8
5
2
0
5
6
0
0
9
该方程无实数解
-1.2
Data error!
import math a=eval(input()) b=eval(input()) c=eval(input()) if a == 0: if b!=0: x=(-c)/b print("{}".format(x)) if b==0: print("Data error!") else: if b**2-4*a*c<0: print("该方程无实数解") if b**2-4*a*c>0: x1=(-b+math.sqrt(b**2-4*a*c))/(2*a) x2=(-b-math.sqrt(b**2-4*a*c))/(2*a) if x1>x2: print("{} {}".format(x1,x2)) if x1<x2: print("{} {}".format(x2,x1)) if b**2-4*a*c==0: x=(-b+math.sqrt(b**2-4*a*c))/(2*a) print("{}".format(x))
-
百钱买百鸡
描述
我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,如果要求鸡翁、鸡母、鸡雏都不为零,问鸡翁、鸡母、鸡雏各几何?
输入格式
该题目没有输入
输出格式
每行输出一组结果,按鸡翁数、鸡母数、鸡雏数的顺序输出,数字之间用空格分隔;
如果有多组解时,按公鸡数量由少到多输出;
输入输出示例
输入 输出 示例 1 jw=5 jm=3 jc=1/3 for i in range(1,100): a=i for n in range(1,100-i): b=n c=100-b-a if a*5+b*3+c*1/3==100: print("{} {} {}".format(a,b,c)) else: continue
- 0370038003300381586927928141
鸡兔同笼
描述
大约在1500年前,《孙子算经》中就记载了这个有趣的问题。书中是这样叙述的:
今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?
这四句话的意思是:
有若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚。问笼中各有多少只鸡和兔?请编一个程序,用户在同一行内输入两个整数,代表头和脚的数量,编程计算笼中各有多少只鸡和兔,假设鸡和兔都正常,无残疾。如无解则输出Data Error!
a,b = input().split() #读入两个数到a b中 a,b = map(int,input().split(',')) #读入两个整数到a,b中,输入的数用逗号分隔 a,b = map(int,input().split(' ')) #读入两个整数到a,b中,输入的数用空格分隔
输入格式
在一行里输入两个整数,用空格分隔
输出格式
在一行里输出两个正整数,分别是鸡和兔的数量,用空格分隔
如无解则输出Data Error!
输入输出示例
输入 输出 示例 1 35 94
-4 16
23 12
Data Error!
a,b=input().split(' ') j=(4*eval(a)-eval(b))//2 t=eval(a)-j if j>=0 and t>=0 : if j*2+t*4==eval(b): print("{} {}".format(j,t)) else: print("Data Error!")
-
最大公约数和最小公倍数
描述
本题要求两个给定正整数的最大公约数和最小公倍数。
输入格式
两行输入:
每行给出一个正整数(≤1000)。
输出格式
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。
输入输出示例
输入 输出 示例 1 4
6
12
36
3
132 12
12 36
1 39
def gy(a,b): while a!= 0: w = int(b%a) b=a a=w return b def gb(a,b): return int(a*b/gy(a,b)) a=eval(input()) b=eval(input()) if a>b: a,b=b,a print(gy(a,b),gb(a,b))
-
判断三角形并计算面积
描述
输入三个数a,b,c, 判断能否以它们为三个边长构成三角形。若能,输出YES和三角形面积(结果保留2位小数),否则输出NO。
输入格式
输入包括三行,每行是一个数字
输出格式
'YES' 和面积值(结果保留2位小数),或'NO'
输入输出示例
输入 输出 示例 1 3
4
5YES import math a=eval(input()) b=eval(input()) c=eval(input()) ls=[a,b,c] ls.sort() if ls[0]+ls[1]>ls[2]: print("YES") p=(a+b+c)/2 S=math.sqrt(p*(p-a)*(p-b)*(p-c)) print("{:.2f}".format(S)) else: print("NO")
-
判断IP地址合法性
描述
互联网上的每台计算机都有一个独一无二的编号,称为IP地址,每个合法的IP地址由'.'分隔开的4个数字组成,每个数字的取值范围是0-255。
现在用户输入一个字符串(不含空白符,不含前导0,如001直接输入1),请你判断s是否为合法IP,若是,输出'Yes',否则输出'No'。
如用户输入为202.114.88.10, 则输出Yes; 当用户输入202.114.88,则输出No。
输入格式
一个字符串
输出格式
输出'Yes'或'No'
输入输出示例
输入 输出 示例 1 255.255.255.0 Yes s = input() s = s.split('.') if len(s) == 4: for i in range(4): if i <3: if s[i].isdigit()==False or eval(s[i])>255 or eval(s[i])<0: print('No') break else: print('Yes') else: print('No')
-
回文素数
描述
回文素数是指一个数既是素数又是回文数。例如,131,既是素数又是回文数。
用户输入一个正整数n(1 <= n <= 100), 请你在一行内输出从小到大排列的的前n个回文素数,数字之间用空格分隔。输入格式
输入一个正整数
输出格式
符合要求的回文素数
输入输出示例
输入 输出 示例 1 10 2 3 5 7 11 101 131 151 181 191 def sushu(num): if num < 2: return False for i in range(2,int(math.sqrt(num))+1): if num % i == 0: return False return True def huiwen(num): ls=str(num) for i in range(1000): if ls[::-1]==ls[:]: return True import math n=int(input()) a=0 b=1 while (a!=n): if(huiwen(b) and sushu(b)): print(b ,end=' ') a=a+1 b=b+1
-
反素数
描述
反素数(逆向拼写的素数)是指一个将其逆向拼写后也是一个素数的非回文数。例如:13和31都是素数,且13和31都不是回文数,所以,13和31是反素数。
输入一个正整数n(1 <= n <= 100), 请输出从小到大排列的的前n个反素数,数字间以空格进行分隔。输入格式
输入一个正整数
输出格式
符合条件的反素数
输入输出示例
输入 输出 示例 1 10 13 17 31 37 71 73 79 97 107 113 def sushu(num): if num < 2: return False for i in range(2,int(math.sqrt(num))+1): if num % i == 0: return False return True def nixiangsushu(num): ls=str(num) num=ls[::-1] if int(num) < 2: return False for i in range(2,int(math.sqrt(int(num)))+1): if int(num) % i == 0: return False return True def huiwen(num): ls=str(num) for i in range(1000): if ls[::-1]==ls[:]: return False else: return True import math n=int(input()) a=0 b=1 while (a!=n): if(huiwen(b) and sushu(b) and nixiangsushu(b)): print(b ,end=' ') a=a+1 b=b+1
-
今天是第几天
描述
输入年月日,判断这一天是这一年的第几天?
输入格式
输入包括三行:
第一行是一个不超过四位数的正整数
第二行是一个不超过12的正整数
第三行是一个不超过31的正整数
输出格式
某年某月某日是某年的第多少天
输入输出示例
输入 输出 示例 1 2018
2
1
2018年2月1日是2018年第32天 y=int(input()) m=int(input()) d=int(input()) a=31 b=30 if y%4==0: t=29 else: t=28 if y<10000 and m<13 and d<32: if m==1: c=d if m==2: c=a+d if m==3: c=a+t+d if m==4: c=a*2+t+d if m==5: c=a*2+t+b+d if m==6: c=a*3+t+b+d if m==7: c=a*3+t+b*2+d if m==8: c=a*4+t+b*2+d if m==9: c=a*5+t+b*2+d if m==10: c=a*5+t+b*3+d if m==11: c=a*6+t+b*3+d elif m==12: c=a*6+t+b*4+d print("{}年{}月{}日是{}年第{}天".format(y,m,d,y,c))
- 3000370038003300381586928731015
提取首字符
描述
用户输入一串单词或数字,中间用空格分隔,提取每个单词或数字的第一个字符生成一个新的字符串并输出。
输入格式
一个包括空格的字符串,以回车结束输入。
输出格式
提取每个单词或数字的第一个字符生成的一个新的字符串
输入输出示例
输入 输出 示例 1 Waiting for my favorite songs Wfmfs s=input() s=str(' '+s) for i in range(len(s)): if s[i]==' ': print("{}".format(s[i+1]),end="")
- 00370038003300381586929417380
判断火车票座位
描述
用户输入一个数字和一个字母组成的座位号,根据字母判断位置是窗口还是过道。目前中国高铁和国内飞机窗口位置的字母是'A'和'F',过道位置是'C'和 'D',中间位置是'E'。
每个车厢座位排数是1-17,字母不区分大小写。输入格式
输入一个数字和字母组合成的字符串
输出格式
'窗口'或'过道' 或'输入错误'
输入输出示例
输入 输出 示例 1 12F
2C
窗口
过道
try: s=input() ls=str(s) if ls[-1] in ['F','f'] and 0<eval(ls[:-1])<18: print("窗口") elif ls[-1] in ['C','c'] and 0<eval(ls[:-1])<18: print("过道") elif ls[-1] in ['E','e'] and 0<eval(ls[:-1])<18: print("中间") else: print("输入错误") except SyntaxError: print("输入错误")