Python编程题基础

1 打印九九口诀表

下面是一个完整的下三角九九口诀表:

1*1=1   
1*2=2   2*2=4   
1*3=3   2*3=6   3*3=9   
1*4=4   2*4=8   3*4=12  4*4=16  
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  

输入格式:

输入在一行中给出一个正整数N(1≤N≤9)。

输出格式:

输出下三角N*N部分口诀表,其中等号右边数字占4位、左对齐。(字符格式化)

输入样例:

4

输出样例:

1*1=1   
1*2=2   2*2=4   
1*3=3   2*3=6   3*3=9   
1*4=4   2*4=8   3*4=12  4*4=16  

 代码

n = int(input())
for i in range(1,n+1):
    for j in range(1,i+1):
        # print(f'{i}*{j}={(i*j):<4}',end='')
        print("{}*{}={:<4}".format(j,i,(i*j)),end="") # 不管编译器  i写在j后面更好看 箭头反向为对齐方向
       
    print()

2 输入列表,求列表元素和(eval输入应用) 

在一行中输入列表,输出列表元素的和。

输入格式:

一行中输入列表。

输出格式:

在一行中输出列表元素的和。

输入样例:

[3,8,-5]

输出样例:

6
print(sum(list(eval(input()))), end='')
# eval的参数是字符串

 

从某种意义上说,eval就是实现list、dict、tuple和 str 之间的相互转换。

作用:

eval()函数又称为评估函数,作用是去掉参数中最外层引号并执行剩余语句

a=eval(input())  # 可以输入 2324   [2,3] (2,3)  ‘dfsa2’  不能直接输入字符串会报错

print(a,type(a))

3 验证“哥德巴赫猜想”

数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。

输入格式:

输入在一行中给出一个(2, 2 000 000 000]范围内的偶数N。

输出格式:

在一行中按照格式“N = p + q”输出N的素数分解,其中p ≤ q均为素数。又因为这样的分解不唯一(例如24还可以分解为7+17),要求必须输出所有解中p最小的解。

输入样例:

24

输出样例:

24 = 5 + 19

 代码

import math
def prime(p):
    for i  in range(2,int(math.sqrt(p))+1):
        if p % i==0:
            return False
    else:
        return True
n= int(input())
for i in range(2,int(n/2)+1):
    if prime(i) and prime(n-i):
        print(f"{n} = {i} + {n-i}")
        break
    

4 求矩阵的局部极大值

给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。

输入格式:

输入在第一行中给出矩阵A的行数M和列数N(3≤M,N≤20);最后M行,每行给出A在该行的N个元素的值。数字间以空格分隔。

输出格式:

每行按照“元素值 行号 列号”的格式输出一个局部极大值,其中行、列编号从1开始。要求按照行号递增输出;若同行有超过1个局部极大值,则该行按列号递增输出。若没有局部极大值,则输出“None 总行数 总列数”。

输入样例1:

4 5
1 1 1 1 1
1 3 9 3 1
1 5 3 5 1
1 1 1 1 1

输出样例1:

9 2 3
5 3 2
5 3 4

输入样例2:

3 5
1 1 1 1 1
9 3 9 9 1
1 5 3 5 1

输出样例2:

None 3 5

代码 

m,n=map(int,input().split())
a=[]

t=False
for i in range(m):
    a.append(list(map(int,input().split())))
for i in range(1,m-1):
    for j in range(1,n-1):
        data=[]
        data.append(a[i+1][j])
        data.append(a[i][j+1])
        data.append(a[i-1][j])
        data.append(a[i][j-1])
        if a[i][j]>max(data):
            print(a[i][j],i+1,j+1)  # 数组的下标是从零开始,取得范围是无边界元素
            t=True
if t==False:
    print("None",m,n)
        

 5 列表或元组的数字元素求和

求列表中数字和,列表中嵌套层次不限2层

输入格式:

在一行中输入列表或元组

输出格式:

在一行中输出数字的和

输入样例:

在这里给出一组输入。例如:

[11,2,[3,7],(68,-1),"123",9]

输出样例:

在这里给出相应的输出。例如:

99

代码 

li=[]
li=eval(input())
def Sum(li):
    sums=0
    for ch in li:
        if isinstance(ch,int):
            sums+=ch
        if isinstance(ch,list):
            sums+=Sum(ch)
        if isinstance(ch,tuple):
            sums+=Sum(ch)
    return sums
print(Sum(li))

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值