100道Python编程题及答案(四)
100道Python编程题及答案(四)
题目61:打印出杨辉三角形(要求打印出10行如下图)
1.程序分析:
'''
题目61:打印出杨辉三角形(要求打印出10行如下图)
1.程序分析:
'''
if __name__ == '__main__':
a = []
for i in range(10):
a.append([])
for j in range(10):
a[i].append(0)
for i in range(10):
a[i][0] = 1
a[i][i] = 1
for i in range(2,10):
for j in range(1,i):
a[i][j] = a[i - 1][j-1] + a[i - 1][j]
from sys import stdout
for i in range(10):
for j in range(i + 1):
stdout.write(a[i][j])
stdout.write(' ')
print
'''
a = []
for i in range(10):
a.append([])
for j in range(10):
a[i].append(0)
for i in range(10):
a[i][0] = 1
a[i][i] = 1
for i in range(2,10):
for j in range(1,i):
a[i][j] = a[i - 1][j-1] + a[i - 1][j]
from sys import stdout
for i in range(10):
for j in range(i + 1):
stdout.write(a[i][j])
stdout.write(' ')
'''
题目62:学习putpixel画点。
1.程序分析:
2.程序源代码:
#include "stdio.h"
#include "graphics.h"
main()
{
int i,j,driver=VGA,mode=VGAHI;
initgraph(&driver,&mode,"");
setbkcolor(YELLOW);
for(i=50;i<=230;i+=20)
for(j=50;j<=230;j++)
putpixel(i,j,1);
for(j=50;j<=230;j+=20)
for(i=50;i<=230;i++)
putpixel(i,j,1);
}
'''
'''
1.程序分析:
2.程序源代码:
#include "stdio.h"
#include "graphics.h"
main()
{
int i,j,driver=VGA,mode=VGAHI;
initgraph(&driver,&mode,"");
setbkcolor(YELLOW);
for(i=50;i<=230;i+=20)
for(j=50;j<=230;j++)
putpixel(i,j,1);
for(j=50;j<=230;j+=20)
for(i=50;i<=230;i++)
putpixel(i,j,1);
}
'''
'''
题目63:画椭圆ellipse
1.程序分析:
2.程序源代码:
'''
if __name__ == '__main__':
from Tkinter import *
x = 360
y = 160
top = y - 30
bottom = y - 30
canvas = Canvas(width = 400,height = 600,bg = 'white')
for i in range(20):
canvas.create_oval(250 - top,250 - bottom,250 + top,250 + bottom)
top -= 5
bottom += 5
canvas.pack()
mainloop()
'''
1.程序分析:
2.程序源代码:
'''
if __name__ == '__main__':
from Tkinter import *
x = 360
y = 160
top = y - 30
bottom = y - 30
canvas = Canvas(width = 400,height = 600,bg = 'white')
for i in range(20):
canvas.create_oval(250 - top,250 - bottom,250 + top,250 + bottom)
top -= 5
bottom += 5
canvas.pack()
mainloop()
'''
题目64:利用ellipse and rectangle 画图。
1.程序分析:
2.程序源代码:
'''
if __name__ == '__main__':
from Tkinter import *
canvas = Canvas(width = 400,height = 600,bg = 'white')
left = 20
right = 50
top = 50
num = 15
for i in range(num):
canvas.create_oval(250 - right,250 - left,250 + right,250 + left)
canvas.create_oval(250 - 20,250 - top,250 + 20,250 + top)
canvas.create_rectangle(20 - 2 * i,20 - 2 * i,10 * (i + 2),10 * ( i + 2))
right += 5
left += 5
top += 10
1.程序分析:
2.程序源代码:
'''
if __name__ == '__main__':
from Tkinter import *
canvas = Canvas(width = 400,height = 600,bg = 'white')
left = 20
right = 50
top = 50
num = 15
for i in range(num):
canvas.create_oval(250 - right,250 - left,250 + right,250 + left)
canvas.create_oval(250 - 20,250 - top,250 + 20,250 + top)
canvas.create_rectangle(20 - 2 * i,20 - 2 * i,10 * (i + 2),10 * ( i + 2))
right += 5
left += 5
top += 10
canvas.pack()
mainloop()
'''
mainloop()
'''
题目65:一个最优美的图案。
1.程序分析:
2.程序源代码:
'''
import math
class PTS:
def __init__(self):
self.x = 0
self.y = 0
points = []
1.程序分析:
2.程序源代码:
'''
import math
class PTS:
def __init__(self):
self.x = 0
self.y = 0
points = []
def LineToDemo():
from Tkinter import *
screenx = 400
screeny = 400
canvas = Canvas(width = screenx,height = screeny,bg = 'white')
from Tkinter import *
screenx = 400
screeny = 400
canvas = Canvas(width = screenx,height = screeny,bg = 'white')
AspectRatio = 0.85
MAXPTS = 15
h = screeny
w = screenx
xcenter = w / 2
ycenter = h / 2
radius = (h - 30) / (AspectRatio * 2) - 20
step = 360 / MAXPTS
angle = 0.0
for i in range(MAXPTS):
rads = angle * math.pi / 180.0
p = PTS()
p.x = xcenter + int(math.cos(rads) * radius)
p.y = ycenter - int(math.sin(rads) * radius * AspectRatio)
angle += step
points.append(p)
canvas.create_oval(xcenter - radius,ycenter - radius,
xcenter + radius,ycenter + radius)
for i in range(MAXPTS):
for j in range(i,MAXPTS):
canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y)
MAXPTS = 15
h = screeny
w = screenx
xcenter = w / 2
ycenter = h / 2
radius = (h - 30) / (AspectRatio * 2) - 20
step = 360 / MAXPTS
angle = 0.0
for i in range(MAXPTS):
rads = angle * math.pi / 180.0
p = PTS()
p.x = xcenter + int(math.cos(rads) * radius)
p.y = ycenter - int(math.sin(rads) * radius * AspectRatio)
angle += step
points.append(p)
canvas.create_oval(xcenter - radius,ycenter - radius,
xcenter + radius,ycenter + radius)
for i in range(MAXPTS):
for j in range(i,MAXPTS):
canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y)
canvas.pack()
mainloop()
if __name__ == '__main__':
LineToDemo()
'''
mainloop()
if __name__ == '__main__':
LineToDemo()
'''
题目66:输入3个数a,b,c,按大小顺序输出。
1.程序分析:利用指针方法。
2.程序源代码:
'''
if __name__ == '__main__':
n1 = int(raw_input('n1 = :n'))
n2 = int(raw_input('n2 = :n'))
n3 = int(raw_input('n3 = :n'))
1.程序分析:利用指针方法。
2.程序源代码:
'''
if __name__ == '__main__':
n1 = int(raw_input('n1 = :n'))
n2 = int(raw_input('n2 = :n'))
n3 = int(raw_input('n3 = :n'))
def swap(p1,p2):
return p2,p1
return p2,p1
if n1 > n2 : n1,n2 = swap(n1,n2)
if n1 > n3 : n1,n3 = swap(n1,n3)
if n2 > n3 : n2,n3 = swap(n2,n3)
if n1 > n3 : n1,n3 = swap(n1,n3)
if n2 > n3 : n2,n3 = swap(n2,n3)
print n1,n2,n3
'''
'''
题目67:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
1.程序分析:谭浩强的书中答案有问题。
2.程序源代码:
'''
def inp(numbers):
for i in range(9):
numbers.append(int(raw_input('input a number:n')))
numbers.append(int(raw_input('input a number:n')))
p = 0
def max_min(array):
max = min = 0
for i in range(1,len(array) - 1):
p = i
if array[p] > array[max] : max = p
elif array[p] < array[min] : min = p
k = max
l = min
array[0],array[l] = array[l],array[0]
array[9],array[k] = array[k],array[9]
1.程序分析:谭浩强的书中答案有问题。
2.程序源代码:
'''
def inp(numbers):
for i in range(9):
numbers.append(int(raw_input('input a number:n')))
numbers.append(int(raw_input('input a number:n')))
p = 0
def max_min(array):
max = min = 0
for i in range(1,len(array) - 1):
p = i
if array[p] > array[max] : max = p
elif array[p] < array[min] : min = p
k = max
l = min
array[0],array[l] = array[l],array[0]
array[9],array[k] = array[k],array[9]
def outp(numbers):
for i in range(len(numbers)):
print numbers[i]
for i in range(len(numbers)):
print numbers[i]
if __name__ == '__main__':
array = []
inp(array)
max_min(array)
outp(array)
'''
array = []
inp(array)
max_min(array)
outp(array)
'''
题目68:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
1.程序分析:
2.程序源代码:
'''
if __name__ == '__main__':
n = int(raw_input('the total number is:n'))
m = int(raw_input('back m:n'))
1.程序分析:
2.程序源代码:
'''
if __name__ == '__main__':
n = int(raw_input('the total number is:n'))
m = int(raw_input('back m:n'))
def move(array,n,m):
array_end = array[n - 1]
for i in range(n - 1,-1,- 1):
array[i] = array[i - 1]
array[0] = array_end
m -= 1
if m > 0:move(array,n,m)
number = []
for i in range(n):
number.append(int(raw_input('input a number:n')))
print 'orignal number:',number
array_end = array[n - 1]
for i in range(n - 1,-1,- 1):
array[i] = array[i - 1]
array[0] = array_end
m -= 1
if m > 0:move(array,n,m)
number = []
for i in range(n):
number.append(int(raw_input('input a number:n')))
print 'orignal number:',number
move(number,n,m)
print 'after moved:',number
'''
'''
题目69:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
圈子,问最后留下的是原来第几号的那位。
1. 程序分析:
2.程序源代码:
'''
if __name__ == '__main__':
nmax = 50
n = int(raw_input('please input the total of numbers:'))
num = []
for i in range(n):
num.append(i + 1)
圈子,问最后留下的是原来第几号的那位。
1. 程序分析:
2.程序源代码:
'''
if __name__ == '__main__':
nmax = 50
n = int(raw_input('please input the total of numbers:'))
num = []
for i in range(n):
num.append(i + 1)
i = 0
k = 0
m = 0
k = 0
m = 0
while m < n - 1:
if num[i] != 0 : k += 1
if k == 3:
num[i] = 0
k = 0
m += 0
i += 1
if i == n : i = 0
if num[i] != 0 : k += 1
if k == 3:
num[i] = 0
k = 0
m += 0
i += 1
if i == n : i = 0
i = 0
while num[i] == 0: i += 1
print num[i]
'''
题目70:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
1.程序分析:
2.程序源代码
就这样吧
'''
if __name__ == '__main__':
s = raw_input('please input a string:n')
print 'the string has %d characters.' % len(s)
'''
while num[i] == 0: i += 1
print num[i]
'''
题目70:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
1.程序分析:
2.程序源代码
就这样吧
'''
if __name__ == '__main__':
s = raw_input('please input a string:n')
print 'the string has %d characters.' % len(s)
'''
题目71:编写input()和output()函数输入,输出5个学生的数据记录。
1.程序分析:
2.程序源代码:
使用list来模拟结构(不使用class)
stu = [string,string,list]
'''
N = 3
#stu
# num : string
# name : string
# score[4]: list
student = []
for i in range(5):
student.append(['','',[]])
1.程序分析:
2.程序源代码:
使用list来模拟结构(不使用class)
stu = [string,string,list]
'''
N = 3
#stu
# num : string
# name : string
# score[4]: list
student = []
for i in range(5):
student.append(['','',[]])
def input_stu(stu):
for i in range(N):
stu[i][0] = raw_input('input student num:n')
stu[i][1] = raw_input('input student name:n')
for j in range(3):
stu[i][2].append(int(raw_input('score:n')))
for i in range(N):
stu[i][0] = raw_input('input student num:n')
stu[i][1] = raw_input('input student name:n')
for j in range(3):
stu[i][2].append(int(raw_input('score:n')))
def output_stu(stu):
for i in range(N):
print '%-6s%-10s' % ( stu[i][0],stu[i][1] )
for j in range(3):
print '%-8d' % stu[i][2][j]
for i in range(N):
print '%-6s%-10s' % ( stu[i][0],stu[i][1] )
for j in range(3):
print '%-8d' % stu[i][2][j]
if __name__ == '__main__':
input_stu(student)
print student
output_stu(student)
'''
input_stu(student)
print student
output_stu(student)
'''
题目72:创建一个链表。
1.程序分析:
2.程序源代码:
'''
if __name__ == '__main__':
ptr = []
for i in range(5):
num = int(raw_input('please input a number:n'))
ptr.append(num)
print ptr
'''
1.程序分析:
2.程序源代码:
'''
if __name__ == '__main__':
ptr = []
for i in range(5):
num = int(raw_input('please input a number:n'))
ptr.append(num)
print ptr
'''
题目73:反向输出一个链表。
1.程序分析:
2.程序源代码:
'''
if __name__ == '__main__':
ptr = []
for i in range(5):
num = int(raw_input('please input a number:n'))
ptr.append(num)
print ptr
ptr.reverse()
print ptr
'''
1.程序分析:
2.程序源代码:
'''
if __name__ == '__main__':
ptr = []
for i in range(5):
num = int(raw_input('please input a number:n'))
ptr.append(num)
print ptr
ptr.reverse()
print ptr
'''
题目74:连接两个链表。
1.程序分析:
2.程序源代码:
代码上好像只有,列表排序
'''
if __name__ == '__main__':
arr1 = (3,12,8,9,11)
ptr = list(arr1)
print ptr
ptr.sort()
print ptr
'''
1.程序分析:
2.程序源代码:
代码上好像只有,列表排序
'''
if __name__ == '__main__':
arr1 = (3,12,8,9,11)
ptr = list(arr1)
print ptr
ptr.sort()
print ptr
'''
题目75:放松一下,算一道简单的题目。
1.程序分析:
2.程序源代码:
'''
if __name__ == '__main__':
for i in range(5):
n = 0
if i != 1: n += 1
if i == 3: n += 1
if i == 4: n += 1
if i != 4: n += 1
if n == 3: print 64 + i
'''
1.程序分析:
2.程序源代码:
'''
if __name__ == '__main__':
for i in range(5):
n = 0
if i != 1: n += 1
if i == 3: n += 1
if i == 4: n += 1
if i != 4: n += 1
if n == 3: print 64 + i
'''
题目76:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数
1/1+1/3+...+1/n(利用指针函数)
1.程序分析:
2.程序源代码:
'''
def peven(n):
i = 0
s = 0.0
for i in range(2,n + 1,2):
s += 1.0 / i
return s
1/1+1/3+...+1/n(利用指针函数)
1.程序分析:
2.程序源代码:
'''
def peven(n):
i = 0
s = 0.0
for i in range(2,n + 1,2):
s += 1.0 / i
return s
def podd(n):
s = 0.0
for i in range(1, n + 1,2):
s += 1 / i
return s
s = 0.0
for i in range(1, n + 1,2):
s += 1 / i
return s
def dcall(fp,n):
s = fp(n)
return s
s = fp(n)
return s
if __name__ == '__main__':
n = int(raw_input('input a number:n'))
if n % 2 == 0:
sum = dcall(peven,n)
else:
sum = dcall(podd,n)
print sum
'''
题目77: 9*9 乘法口诀
# -*- coding: cp936 -*-
#enconding: utf-8
def gen(line_cnt):
''':
@param:行数
'''
for i in range(1,line_cnt+1):
for j in range(1,i+1):
m=i*j
print '%s*%s=%st' % (i,j,m),#这边的逗号很重要,有了逗号,才能不换行
print''
if __name__ == '__main__':
gen(9)
#求可用被17整除的所有三位数
n = int(raw_input('input a number:n'))
if n % 2 == 0:
sum = dcall(peven,n)
else:
sum = dcall(podd,n)
print sum
'''
题目77: 9*9 乘法口诀
# -*- coding: cp936 -*-
#enconding: utf-8
def gen(line_cnt):
''':
@param:行数
'''
for i in range(1,line_cnt+1):
for j in range(1,i+1):
m=i*j
print '%s*%s=%st' % (i,j,m),#这边的逗号很重要,有了逗号,才能不换行
print''
if __name__ == '__main__':
gen(9)
#求可用被17整除的所有三位数
for num in range(99,1000):
if num % 17 == 0:
print num
if num % 17 == 0:
print num
题目78:写一个程序,提示输入整数X,然后计算从1到X连续整数的和
sum = 0
x = int (raw_input ('pls input x: '))
#输入函数
for num in range(0,x):
sum += num
print sum
sum = 0
x = int (raw_input ('pls input x: '))
#输入函数
for num in range(0,x):
sum += num
print sum
题目79:改写上面的计算过程,循环嵌套计算连续的和
x = int(raw_input('please input x : ' ))
layer = 1
while layer <= x:
lsum = 0
count =1
while count <=layer:
lsum += count
count += 1
fstr = ''
for num in range(1 , layer ):
fstr = fstr + str(num) + '+'
fstr += str(layer)
print fstr,'=',lsum
layer += 1
# 如何控制空格的数量让等号在一起呢
题目80:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
cnt = 0#count the sum of result
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if i!=j and i!=k and j!=k:
print i*100+j*10+k
cnt+=1
print cnt
x = int(raw_input('please input x : ' ))
layer = 1
while layer <= x:
lsum = 0
count =1
while count <=layer:
lsum += count
count += 1
fstr = ''
for num in range(1 , layer ):
fstr = fstr + str(num) + '+'
fstr += str(layer)
print fstr,'=',lsum
layer += 1
# 如何控制空格的数量让等号在一起呢
题目80:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
cnt = 0#count the sum of result
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if i!=j and i!=k and j!=k:
print i*100+j*10+k
cnt+=1
print cnt
"""
原文链接:http://www.jxszl.com/biancheng/python/446183.html