Python 编程练习题

Python 编程练习题

写出来的题代码不舍得删,就记录在这里吧。

一、数数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

n = int(input())
i = 3
a = [0]*(n+1) # +1防止越界
a[1] = 3
a[2] = 9
if n<3:
    print(a[n])
else:
    while True:
        if i>n:
            break
        a[i] = (2*(int(a[i-1])+int(a[i-2])))%10000000000 #找规律得此核心代码,提前取余防止超内存
        i += 1
    
    if n<=36:
        print(a[i-1])
    else:
        print("......",end="")
        print('%.10d'%a[i-1]) #保证前导0补足10位

二、回收站选址

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

n = int(input())
a = [[0 for _ in range(2)] for _ in range(n)]
c = [0]*5 
for count in range (0,n):
    b = input().split() 
    a[count][0] = int(b[0])
    a[count][1] = int(b[1])

for count in range (0,n):
    if ([a[count][0]+1,a[count][1]] in a) and ([a[count][0]-1,a[count][1]] in a) and ([a[count][0],a[count][1]+1] in a) and ([a[count][0],a[count][1]-1] in a):
        socre = 0
        if [a[count][0]+1,a[count][1]+1] in a:
            socre += 1
        if [a[count][0]+1,a[count][1]-1] in a:
            socre += 1
        if [a[count][0]-1,a[count][1]+1] in a:
            socre += 1
        if [a[count][0]-1,a[count][1]-1] in a:
            socre += 1
        for i in range (0,5):
            if i == socre:
                c[i] += 1

for i in range (0,5):
    print(c[i])

三、十六进制转八进制

问题描述
  给定n个十六进制正整数,输出它们对应的八进制数。

输入格式
  输入的第一行为一个正整数n (1<=n<=10)。
  接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

输出格式
  输出n行,每行为输入对应的八进制正整数。

【注意】
  输入的十六进制数不会有前导0,比如012A。
  输出的八进制数也不能有前导0。

样例输入
  2
  39
  123ABC

样例输出
  71
  4435274

代码如下:

n = int (input())
for count in range (n):
    a = input()
    print(oct(int(a,16))[2:])

四、十进制转十六进制

问题描述
  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
  给出一个非负整数,将它表示成十六进制的形式。
输入格式
  输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647
输出格式
  输出这个整数的16进制表示
样例输入
30
样例输出
1E

代码如下:

n = int(input())
ans = hex(n)[2:].upper()
print(ans)

五、杨辉三角

在这里插入图片描述
在这里插入图片描述

代码如下:

n = int(input())
a = [[1]*(i+1) for i in range(n)]
for i in range (n):
    for j in range (0,i+1):
        if j!=i and j!=0:
            a[i][j] = a[i-1][j] + a[i-1][j-1]
        if i!=j:
            print(str(a[i][j]),end=" ")
        else:
            print(str(a[i][j]),end="")
    print()

六、单词分析

在这里插入图片描述

在这里插入图片描述
代码如下:

s = input()
dic = {}
for count in range (26):
    dic[chr(97+count)] = 0

for count in range (len(s)):
    dic[s[count]] +=  1

ans1 = 'a'
ans2 = dic[ans1]

for count in range (1,26):
    if dic[chr(97+count)] > ans2:
        ans2 = dic[chr(97+count)]
        ans1 = chr(97+count)

print(ans1)
print(ans2)

七、成绩统计

在这里插入图片描述
在这里插入图片描述
代码如下:

n = int(input())
passNum = 0
goodNum = 0
for count in range (n):
    a = int(input())
    if a >= 85:
        goodNum += 1
    if a >= 60:
        passNum += 1

print(str(int((passNum*100/n)+0.5)) + "%")
print(str(int((goodNum*100/n)+0.5)) + "%")

八、平面切分

在这里插入图片描述

在这里插入图片描述
解析:
先用set把重复边去掉,之后看新加的边和已有的边有多少个交点,交点数 + 1= 新增平面数,之后再新增一条边重复之前的过程。

在这里插入图片描述
如图,1-4号边按顺序添加。

  1. 加入1号边显然平面数为2
  2. 加入2号边发现无新增交点,新增平面数 = 新增交点数 + 1 = 1。一共有3个平面
  3. 加入3号边发现有2个新增交点,新增平面数 = 新增交点数 + 1 = 3。一共有6个平面。
  4. 加入4号边发现新增2个交点,新增平面数 = 新增交点数 + 1 = 3。一共有9个平面

代码如下:

n = int(input())
x = [[0 for _ in range (2)] for _ in range (n)]
Node = set()
ans = 2
for count in range (n):
    a , b = map(int,input().split())
    x[count][0] = a
    x[count][1] = b
x = list(set(tuple(t) for t in x)) #利用set去重

for i in range (1,len(x)):
    j = i - 1
    while j>=0:
        if x[i][0] != x[j][0]:
            node = ((x[j][1] - x[i][1])/(x[i][0] - x[j][0]) , x[i][0] * ((x[j][1] - x[i][1])/(x[i][0] - x[j][0])) + x[i][1])
            if node not in Node:
                Node.add(node)
        j -= 1

    ans += len(Node) + 1
    Node.clear()
print(ans)

九、DateTime包的使用

在这里插入图片描述
代码如下:

import datetime

Begin = datetime.datetime(2000,1,1)
End = datetime.datetime(2020,10,1)
Days = (End - Begin).days
runsum = 0
for count in range (Days + 1):
    Date = Begin + datetime.timedelta(count)
    if Date.day == 1 or Date.isoweekday() == 1:
        runsum += 2
    else:
        runsum += 1

print(runsum)
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值