【学编程】Python基础编程题100道(21-60)

实例 021 :猴子偷桃

题目 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个

第二天早上又将剩下的桃子吃掉一半, 又多吃了一个。 以后每天早上都吃了前一天剩下的一

半零一个。到第 10 天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

程序分析 按规则反向推断:猴子有一个桃子,他偷来一个桃子,觉得不够又偷来了与手上等量的桃子,一共偷了 9 天。

peach=1

for i in range(9):

peach=(peach+1)*2 print(peach)

1234

实例 022 :比赛对手

题目 两个乒乓球队进行比赛,各出三人。甲队为 a,b,c 三人,乙队为 x,y,z 三人。已抽签决定比赛名单。有人向队员打听比赛的名单。 a 说他不和 x 比, c 说他不和 x,z 比,请编程序找

出三队赛手的名单。

程序分析 找到条件下不重复的三个对手即可。

a=set('x','y','z')

b=set('x','y','z')

c=set('x','y','z')

c-=set(('x','z'))

a-=set('x')

for i in a:

for j in b:

for k in c:

if len(set((i,j,k)))==3:

print('a:%s,b:%s,c:%s'%(i,j,k)) 12345678910

实例 023 :画菱形

题目 打印出如下图案(菱形) :

*

***

*****

*******

*****

***

*

程序分析 递归调用即可。

def draw(num):

a="*"*(2*(4-num)+1)

print(<a.center>(9,' '))

if num!=1:

draw(num-1)

print(<a.center>(9,' '))

draw(4)

1234567

实例 024 :斐波那契数列 II

题目 有一分数序列: 2/1 ,3/2 ,5/3 ,8/5 , 13/8 ,21/13 ...求出这个数列的前 20 项之和。程序分析 就是斐波那契数列的后一项除以前一项。

a = 2.0 b = 1.0 s = 0

for n in range(1,21):

s += a / b

a,b = a + b,a print (s)

12345678

实例 025 :阶乘求和

题目 求 1+2!+3!+...+20!的和。

程序分析 1+2!+3!+ ...+20!=1+2(1+3(1+4( ...20(1)))) res=1

for i in range(20,1,-1):

res=i*res+1 print(res)

1234

实例 026:递归求阶乘

题目 利用递归方法求 5!。

程序分析 递归调用即可。

def factorial(n):

return n*factorial(n-1) if n>1 else 1 print(factorial(5))

123

实例 027 :递归输出

题目 利用递归函数调用方式,将所输入的 5 个字符,以相反顺序打印出来。

程序分析 递归真是蠢方法。

def rec(string):

if len(string)!=1:

rec(string1:)

