一元二次方程求根
import math def root_of_square(a,b,c): discr=pow(b,2)-4*a*c if a!=0 and discr>0: x1=(-b+math.sqrt(discr))/(2*a) x2=(-b-math.sqrt(discr))/(2*a) if x1>x2: return x1,x2 else: return x2,x1 elif a!=0 and discr==0: return -b/(2*a) elif a!=0 and discr<0: print("该方程无实数解") elif a==0 and b!=0: return -c/b else: return "Data error!" a=input() b=input() c=input() print(root_of_square(float(a),float(b),float(c)))
百元买百鸡
我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,如果要求鸡翁、鸡母、鸡雏都不为零,问鸡翁、鸡母、鸡雏各几何?
for x in range(1,21): for y in range(1,34): z = 100 - x - y if(z%3==0 and 5*x+3*y+z//3 == 100): print(x,y,z)
最大公约数最小公倍数
a = eval(input()) b = eval(input()) s=a*b while a%b !=0: a,b=b,(a%b) else: print("{:.0f} {:.0f}".format(b,s//b))
判断三角形并计算面积
import math a = eval(input()) b = eval(input()) c = eval(input()) if a+b<=c or a+c<=b or b+c<=a: print("NO") elif a<0 or b<0 or c<0: print("NO") else: s = math.sqrt((a+b+c)*(a+b-c)*(a+c-b)*(b+c-a))/4 print("YES") print("{:.2f}".format(s))
判断IP地址合法性
互联网上的每台计算机都有一个独一无二的编号,称为IP地址,每个合法的IP地址由'.'分隔开的4个数字组成,每个数字的取值范围是0-255。
现在用户输入一个字符串(不含空白符,不含前导0,如001直接输入1),请你判断s是否为合法IP,若是,输出'Yes',否则输出'No'。
如用户输入为202.114.88.10, 则输出Yes; 当用户输入202.114.88,则输出No。
def isIpaddr(addr): flag=0 data=addr.split(".") if len(data)==4: for i in range(0,4): if 0<=int(data[i])<=255: pass else: flag=1 if flag==0: print ("Yes" ) else: print( "No" ) else: print ("No" ) ipaddr=input("") if ipaddr!='.': isIpaddr(ipaddr)
回文素数
回文素数是指一个数既是素数又是回文数。例如,131,既是素数又是回文数。
用户输入一个正整数n(1 <= n <= 100), 请你在一行内输出从小到大排列的的前n个回文素数,数字之间用空格分隔。
def isPrime(n): if n <= 1: return False i = 2 while i * i <= n: if n % i == 0: return False i += 1 return True n = 0 m = 2 s=eval(input()) while n < s: if isPrime(m) and str(m) == str(m)[ ::-1 ]: n += 1 print("{:.0f}".format(m), end = ' 'if n%100 else '\n') m += 1
反素数
反素数(逆向拼写的素数)是指一个将其逆向拼写后也是一个素数的非回文数。例如:13和31都是素数,且13和31都不是回文数,所以,13和31是反素数。
输入一个正整数n(1 <= n <= 100), 请输出从小到大排列的的前n个反素数,数字间以空格进行分隔。
n=int(input()) a=0 b=1 def prime(num): #判断数字是否是素数 if num <= 1: return False i = 2 while i * i <= num: if num % i == 0: return False i += 1 return True def huiwen(num): #判断数字是否回文 t=num total=0 while t>0: total=total * 10+t % 10 t=int(t/10) return num!=total def fanshu(num): # 将数字反过来 t=num total=0 while t>0: total=total * 10+t % 10 t=int(t/10) return (total) while (a!=n): b2=fanshu(b) if(huiwen(b) and prime(b) and prime (b2)): print(b ,end=' ') a=a+1 b=b+1
今天是第几天
输入包括三行:
第一行是一个不超过四位数的正整数
第二行是一个不超过12的正整数
第三行是一个不超过31的正整数
year = int(input()) month = int(input()) day = int(input()) day_month=[31,28,31,30,31,30,31,31,30,31,30,31] if month == 1: print("{:.0f}年{:.0f}月{:.0f}日是{:.0f}年第{:.0f}天".format(year,month,day,year,day)) else: n = sum(day_month[:month-1])+day if (year%400 == 0) or (year%100 == 0) and (year%100 != 0): print("{:.0f}年{:.0f}月{:.0f}日是{:.0f}年第{:.0f}天".format(year,month,day,year,n+1)) else: print("{:.0f}年{:.0f}月{:.0f}日是{:.0f}年第{:.0f}天".format(year,month,day,year,n))
提取首字符
用户输入一串单词或数字,中间用空格分隔,提取每个单词或数字的第一个字符生成一个新的字符串并输出。
str=input("") lista=' '.join(str.split()).split(' ') newstr='' for item in lista: newstr=newstr+item[0] print(newstr)
判断火车票位置
用户输入一个数字和一个字母组成的座位号,根据字母判断位置是窗口还是过道。目前中国高铁和国内飞机窗口位置的字母是'A'和'F',过道位置是'C'和 'D',中间位置是'E'。
每个车厢座位排数是1-17,字母不区分大小写
import re str = input("") g = re.sub("\D",'',str) if 1 <= int(g) <= 17: if str[-1] in ['A','F','a','f']: print("窗口") elif str[-1] in ['C','D','c','d']: print("过道") elif str[-1] == 'E': print("中间") else: print("输入错误") else: print("输入错误")
计算函数曲线与x周包围的面积
from math import * a,b= map(float,input().split()) n = 10000 dn = (b-a)/n sum = 0 for i in range(n): sum += abs(sin(i*dn))*dn print("{:.2f}".format(sum))
哥德巴赫猜想
描述
数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。
输入格式
输入在一行中给出一个(2, 2 000 000 000]范围内的偶数N。
输出格式
在一行中按照格式“N = p + q”输出N的素数分解,其中p ≤ q均为素数。又因为这样的分解不唯一(例如24还可以分解为7+17),要求必须输出所有解中p最小的解。
n = eval(input()) k = 2 def prime(n): for i in range(2,n): if n % i == 0: return False return True for i in range(int(n/2)): s = n - k if ( prime(s)): print("N = {} + {}".format(k,s)) break else: k += 1
与7无关的数
一个正整数,如果它能被7整除,或者它的十进制表示法中某一位的数字为7,则称其为与7相关的数、
求所有小于n(n < 100)的与7无关的正整数以及他们的平方和。
n = eval(input()) list = [] for i in range(1,n): if i %7 != 0: if (i%10) != 7 and i//10 != 7: list.append(i) print(list) sum = 0 for i in range(len(list)): sum = sum + list[i]*list[i] print(sum)
高次方程求根
已知f(1.5)>0,f(2.4)<0,且在[1.5,2.4]区间只且只有一个根,求该根。要求四舍五入到小数点后6位
import math def f(x): r = x**5-15*x**4+85*x**3-225*x**2+274*x-121 return r a = 1.5 b = 2.4 c = (a+b)/2 while abs(f(c)) >1e-6: if f(a)*f(c)<0: b = c else: a = c c = (a+b)/2 print("{:.6f}".format(c))