python123习题(SWPU)

仅供参考(其实就是方便我复习嘿嘿)因为是从这才开始想起来,but前面代码简单,后期再过一次就行

(未完结)

3.17更新,刚刚发现后面的代码没有写上去,发现老师已经关闭了题库,我没法更新了,所以只更新到第六章,需要后面的不用看我的咯

2.5

#2.5用户登录
a=input("")
b=input("")
if a=="abc123" and b=="abc123":
    print("欢迎进入")
else:
    print("有误,请重新输入!")

2.6

#2.6 反转一个整数
x=input()
y=x[::-1]#x[::-1]为反转

if y[-1]=='-':
    y='-'+y[:-1].strip('0')# y[:-1]为去除最后一位
else:
    y=y.strip('0')#strip为删除首位的(指定)
print(y)

2.7

#2.7 a除以b
a=eval(input())
b=eval(input())
if b==0:
    print('除零错误')
else:
    print(f'{a/b:0.2f}')
    #print(round(a/b,2)) 这种测试如果是只有一位的话,好像只有一位输出,还是以机测为准吧
#2.8身高测算
a=eval(input())
b=eval(input())
c=input()
num=0
if c=='男':
    num=((a+b)*1.08)/2
elif c=='女':
    num=(a*0.923+b)/2
else:
    print('无对应公式')
print(int(num))

2.9(*多看一下,不代表会考)

#英寸和厘米的交互(升级版)
a=input()#i inch c cm
if a[-1]=='c':
    print(f'{(eval(a[:-1])/2.54):0.2f}inch')#删除最后一位c,强转eval
elif a[-1]=='i':
    print(f'{(eval(a[:-1])*2.54):0.2f}cm')
elif a[-2:]=='cm':#这个字符串代表什么记不住可以现场试试,虽然耗时,但也还好
    print(f'{(eval(a[:-2])/2.54):0.2f}inch')#:在前就是删除吧(我也记不住呀!)
elif a[-4:]=='inch':
    print(f'{(eval(a[:-4])*2.54):0.2f}cm')
else:
    print('输入错误。')

a=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

a[-1] #列表a的最后一个元素#
12

a[:] #列表a的从0号元素到最后一个元素#
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

a[:-1] #列表a的从0号元素到倒数第二个元素(不包含最后一个)#
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

