Python⼊门36道经典练习题
【程序1】
题⽬:有1、2、3、4个数字,能组成多少个互不相同且⽆重复数字的三位数?都是多少?
num_list=[]
cou=0
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
if i!=j and j!=k and k!=i:
制作网页时若要使链接目标在新窗口中打开则应用选择res=i*100+j*10+k
num_list.append(res)
cou+=1
print(num_list,cou)
【程序2】
题⽬:企业发放的奖⾦根据利润提成。利润(I)低于或等于10万元时,奖⾦可提10%;利润⾼于10万元,低于20万元时,低于10万元的部分按10%提成,⾼于10万元的部分,可可提成7.5%;20万到40万之间时,⾼于20万元的部分,可提成5%;40万到60万之间时⾼于40万元的部分,可提成3%;60万到100万之间时,⾼于60万元的部分,可提成1.5%,⾼于100万元时,超过100万元的部分按1%提成,从键盘输⼊当⽉利润I,求应发放奖⾦总数?
#Filename:002.py
i = int(raw_input('Enter the profit:'))
arr = [1000000,600000,400000,200000,100000,0]
rat = [0.01,0.015,0.03,0.05,0.075,0.1]
r = 0
学python编程入门for idx in range(0,6):
if i>arr[idx]:
r+=(i-arr[idx])*rat[idx]
print (i-arr[idx])*rat[idx]
i=arr[idx]
print r
【程序3】
题⽬:⼀个整数,它加上100后是⼀个完全平⽅数,再加上168⼜是⼀个完全平⽅数,请问该数是多少?
# -*- coding:utf-8 -*-
'''
Created on 2015-6-7
# 第三题:⼀个整数,它加上100后是⼀个完全平⽅数,再加上168⼜是⼀个完全平⽅数,请问该数是多少
@author: Administrator
Python学习交流QQ:857662006
'''
import math
num = 1
while True:
if math.sqrt(num + 100)-int(math.sqrt(num + 100)) == 0 and math.sqrt(num + 268)-int(math.sqrt(num + 268)) == 0:
print(num)
break
num += 1
【程序4】
题⽬:输⼊某年某⽉某⽇,判断这⼀天是这⼀年的第⼏天?
#author: 叛军
import datetime
import time
dtstr = str(input('Enter the datetime:(20151215):'))
dt = datetime.datetime.strptime(dtstr, "%Y%m%d")
another_dtstr =dtstr[:4] +'0101'
another_dt = datetime.datetime.strptime(another_dtstr, "%Y%m%d")
print (int((dt-another_dt).days) + 1)
【程序5】
题⽬:输出9*9⼝诀。vlookup公式怎么套用
for i in range(1,10):
for j in range(1,i+1):
print(i,'*',j,'=',i*j,)
print('')
【程序6】
题⽬:古典问题:有⼀对兔⼦,从出⽣后第3个⽉起每个⽉都⽣⼀对兔⼦,⼩兔⼦长到第三个⽉
后每个⽉⼜⽣⼀对兔⼦,假如兔⼦都不死,问每个⽉的兔⼦总数为多少?
a = 1
b = 1
for i in range(1,21,2):
print('%d %d'%(a,b),)
a += b
b += a
【程序7】
题⽬:判断101-200之间有多少个素数,并输出所有素数。
#!/usr/bin/python
#-*- coding:utf-8 -*-
from math import sqrt
def main():
for i in range(101,201):
flag = 1
k = int(sqrt(i))
for j in range(2,k+1):
if i%j == 0:
flag = 0
break
if flag == 1:
print '%5d'%(i),
if __name__ == "__main__":
main()
【程序8】题⽬:打印出所有的“⽔仙花数”,所谓“⽔仙花数”是指⼀个三位数,其各位数字⽴⽅和等于该数本⾝。例如:153是⼀个“⽔仙花数”,因为153=1的三次⽅+5的三次⽅+3的三次⽅。
for i in range(100,1000):
a = i%10
b =int(i/100)
c = (int(i/10))%10
if i == a**3+b**3+c**3:
print('%d'%i)
【程序9】题⽬:将⼀个正整数分解质因数。例如:输⼊90,打印出90=233*5。
#!/usr/bin/python
#-*- coding:utf-8 -*-
def main():
n = int(raw_input('Enter a number:'))
print n,'=',
while(n!=1):
for i in range(2,n+1):
if (n%i)==0:
n/=i
if(n == 1):
print '%d'%(i)
else:
print '%d *'%(i),
break
if __name__ == "__main__":
main()
【程序10】
题⽬:利⽤条件运算符的嵌套来完成此题:学习成绩>=90分的同学⽤A表⽰,60-89分之间的⽤B表⽰,60分以下的⽤C表⽰。
#!/usr/bin/python
#-*- coding:utf-8 -*-
def main():
s = int(raw_input('Enter a number:'))
if s>=90:
grade = 'A'
elif s>=60:
grade = 'B'
else:
grade = 'C'
print grade,
if __name__ == '__main__':
main()
【程序11】
题⽬:输⼊⼀⾏字符,分别统计出其中英⽂字母、空格、数字和其它字符的个数。
#!/usr/bin/python
#-*- coding:utf-8 -*-
#there is no ++ operator in Python
import string
def main():
index在excel什么意思s = raw_input('input a string:')
letter = 0
space = 0
digit = 0
other = 0
for c in s:
if c.isalpha():
letter+=1
elif c.isspace():
space+=1
elif c.isdigit():
digit+=1
else:
other+=1
print 'There are %d letters,%d spaces,%d digits and %d other characters in your string.'%(letter,space,digit,other)
if __name__ == '__main__':
main()
【程序12】
题⽬:求s=a+aa+aaa+a的值,其中a是⼀个数字。例如2+22+222+2222+22222(此时共有5个数相加),⼏个数相加有键盘控制。def main():
basis = int(input("Input the basis number:"))
n = int(input("Input the longest length of number:"))
b = basis
sum = 0
for i in range(0,n):
if i==n-1:
print "%d "%(basis),
else:
print "%d +"%(basis),
sum+=basis
basis = basis*10+b
print '= %d'%(sum),
【程序13】
题⽬:⼀个数如果恰好等于它的因⼦之和,这个数就称为“完数”。例如6=1+2+3.编程
出1000以内的所有完数。
from math import sqrt
n = int(raw_input('input a number:'))
sum = n*-1
k = int(sqrt(n))
用c写一个socketfor i in range(1,k+1):
if n%i == 0:
sum += n/i
sum += i
if sum == n:
print 'YES'
else:
print 'NO'
【程序14】
题⽬:⼀球从100⽶⾼度⾃由落下,每次落地后反跳回原⾼度的⼀半;再落下,求它在
第10次落地时,共经过多少⽶?第10次反弹多⾼?
s = 100.
h = 50.0
for i in range(2,11):
s += 2*h
h /= 2
print "the sum length of path:%f"%s
print "the last height is:%f"%h
【程序15】
题⽬:猴⼦吃桃问题:猴⼦第⼀天摘下若⼲个桃⼦,当即吃了⼀半,还不瘾,⼜多吃了⼀个
第⼆天早上⼜将剩下的桃⼦吃掉⼀半,⼜多吃了⼀个。以后每天早上都吃了前⼀天剩下
的⼀半零⼀个。到第10天早上想再吃时,见只剩下⼀个桃⼦了。求第⼀天共摘了多少。
n = 1
大量元素和常量元素for i in range(9,0,-1):
n = (n+1)<<1
print n
【程序16】
题⽬:两个乒乓球队进⾏⽐赛,各出三⼈。甲队为a,b,c三⼈,⼄队为x,y,z三⼈。已抽签决定
⽐赛名单。有⼈向队员打听⽐赛的名单。a说他不和x⽐,c说他不和x,z⽐,请编程序出 三队赛⼿的名单。
for i in range(ord('x'),ord('z') + 1):
for j in range(ord('x'),ord('z') + 1):
if i != j:
for k in range(ord('x'),ord('z') + 1):
if (i != k) and (j != k):
if (i != ord('x')) and (k != ord('x')) and (k != ord('z')):
print 'order is a -- %s\t b -- %s\tc--%s' % (chr(i),chr(j),chr(k))
【程序17】题⽬:打印出如下图案(菱形)
*
***
*****
*******
*****
***
*
for i in range(1,8,2):
print ' '*(4-(i+1)/2)+'*'*i
for i in range(5,0,-2):
print ' '*(4-(i+1)/2)+'*'*i
【程序18】
题⽬:有⼀分数序列:2/1,3/2,5/3,8/5,13/8,求出这个数列的前20项之和。
u = 2.0
d = 1.0
s = 0.0
for i in range(0,20):
s = s+u/d
u = u+d
d = u-d
print '%f'%s
【程序19】
题⽬:求1+2!+3!+...+20!的和
s = 0
t = 1
for i in range(1,21):
t*=i
s+=t
print s
【程序20】
题⽬:利⽤递归⽅法求5!。
def fun(i):
if i==1:
return 1
return i*fun(i-1)
print(fun(5))
【程序21】
题⽬:利⽤递归函数调⽤⽅式,将所输⼊的5个字符,以相反顺序打印出来。
def output(s,l):
if l==0:
return
print s[l-1]
output(s,l-1)
s = raw_input('Input a string:')
l = len(s)
output(s,l)
【程序22】
题⽬:有5个⼈坐在⼀起,问第五个⼈多少岁?他说⽐第4个⼈⼤2岁。问第4个⼈岁数,他说⽐第
3个⼈⼤2岁。问第三个⼈,⼜说⽐第2⼈⼤两岁。问第2个⼈,说⽐第⼀个⼈⼤两岁。最后
问第⼀个⼈,他说是10岁。请问第五个⼈多⼤?
def fun(i):
if i==1:
return 10
return fun(i-1)+2
print fun(5)
【程序23】
题⽬:给⼀个不多于5位的正整数,要求:⼀、求它是⼏位数,⼆、逆序打印出各位数字。
# Python学习交流QQ:857662006
def fun(i,cnt):
if i==0:
print 'There are %d digit in the number.'%cnt
return
print i%10,
i/=10
cnt+=1
fun(i,cnt)
i = int(raw_input('Input a number:'))
fun(i,0)
【程序24】
题⽬:⼀个5位数,判断它是不是回⽂数。即12321是回⽂数,个位与万位相同,⼗位与千位相同。 ans=['Yes','No']
i = int(raw_input('Input a number(10000~99999):'))
if i<10000 or i>99999:
print 'Input Error!'
else:
i = str(i)
flag = 0
for j in range(0,2):
if i[j]!=i[4-j]:
flag = 1
break
print ans[flag]
【程序25】【筛选法】
题⽬:求100之内的素数
a = [0]*101
for i in range(2,11):
for j in range(i+i,101,i):
a[j]=-1;
for i in range(2,101):
if a[i]!=-1:
print ' ',i,
【程序26】
题⽬:对10个数进⾏排序
print 'input 10 numbers please:'
l = []
for i in range(10):
l.append(int(raw_input('Input a number:')))
#可以直接使⽤sort函数:l.sort()
#也可以⾃⼰写排序代码(选择排序)
for i in range(9):
for j in range(i+1,10):
if l[j]<l[i]:
temp = l[j]
l[j] = l[i]
l[i] = temp
print l
【程序27】题⽬:求⼀个3*3矩阵对⾓线元素之和
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论