Python 第五周作业

一元二次方程求根

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))

  

猜你喜欢

转载自www.cnblogs.com/wangyingjie123/p/12752163.html