a[::-1] #倒叙列表a的全部元素#
[12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

a[::-2] #倒叙列表a的全部元素(步距为2)#
[12, 10, 8, 6, 4, 2, 0]

a[2:] #从列表a的第2号元素到最后#
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

a[2:5] #从列表a的第2号元素到第4号元素(特别注意,这里不包含第5号元素)#
[2, 3, 4]

a[2::] # #从列表a的第2号元素到最后一个元素(步距为1)#
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

a[2:8:2] #从列表a的第2号元素到第8号元素(步距为2,特别注意,这里不包含第8号元素)#
[2, 4, 6]

a[2::5] #从列表a的第2号元素到最后(步距为5)#
[2, 7, 12]

a[2::-1] #从列表a的第2号元素倒叙#
[2, 1, 0]
原文链接:https://blog.csdn.net/weixin_52810787/article/details/116497177

 2.10

#2.10天天向上的力量 B
N=eval(input(''))
up=pow((1.0+0.001*N),364)
down=pow((1.0-0.001*N),364)
a=int(up//down)#取整数
print(f'{up:0.2f},{down:0.2f},{a}')

3.1

#3.1判断数值类型
a=input()
if 'j' in a:
    print('复数')
elif '.' in a:
    print('浮点数')
else:
    print('整数')

3.2

#3.2一元二次方程求根
a=eval(input())
b=eval(input())
c=eval(input())
delta=b*b-4*a*c
if a==0 and b==0:
    print('Data error!')
elif a==0 and b!=0:
    print(f'{-c/b:0.2f}')
elif a!=0:
    if delta<0:
        print('该方程无实数解')
    elif delta==0:
        print(f'{(-b/2*a):0.2f}')
    elif delta>0:
        x1=(-b+delta**0.5)/2*a
        x2=(-b-delta**0.5)/2*a
        print(f'{x1:0.2f} {x2:0.2f}')

3.3(参考答案为导入string库,利用自带的ascl和digit来计数)

#3.3分类统计字符个数A
a=input()
l=d=o=0
for i in range(len(a)):
    if  '0'<=a[i]<='9':
        d=d+1
    elif 'A'<=a[i]<='Z' or 'a'<=a[i]<='z':
        l=l+1
    else:
        o=o+1
print(f'letter = {l}, digit = {d}, other = {o}')
#3.3分类统计字符个数A
import string
a=input()
l=d=o=0
for i in a:#遍历字符串
    if i in string.ascii_letters:
        l=l+1
    elif i in string.digits:
        d=d+1
    else:
        o=o+1
print('letter = {},digit = {},other = {}'.format(l,d,o))

3.4

#3.4判断三角形并计算面积
a=eval(input())
b=eval(input())
c=eval(input())
p=(a+b+c)/2#海伦公式
if a+b>c and a+c>b and b+c>a:
    print("YES")
    print('{:.2f}'.format((p*(p-a)*(p-b)*(p-c))**0.5))
else:
    print("NO")

3.5

#3.5个税计算器
gz=eval(input())
s=gz-5000
if 0<=gz<=5000:
    print(f'应缴税款0元,实发工资{gz:0.2f}元。')
elif gz<0:
    print('error')
else:
    if s<3000:
        s=s*0.03-0
    elif s<12000:
        s=s*0.1-210
    elif s<25000:
        s=s*0.2-1410
    elif s<35000:
        s=s*0.25-2660
    elif s<55000:
        s=s*0.3-4410
    elif s<80000:
        s=s*0.35-7160
    else:
        s=s*0.45-15160
    print(f'应缴税款{s:0.2f}元,实发工资{gz-s:0.2f}元。')

3.6

#3.6出租车计费
s,t=map(int,input().split(','))#同一行输入****记住!
if s<3:
    m=13
elif  s<15:
    m=2.3*(s-3)+13
elif s>15:
    m=2.3*1.5*(s-15)+13
if t>0:
    m=m+t
print(int(m))

3.7

#3.7身体质量指数BMI
s,t=map(float,input().split(','))
BMI=round(t/s**2,2)#round 浮点数四舍五入值
if BMI<18.5:
    print(f'BMI数值为:{BMI}')
    print('BMI的指标为:国际‘偏瘦’,国内’偏瘦‘')
elif 18.5<=BMI<24:
    print('BMI数值为:{0}'.format(BMI))
    print('BMI的指标为:国际’正常’,国内’正常‘')
else:
    if BMI==24:
        print('BMI数值为:{0}'.format(BMI))
        print('BMI的指标为:国际’正常’,国内’偏胖‘')
    elif 25<=BMI<28:
        print('BMI数值为:{0}'.format(BMI))
        print('BMI的指标为:国际’偏胖’,国内’偏胖‘')
    else:
        if 28<=BMI<=29:
            print('BMI数值为:{0}'.format(BMI))
            print('BMI的指标为:国际’偏胖’,国内’肥胖‘')
        else:
            print('BMI数值为:{0}'.format(BMI))
            print('BMI的指标为:国际’肥胖’,国内’肥胖‘')

3.8

#3.7水费计算
w=eval(input())
if w<=10:
    x=w*0.32
elif w<=20:
    x=3.2+(w-10)*0.64
else:
    x=3.2+6.4+(w-20)*0.96
print(x)

3.9(题都一样的,懒得写了,看吧)

#3.9打折
value=eval(input())
if value<1000:
    print('折后价:{:.1f}元。'.format(value))
elif 1000<=value<2000:
    value=value*0.95
    print('折后价:{:.1f}元。'.format(value))
else:
    if 2000<=value<3000:
        value=value*0.9
        print('折后价:{:.1f}元。'.format(value))
    elif 3000<=value<5000:
        value=value*0.85
        print('折后价:{:.1f}元。'.format(value))
    else:
        value=value*0.8
        print('折后价:{:.1f}元。'.format(value))

4.1

#4.1求和
import string
a=input()
c=0
for i in a:
    if i>='0' and i<='9':
        c=c+eval(i)
if c==0:
    print('输入字符串中无数字')
else:
    print(f'数字之和是{c}')

4.2

#4.2李白买酒
jiu=0
for i in range(5):
    jiu = jiu + 1#后遇花才会喝完,所以要先加1
    jiu=jiu/2
print(jiu)

4.3

#4.3人生苦短我用python
n=int(input())#必须输入int
x='人生苦短我用python'
for i in range(n):
    print(f'{x[i]}',end=',')#end可以不用自动换行

4.4

#4.4计算整数各位数字之和
a=input()#当作字符串输入
c=0
for i in a:
    c+=int(i)
print(c)

4.5(***)

#4.5阶乘求和
n=int(input())
i=j=1
sum=0
while n>=i:
    j=j*i
    sum=sum+j
    i=i+1
print(sum)

4.6

#4.6用for循环求100以内的素数
for i in range(2,101):
    f=0
    for j in range(2,i-1):
        if i%j==0:
            f=1
            break
    if f==0:
        print(i,end=' ')

4.7

#4.7十进制整数转二进制
a=eval(input())
s=''
if a==0:
    s='0'
while a!=0:
    s=s+str(a%2)
    a=a//2
print(s[::-1])
#4.7十进制整数转二进制
a=eval(input())
b=bin(a)[2:]#去掉前面的0b
print(b)

4.8

#4.8用户登录的三次机会(笨办法)
a=input()
b=input()
if a=='Kate' and b=='666666':
    print('登陆成功!')
else:
    a=input()
    b=input()
    if a == 'Kate' and b == '666666':
        print('登陆成功!')
    else:
        a = input()
        b = input()
        if a == 'Kate' and b == '666666':
            print('登陆成功!')
        else:
            print('3次用户名或者密码均有误!退出程序。')
#4.8用户登录的三次机会(循环)
c=0
while c<3:
    a=input()
    b=input()
    if a=='Kate' and  b=='666666':
        print('登陆成功!')
    else:
        c=c+1
        if(c==3):
            print('3次用户名或者密码均有误!退出程序。')

4.9

#4.9输出菱形
n=eval(input())
for i in range(n-1):
    print(' '*(n-i-1)+"*"*(2*i+1))
for i in range(n):
    print(" "*(i)+"*"*(2*(n-i)-1))

4.10

#4.10百钱买百鸡B
num,money=map(int,input().split())
f=0
for x in range(1,money//5+1):
    for y in range(1,money//3+1):
        z=num-x-y
        if z%3==0 and z>0 and x*5+y*3+z//3==money:
            print(x,y,z)
            f=1
if f==0:
    print('无解')

5.1

#5.1分段函数计算
try:
    x=eval(input())
    if x<500:
        y=x
    elif x<1000:
        y=1.5*x
    elif x<2000:
        y=2*x
    else:
        y=3*x
    print(y)
except:
    print('输入错误')

5.2

#5.2循环结构程序设计2
for i in range (5):
    print(str(i)*(i+1))
for i in range(5):
    print(str(i+5)*(5-i))

5.3

#5.3使用蒙特卡洛法求出曲线y=x*x与x轴之间在0-1范围内的面积
import random as rd
rd.seed(10)#种子数
cnt=0
for i in range(100000):
    x=rd.random()
    y=rd.random()
    if y

5.4

#5.4二分法求平方根
def sqrt_binary(n):
    low,high=0,n
    while True:
        mid=(high+low)/2
        if abs(mid**2-n)<=1e-6:
            return mid
        elif mid**2-n<0:
            low=mid
        else:
            high=mid
n=eval(input())
x=sqrt_binary(n)
print(x)
print(n**0.5)

5.5

#判断火车票座位
n=input()
try:
    if 2<=len(n)<4 and '1'<=n[:-1]<='17':
        if n[-1] in ['A','a','f','F']:
            print('窗口')
        elif n[-1] in ['B','b']:
            print('中间')
        elif n[-1] in ['C','c',"D",'d']:
            print('过道')
        else:
            print('座位号不存在')
    else:
        print('座位号不存在')
except:
    print('座位号不存在')

5.6

#计算圆周率
yu=eval(input())
k=pi=0
f=1
while abs(1/(2*k+1))>=yu:
    pi=pi+f*1/(2*k+1)
    k=k+1
    f=-f
print(f'{pi*4:0.6f}')

5.7

#找数字,做加法
a=input()
b=input()
s1=s2=''
if a.count('.')>1 or b.count('.')>1:
    print('输入错误')
else:
    for i in a:
        if '0'<=i<='9' or i=='.':
            s1=s1+i
    for i in b:
        if '0'<=i<='9' or i=='.':
            s2=s2+i
    print(eval(s1)+eval(s2))

5.8

n=int(input())#计算从1到n个月的兔子
f0=f1=1#第1,2个月
f=f0+f1#第3个月
i=3
while i

5.9

#5.9身份证号码校验
xs=(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2)
id=input()
sum=0
for i in range(17):
    sum=sum+xs[i]*int(id[i])
if (id[17])=='X':
    if sum%11==2:
        print('身份证号码校验为合法号码!')
    else:
        print('身份证校验位错误!')
elif (sum%11+int(id[17]))%11==1:
    print('身份证号码校验为合法号码!')
else:
    print('身份证校验位错误!')

6.1

#6.1编写打印星号三角函数
def sj(n):
    for i in range(n):
        print(' '*(3-i)+'*'*(2*i+1))
sj(2)
sj(3)
sj(4)

6.2

#6.2计算从n到m和的函数
def sum(n,m):
    s=0
    for i in range(n,m+1):
        s=s+i
    return s
n,m=map(int,input().split(','))
print(sum(n,m))

6.3

#6.3判断ip地址合法性
def IP(ip):
    s=ip.split('.')#s={'202','116','222','10'}
    if len(s)!=4:
        return'No'
    else:
        for i in range(4):
            if '0'<=s[i]<='255':
                return 'Yes'
            else:
                return "No"
ip=input()
print(IP(ip))

6.4

#6.4使用闰年函数
def run(n):
        if n%400==0 or (n%100!=0 and n%4==0):
            return 'True'
        else:
            return 'False'
for i in range(2010,2021):
    if run(i)=="True":
        print(i)

6.5

#6.5校验身份证号码并输出个人信息
def id(s):
    sum=0
    xs=(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2)
    for i in range(17):
        sum=sum+xs[i]*int(s[i])
    if  s[17]=='X':
        if sum%11==2:
            return True
    elif (sum%11+int(s[17]))%11==1:#从题目中找到规律
        return True
    else:
        return False
s=input()
if id(s):
    print('身份证号码校验为合法号码!')
    print(f'出生:{s[6:10]}年{s[10:12]}月{s[12:14]}日')
    if int(s[16])%2==1:#注意转换为int
        print('性别:男')
    else:
        print('性别:女')
else:
    print('身份证校验位错误!')

6.6

#6.6哥德巴赫猜想
def Isprime(n):
    for i in range (2,n):
        if n%i==0:
            return False
    return True
n=int(input())
if n%2==1:
    print('Data error!')
else:
    for i in range(2,n-1):
        if Isprime(i) and Isprime(n-i):
            print(f'N = {i} + {n-i}')
            break

6.7

#6.7判断素数函数
def isPrime(n):
    for i in range(2,n):
        if n%i==0:
            return 0
    return 1
n=int(input())
for i in range (2,n+1):
    if isPrime(i)==1:
        print(i,end=' ')

6.8

#本月天数
def is_leap(year):
    """判断year是否为闰年,闰年返回True,非闰年返回False"""
    if year%400==0 or (year%100!=0 and year%4==0):
        return True
    else:
        return False 


def days_of_month(date_str):
    """根据输入的年月日,返回该月的天数"""
    year = int(date_str[0:4])
    month = int(date_str[4:6])
    if month == 2 and is_leap(year):
        return '29'
    elif month == 4 or month == 6 or month == 9 or month == 11:
        return '30'
    elif (month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12):
        return '31'
    else:
        return '28'



if __name__ == '__main__':
    date_in = input()  # 输入一个年月日
    print(days_of_month(date_in))

6.9(**)

#6.9汉诺塔
def move(n,a,b,c):
    if n==1:
        print(a,'-->',c)
    else:
        move(n-1,a,c,b)
        print(a,'-->',c)
        move(n-1,b,a,c)
n=eval(input())
a,b,c=input().split()
move(n,a,b,c)

6.10(**)

#6.10递归
def jz(n,k):
    if n>0:
        return jz(n//k,k)+str(n%k)
    else:
        return ''

n,k=map(int,input().split(','))
print(jz(n,k))

6.11

#6.11最大公约数
def gys(m,n):
    if m%n==0:
        return n
    else:
        return gys(n,m%n)
m,n=map(int,input().split(','))
print(gys(m,n))

7.1(ip合法性)

7.2(统计次数s.count)

你可能感兴趣的:(python)