print(string[0](#0),end='')

rec(input('string here:')) 123456

实例 028 :递归求等差数列

题目 有 5 个人坐在一起,问第五个人多少岁?他说比第 4 个人大 2 岁。问第 4 个人岁数,

他说比第 3 个人大 2 岁。问第三个人, 又说比第 2 人大两岁。问第 2 个人, 说比第一个人大两岁。最后问第一个人,他说是 10 岁。请问第五个人多大?

程序分析 就一等差数列。

def age(n):

if n==1:

return 10

return 2+age(n-1)

print(age(5)) 12345

实例 029 :反向输出

题目 给一个不多于 5 位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

程序分析 学会分解出每一位数 ,用字符串的方法总是比较省事。

n=int(input(' 输入一个正整数: '))

n=str(n)

print('%d 位数 '%len(n))

print(n::-1) 1234

实例 030 :回文数

题目 一个 5 位数,判断它是不是回文数。即 12321 是回文数,个位与万位相同,十位与千位相同。

程序分析 用字符串比较方便 ,就算输入的不是数字都 ok。

n=input(" 随便你输入啥啦: ") a=0

b=len(n)-1

flag=True

while a<b:

if na!=nb:

print(' 不是回文串 ')

flag=False

break

a,b=a+1,b-1 if flag:

print(' 是回文串 ') 123456789101112

实例 031 :字母识词

题目 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

程序分析 这里用字典的形式直接将对照关系存好。

weekT={'h':'thursday',

'u':'tuesday'} weekS={'a':'saturday', 'u':'sunday'}

week={'t':weekT,

's':weekS,

'm':'monday', 'w':'wensday',

'f':'friday'}

a=weekstr(input(' 请输入第一位字母 :')).lower() if a==weekT or a==weekS:

print(astr(input(' 请输入第二位字母 :')).lower()) else:

print(a)

123456789101112131415

实例 032 :反向输出 II

题目 按相反的顺序输出列表的值。

程序分析 无。

a = 'one', 'two', 'three' print(a::-1)

12

实例 033:列表转字符串题目 按逗号分隔列表。

程序分析 无。 L = [1](#1),[2](#2),[3](#3),[4](#4),[5](#5)

print(','.join(str(n) for n in L)) 12

实例 034 :调用函数 题目 练习函数调用。

程序分析 无。

def hello():

print('Hello World!')

def helloAgain():

for i in range(2):

hello()

if name ==' main ':

helloAgain()

12345678

实例 035 :设置输出颜色 题目 文本颜色设置。

程序分析 无。

class bcolors:

HEADER = '\033[95m'
OKBLUE = '\033[94m'

OKGREEN = '\033[92m'

WARNING = '\033[93m'

FAIL = '\033[91m'

ENDC = '\033[0m'

BOLD = '\033[1m'

UNDERLINE = '\033[4m'

print(bcolors.WARNING + " 警告的颜色字体 ?" + bcolors.ENDC) 12345678910

实例 036 :算素数

题目 求 100 之内的素数。

程序分析 用 else 执行 for 循环的奖励代码(如果 for 是正常完结,非 break)。 lo=int(input(' 下限: '))

hi=int(input(' 上限: '))

for i in range(lo,hi+1):

if i > 1:

for j in range(2,i):

if (i % j) == 0:

break

else:

print(i)

123456789

实例 037:排序

题目 对 10 个数进行排序。

程序分析 同实例 005。

raw=\[\]

for i in range(10):

x=int(input('int%d: '%(i)))

raw.append(x)

for i in range(len(raw)):

for j in range(i,len(raw)):

if rawi>rawj:

rawi,rawj=rawj,rawi print(raw)

1234567891011

实例 038 :矩阵对角线之和

题目 求一个 3*3 矩阵主对角线元素之和。

程序分析 无。

mat=\[1,2,3, [3](#3),[4](#4),[5](#5),

[4](#4),[5](#5),[6](#6)

]

res=0

for i in range(len(mat)):

res+=matii print(res)

12345678

实例 039 :有序列表插入元素

题目 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

程序分析 首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。

lis=[1](#1),[10](#10),[100](#100),[1000](#1000),[10000](#10000),[100000](#100000) n=int(input('insert a number: '))

lis.append(n)

for i in range(len(lis)-1):

if lisi>=n:

for j in range(i,len(lis)):

lisj,lis-1=lis-1,lisj

break

print(lis)

123456789

实例 040 :逆序列表

题目 将一个数组逆序输出。

程序分析 依次交换位置,或者直接调用 reverse 方法。

lis=[1](#1),[10](#10),[100](#100),[1000](#1000),[10000](#10000),[100000](#100000) for i in range(int(len(lis)/2)):

lisi,lislen(lis)-1-i=lislen(lis)-1-i,lisi print(' 第一种实现: ')

print(lis)

lis=[1](#1),[10](#10),[100](#100),[1000](#1000),[10000](#10000),[100000](#100000) print(' 第二种实现: ')

lis.reverse()

print(lis)

123456789101112

实例 041 :类的方法与变量 题目 模仿静态变量的用法。

程序分析 构造类,了解类的方法与变量。

def dummy():

i=0

print(i)

i+=1

class cls:

i=0

def dummy(self): print(self.i) self.i+=1

a=cls()

for i in range(50): dummy()

a.dummy()

123456789101112131415

实例 042 :变量作用域

题目 学习使用 auto 定义变量的用法。程序分析 python 中的变量作用域。

i=0

n=0

def dummy(): i=0

print(i) i+=1

def dummy2(): global n print(n)

n+=1

print(' 函数内部的同名变量 ')

for j in range(20):

print(i)

dummy()

i+=1

print('global 声明同名变量 ')

for k in range(20):

print(n)

dummy2()

n+=10

1234567891011121314151617181920

实例 043:作用域、类的方法与变量

题目 模仿静态变量 (static) 另一案例。程序分析 综合实例 041 和实例 042。

class dummy:

num=1

def Num(self):

print('class dummy num:',self.num) print('global num: ',num)

self.num+=1

n=dummy()

num=1

for i in range(5):

num*=10

n.Num()

123456789101112

实例 044 :矩阵相加

题目 计算两个矩阵相加。

程序分析 创建一个新的矩阵,使用 for 迭代并取出 X 和 Y 矩阵中对应位置的值,相加后放到新矩阵的对应位置中。

X = \[12,7,3, [4](#4) ,[5](#5),[6](#6),

[7](#7) ,[8](#8),[9](#9)\]

Y = \[5,8,1, [6](#6),[7](#7),[3](#3),

[4](#4),[5](#5),[9](#9)\]

res=\[0,0,0, [0](#0),[0](#0),[0](#0),

[0](#0),[0](#0),[0](#0)\]

for i in range(len(res)):

for j in range(len(res[0](#0))):

resij=Xij+Yij

print(res)

12345678910111213141516

实例 045 :求和

题目 统计 1 到 100 之和。

程序分析 无

res=0

for i in range(1,101):

res+=i print(res) 1234

实例 046 :打破循环

题目 求输入数字的平方,如果平方运算后小于 50 则退出。

程序分析 无

while True:

try:

n=float(input(' 输入一个数字: '))

except:

print(' 输入错误 ')

Continue

dn=n**2

print(' 其平方为: ',dn)

if dn<50:

print(' 平方小于 50,退出 ')

break

1234567891011

实例 047 :函数交换变量

题目 两个变量值用函数互换。

程序分析 无def exc(a,b):

return (b,a) a=0

b=10

a,b=exc(a,b)

print(a,b) 123456

实例 048 :数字比大小 题目 数字比较。

程序分析 无

a=int(input('a='))

b=int(input('b='))

if a<b:

print('a<b') elif a>b:

print('a>b') else:

print('a=b')

12345678

实例 049 lambda

题目 使用 lambda 来创建匿名函数。程序分析 无

Max=lambda x,y:x*(x>=y)+y*(y>x)

Min=lambda x,y:x*(x<=y)+y*(y<x)

a=int(input('1:'))

b=int(input('2:'))

print(Max(a,b))

print(Min(a,b)) 12345678

实例 050 :随机数

题目 输出一个随机数。

程序分析 使用 random 模块。 import random

print(random.uniform(10,20)) 12

实例 051 :按位与

题目 学习使用按位与 & 。

程序分析 0&0=0; 0&1=0; 1&0=0; 1&1=1 。

a=0o77 print(a) b=a&3 print(b) b=b&7 print(b) 123456

实例 052 :按位或

题目 学习使用按位或 | 。

程序分析 0|0=0; 0|1=1; 1|0=1; 1|1=1 a=0o77

print(a|3)

print(a|3|7) 123

实例 053 :按位异或

题目 学习使用按位异或 ^ 。

程序分析 0^0=0; 0^1=1; 1^0=1; 1^1=0 a=0o77

print(a^3)

print(a^3^7) 123

实例 054 :位取反、位移动

题目 取一个整数 a 从右端开始的 4? 7 位。

程序分析 可以这样考虑:

(1)先使 a 右移 4 位。

(2)设置一个低 4 位全为 1,其余全为 0 的数。可用 (0<<4)

(3)将上面二者进行 &运算。

a=int(input(' 输入一个数字 : '))

b=0 # 0

b=~b # 1

b=b<<4 # 10000

b=~b # 1111

c=a>>4 d=c&b

print('a:',bin(a))

print('b:',bin(b))

print('c:',bin(c))

print('d:',bin(d)) 1234567891011

实例 055 :按位取反

题目 学习使用按位取反 ~。

程序分析 ~0=1; ~1=0;

print(~234)

print(~~234) 12

实例 056 :画圈

题目 画图,学用 circle 画圆形。

程序分析 无。

from tkinter import *

canvas=Canvas(width=800,height=600,bg='yellow')

canvas.pack(expand=YES,fill=BOTH) k=1

j=1

for i in range(26):

canvas.create_oval(310-k,250-k,310+k,250+k,width=1) k+=j

j+=0.3

mainloop()

12345678910

实例 057 :画线

题目 画图,学用 line 画直线。

程序分析 无。

if name == ' main ': from tkinter import *

canvas = Canvas(width=300, height=300, bg='green') canvas.pack(expand=YES, fill=BOTH)

x0 = 263

y0 = 263

y1 = 275

x1 = 275

for i in range(19):

canvas.create_line(x0,y0,x0,y1, width=1, fill='red') x0 = x0 - 5

y0 = y0 - 5

x1 = x1 + 5

y1 = y1 + 5

x0 = 263

y1 = 275

y0 = 263

for i in range(21):

canvas.create_line(x0,y0,x0,y1,fill = 'red')

x0 += 5

y0 += 5

y1 += 5

mainloop()

1234567891011121314151617181920212223242526

实例 058 :画矩形

题目 画图,学用 rectangle 画方形。

程序分析 无。

if name == ' main ': from tkinter import *

root = Tk()

root.title('Canvas')

canvas = Canvas(root,width = 400,height = 400,bg = 'yellow') x0 = 263

y0 = 263

y1 = 275

x1 = 275

for i in range(19):

canvas.create_rectangle(x0,y0,x1,y1)

x0 -= 5

y0 -= 5

x1 += 5

y1 += 5

canvas.pack()

root.mainloop()

123456789101112131415161718

实例 059 :画图(丑)

题目 画图,综合例子。

程序分析 丑。

if name == ' main ': from tkinter import *

canvas = Canvas(width = 300,height = 300,bg = 'green') canvas.pack(expand = YES,fill = BOTH)

x0 = 150

y0 = 100

canvas.create_oval(x0 - 10,y0 - 10,x0 + 10,y0 + 10)

canvas.create_oval(x0 - 20,y0 - 20,x0 + 20,y0 + 20)

canvas.create_oval(x0 - 50,y0 - 50,x0 + 50,y0 + 50) import math

B = 0.809

for i in range(16):

a = 2 * math.pi / 16 * i

x = math.ceil(x0 + 48 * math.cos(a))

y = math.ceil(y0 + 48 * math.sin(a) * B)

canvas.create_line(x0,y0,x,y,fill = 'red')

canvas.create_oval(x0 - 60,y0 - 60,x0 + 60,y0 + 60)

for k in range(501):

for i in range(17):

a = (2 * math.pi / 16) * i + (2 * math.pi / 180) * k x = math.ceil(x0 + 48 * math.cos(a))

y = math.ceil(y0 + 48 + math.sin(a) * B)

canvas.create_line(x0,y0,x,y,fill = 'red') for j in range(51):

a = (2 * math.pi / 16) * i + (2* math.pi / 180) * k - 1 x = math.ceil(x0 + 48 * math.cos(a))

y = math.ceil(y0 + 48 * math.sin(a) * B)

canvas.create_line(x0,y0,x,y,fill = 'red')

mainloop()

12345678910111213141516171819202122232425262728293031

实例 060 :字符串长度

题目 计算字符串长度。

程序分析 无。

s='zhangguang101'

print(len(s))

12

相关推荐
auto_go1 小时前
Python 实战指南(7)——账本动不动就崩?先把“魔法字符串”和“裸报错”干掉
python
根目录下的猫1 小时前
RK3588适配的轻量级AI模型推荐
人工智能·后端·python·目标检测
景熙55231 小时前
15.Java 8 Stream 流入门到实战
java·开发语言·数据结构
wno7042 小时前
Spring Security权限控制
java·python·spring
ShineWinsu2 小时前
对于Coze—AI:SDK的解析
人工智能·python·ai·sdk·项目·coze·字节跳动
右耳朵猫AI3 小时前
Python周刊2026W38 | 标准流编码修复、PEP 845/846 草案、解析器提速 10%、集合字典二次复杂度
python·ai·数据科学
微软技术分享3 小时前
大模型网络结构:模型接口测试用例参考
python
漂流瓶jz3 小时前
UVA-1442 洞穴 题解答案代码 算法竞赛入门经典第二版
c++·算法·题解·aoapc·算法竞赛入门经典·uva
Bruce_Liuxiaowei4 小时前
Python 实例赋值遮蔽类属性:一个从不报错的静默陷阱
开发语言·python·语法糖