python第五次作业:一元二次方程求根、百钱买百鸡、鸡兔同笼、最大公约数和最小公倍数、判断三角形并计算面积........
一元二次方程求根
一元二次方程ax2+bx+c=0,a、b、c的值由用户在三行中输入,根据用户输入的数值求解方程的实数解:
如果a值 为0,根据b值判断方程是否有解并输出,如果a与b同时为0,则输出Data error!
如果方程无实数解,输出“该方程无实数解”;
如果方程有两个相同的实数解,输出一个解;
如果方程有两个不同的实数解,在一行内按从大到小顺序输出方程的两个解,用空格分隔。
1 import math 2 a=eval(input()) 3 b=eval(input()) 4 c=eval(input()) 5 if a==0: 6 if b==0: 7 print("Data error!") 8 else: 9 print(-c/b) 10 else: 11 if b**2-4*a*c>0: 12 x1=(-b-math.sqrt(b**2-4*a*c))/(2*a) 13 x2=(-b+math.sqrt(b**2-4*a*c))/(2*a) 14 if x1>x2: 15 print("{} {}".format(x1,x2)) 16 else: 17 print("{} {}".format(x2,x1)) 18 elif b**2-4*a*c==0: 19 print(-b/(2*a)) 20 else: 21 print("该方程无实数解")
百钱买百鸡
我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,如果要求鸡翁、鸡母、鸡雏都不为零,问鸡翁、鸡母、鸡雏各几何?
1 for x in range(1,100): 2 for y in range(1,100): 3 z = 100 -x-y 4 if (5*x+3*y+z/3==100): 5 print(x,y,z)
鸡兔同笼
描述
大约在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中,输入的数用空格分隔
1 a,b = map(int,input().split(' ')) #读入两个整数到a,b中,输入的数用空格分隔 2 if b % 2 != 0 or a<0 or b<0 or a>b: 3 print("Data Error!") 4 else: 5 ji = (a*4-b)/2 6 tu = a-ji 7 print(int(ji),int(tu))
最大公约数和最小公倍数
描述
本题要求两个给定正整数的最大公约数和最小公倍数。
输入格式
两行输入:
每行给出一个正整数(≤1000)。
输出格式
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。
1 a=int(input()) 2 b=int(input()) 3 ma=max(a,b) 4 mi=min(a,b) 5 while(b!=0): 6 temp = a % b 7 a = b 8 b = temp 9 for i in range(1,mi+1): 10 if ma*i%mi==0: 11 x=ma*i 12 break 13 print(a,x)
判断三角形并计算面积
描述
输入三个数a,b,c, 判断能否以它们为三个边长构成三角形。若能,输出YES和三角形面积(结果保留2位小数),否则输出NO。
1 import math 2 a=eval(input()) 3 b=eval(input()) 4 c=eval(input()) 5 if a+b>c and a+c>b and b+c>a: 6 p=(1/2)*(a+b+c) 7 s=math.sqrt(p*(p-a)*(p-b)*(p-c)) 8 print("YES") 9 print("{:.2f}".format(s)) 10 else: 11 print("NO")
判断IP地址合法性
描述
互联网上的每台计算机都有一个独一无二的编号,称为IP地址,每个合法的IP地址由'.'分隔开的4个数字组成,每个数字的取值范围是0-255。
现在用户输入一个字符串(不含空白符,不含前导0,如001直接输入1),请你判断s是否为合法IP,若是,输出'Yes',否则输出'No'。
如用户输入为202.114.88.10, 则输出Yes; 当用户输入202.114.88,则输出No。
1 s=input("") 2 addr=s.split('.') 3 if len(addr) != 4: 4 print("No") 5 else: 6 try: 7 for i in range(4): 8 addr[i]=int(addr[i]) 9 if addr[i]<=255 and addr[i]>=0: 10 flag=1 11 else: 12 flag=0 13 break 14 if flag: 15 print("Yes") 16 else: 17 print("No") 18 19 except: 20 print("No")
回文素数
描述
回文素数是指一个数既是素数又是回文数。例如,131,既是素数又是回文数。
用户输入一个正整数n(1 <= n <= 100), 请你在一行内输出从小到大排列的的前n个回文素数,数字之间用空格分隔。
1 n=int(input()) 2 a=0 3 b=1 4 def prime(num): 5 if num <= 1: 6 return False 7 i = 2 8 while i * i <= num: 9 if num % i == 0: 10 return False 11 i += 1 12 return True 13 def huiwen(num): 14 t=num 15 total=0 16 while t>0: 17 total=total * 10+t % 10 18 t=int(t/10) 19 return num==total 20 while (a!=n): 21 if(huiwen(b) and prime(b)): 22 print(b ,end=' ') 23 a=a+1 24 b=b+1
反素数
描述
反素数(逆向拼写的素数)是指一个将其逆向拼写后也是一个素数的非回文数。例如:13和31都是素数,且13和31都不是回文数,所以,13和31是反素数。
输入一个正整数n(1 <= n <= 100), 请输出从小到大排列的的前n个反素数,数字间以空格进行分隔。
1 n=int(input()) 2 a=0 3 b=1 4 def prime(num): #判断数字是否是素数 5 if num <= 1: 6 return False 7 i = 2 8 while i * i <= num: 9 if num % i == 0: 10 return False 11 i += 1 12 return True 13 def huiwen(num): #判断数字是否回文 14 t=num 15 total=0 16 while t>0: 17 total=total * 10+t % 10 18 t=int(t/10) 19 return num!=total 20 def fanshu(num): # 将数字反过来 21 t=num 22 total=0 23 while t>0: 24 total=total * 10+t % 10 25 t=int(t/10) 26 return (total) 27 while (a!=n): 28 b2=fanshu(b) 29 if(huiwen(b) and prime(b) and prime (b2)): 30 print(b ,end=' ') 31 a=a+1 32 b=b+1
今天是第几天
描述
输入年月日,判断这一天是这一年的第几天?
输入格式
输入包括三行:
第一行是一个不超过四位数的正整数
第二行是一个不超过12的正整数
第三行是一个不超过31的正整数
输出格式
某年某月某日是某年的第多少天
1 a=int(input())#第一行是一个不超过四位数的正整数 2 b=int(input())#第二行是一个不超过12的正整数 3 c=int(input())#第三行是一个不超过31的正整数 4 list1=['0','31','29','31','30','31','30','31','31','30','31','30','31'] 5 list2=['0','31','28','31','30','31','30','31','31','30','31','30','31'] 6 x=0 7 i=0 8 if ((a%4==0) and (a%100 !=0)) or (a%400==0): #判断是否为闰年 9 while i <b: 10 x=x+int(list1[i]) 11 i=i+1 12 day=x+c #计算这一年的第几天 13 else: 14 while i<b: 15 x=x+int(list2[i]) 16 i=i+1 17 day=x+c 18 print("{}年{}月{}日是{}年第{}天".format(a,b,c,a,day))
提取首字符
描述
用户输入一串单词或数字,中间用空格分隔,提取每个单词或数字的第一个字符生成一个新的字符串并输出。
1 str1=input() 2 str2=str1.split(' ') 3 str3='' 4 for i in str2: 5 str3=str3+i[0] 6 print(str3)
判断火车票座位
描述
用户输入一个数字和一个字母组成的座位号,根据字母判断位置是窗口还是过道。目前中国高铁和国内飞机窗口位置的字母是'A'和'F',过道位置是'C'和 'D',中间位置是'E'。
每个车厢座位排数是1-17,字母不区分大小写。
1 snum=input() 2 if snum[:-1]=='': 3 print("输入错误") 4 elif snum[:-1] !='': 5 if int(snum[:-1]) <= 17 and int(snum[:-1])>=1: 6 if snum[-1] in ['A','a','f','F']: 7 print("窗口") 8 elif snum[-1] in ['C','c','d','D']: 9 print("过道") 10 elif snum[-1] in ['e','E']: 11 print("中间") 12 else: 13 print("输入错误")
描述
用户输入一个数字和一个字母组成的座位号,根据字母判断位置是窗口还是过道。目前中国高铁和国内飞机窗口位置的字母是'A'和'F',过道位置是'C'和 'D',中间位置是'E'。
每个车厢座位排数是1-17,字母不区分大小写。
1 snum=input() 2 if snum[:-1]=='': 3 print("输入错误") 4 elif snum[:-1] !='': 5 if int(snum[:-1]) <= 17 and int(snum[:-1])>=1: 6 if snum[-1] in ['A','a','f','F']: 7 print("窗口") 8 elif snum[-1] in ['C','c','d','D']: 9 print("过道") 10 elif snum[-1] in ['e','E']: 11 print("中间") 12 else: 13 print("输入错误")
YouTube频道:https://www.youtube.com/channel/UCFlPFjCqK7ezLJZh3_Iu3oA
B站(DGX杂学):https://space.bilibili.com/449154488
微信公众号:DGX杂学
抖音:DGX杂学
博客园:https://www.cnblogs.com/yeu4h3uh2/


浙公网安备 33010602011771号