博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Python精华】100个Python练手小程序
阅读量:6836 次
发布时间:2019-06-26

本文共 7047 字,大约阅读时间需要 23 分钟。

100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python。

【程序1】 

题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 
      掉不满足条件的排列。 
2.程序源代码:

for i in range(1,5): for j in range(1,5): for k in range(1,5): if( i != k ) and (i != j) and (j != k): print (i,j,k)

【程序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,求应发放奖金总数? 
1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。       
2.程序源代码:

bonus1 = 100000 * 0.1bonus2 = bonus1 + 100000 * 0.500075bonus4 = bonus2 + 200000 * 0.5 bonus6 = bonus4 + 200000 * 0.3 bonus10 = bonus6 + 400000 * 0.15 i = int(input('input gain:\n')) if i <= 100000: bonus = i * 0.1 elif i <= 200000: bonus = bonus1 + (i - 100000) * 0.075 elif i <= 400000: bonus = bonus2 + (i - 200000) * 0.05 elif i <= 600000: bonus = bonus4 + (i - 400000) * 0.03 elif i <= 1000000: bonus = bonus6 + (i - 600000) * 0.015 else: bonus = bonus10 + (i - 1000000) * 0.01 print( 'bonus = ',bonus)

【程序3】 

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 
1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后 
      的结果满足如下条件,即是结果。请看具体分析: 
2.程序源代码:

include "math.h"main(){long int i,x,y,z;for (i=1;i<100000;i++)  { x=sqrt(i+100);   /*x为加上100后开方后的结果*/   y=sqrt(i+268);   /*y为再加上168后开方后的结果*/    if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/     printf("\n%ld\n",i);  } } ''' import math for i in range(10000): #转化为整型值 x = int(math.sqrt(i + 100)) y = int(math.sqrt(i + 268)) if(x * x == i + 100) and (y * y == i + 268): print( i)

 

题目:输入某年某月某日,判断这一天是这一年的第几天? 

1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊 
      情况,闰年且输入月份大于3时需考虑多加一天。 
2.程序源代码:

year = int(input('year:\n'))month = int(input('month:\n'))day = int(input('day:\n')) months = (0,31,59,90,120,151,181,212,243,273,304,334) if 0 <= month <= 12: sum = months[month - 1] else: print ('data error') sum += day leap = 0 if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)): leap = 1 if (leap == 1) and (month > 2): sum += 1 print ('it is the %dth day.' % sum)

 

【程序5】 

题目:输入三个整数x,y,z,请把这三个数由小到大输出。 
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换, 
      然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。 
2.程序源代码:

l = []for i in range(3):    x = int(input('integer:\n')) l.append(x) l.sort() print l

 

【程序6】 

题目:用*号输出字母C的图案。 
1.程序分析:可先用’*’号在纸上写出字母C,再分行输出。 
2.程序源代码:

print ('Hello Python world!\n')print ('*' * 10) for i in range(5): print( '* *') print( '*' * 10) print( '*\n' * 6)

 

【程序7】 

题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful! 
1.程序分析:字符共有256个。不同字符,图形不一样。       
2.程序源代码:

a = 176b = 219print( chr(b),chr(a),chr(a),chr(a),chr(b)) print( chr(a),chr(b),chr(a),chr(b),chr(a)) print (chr(a),chr(a),chr(b),chr(a),chr(a)) print (chr(a),chr(b),chr(a),chr(b),chr(a)) print (chr(b),chr(a),chr(a),chr(a),chr(b))

【程序8】 

题目:输出9*9口诀。 
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。 
2.程序源代码:

include "stdio.h"main(){ int i,j,result; printf("\n"); for (i=1;i<10;i++)   { for(j=1;j<10;j++)     {      result=i*j;      printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/     }    printf("\n");/*每一行后换行*/   } } for i in range(1,10): for j in range(1,10): result = i * j print ('%d * %d = % -3d' % (i,j,result)) print( '')

 

【程序9】 

题目:要求输出国际象棋棋盘。 
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。 
2.程序源代码:

include "stdio.h"main(){int i,j;for(i=0;i<8;i++)  {   for(j=0;j<8;j++)    if((i+j)%2==0)     printf("%c%c",219,219);    else     printf(" ");    printf("\n");  } } import sys for i in range(8): for j in range(8): if(i + j) % 2 == 0: sys.stdout.write(chr(219)) sys.stdout.write(chr(219)) else: sys.stdout.write(' ') print( '')

【程序10】 

题目:打印楼梯,同时在楼梯上方打印两个笑脸。 
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。 
2.程序源代码:

import syssys.stdout.write(chr(1))sys.stdout.write(chr(1)) print '' for i in range(1,11): for j in range(1,i): sys.stdout.write(chr(219)) sys.stdout.write(chr(219)) print ''

【程序11】 

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 
   后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21…. 
2.程序源代码:

main(){long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++)  { printf("%12ld %12ld",f1,f2);    if(i%2==0) printf("\n");/*控制输出,每行四个*/    f1=f1+f2; /*前两个月加起来赋值给第三个月*/    f2=f1+f2; /*前两个月加起来赋值给第三个月*/  } } f1 = 1 f2 = 1 for i in range(1,21): print '%12d %12d' % (f1,f2) if (i % 2) == 0: print '' f1 = f1 + f2 f2 = f1 + f2

 

【程序12】 

题目:判断101-200之间有多少个素数,并输出所有素数。 
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 
      则表明此数不是素数,反之是素数。        
2.程序源代码:

h = 0leap = 1from math import sqrtfrom sys import stdout for m in range(101,201): k = int(sqrt(m + 1)) for i in range(2,k + 1): if m % i == 0: leap = 0 break if leap == 1: print '%-4d' % m h += 1 if h % 10 == 0: print '' leap = 1 print 'The total is %d' % h

 

【程序13】 

题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数 
   本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。 
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 
2.程序源代码:

for n in range(100,1001):    i = n / 100 j = n / 10 % 10 k = n % 10 if i * 100 + j * 10 + k == i + j ** 2 + k ** 3: print "%-5d" % n

 

【程序14】 

题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: 

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n, 
 重复执行第一步。 
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

2.程序源代码:

from sys import stdoutn = int(raw_input("input number:\n"))print "n = %d" % nfor i in range(2,n + 1): while n != i: if n % i == 0: stdout.write(str(i)) stdout.write("*") n = n / i else: break print "%d" % n

 

【程序15】 

题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示, 
   60分以下的用C表示。 
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 
2.程序源代码: 
不支持这个运算符

score = int(raw_input('input score:\n'))if score >= 90:    grade = 'A'elif score >= 60: grade = 'B' else: grade = 'C' print '%d belongs to %s' % (score,grade)

 

【程序17】 

题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 
1.程序分析:利用while语句,条件为输入的字符不为’\n’. 
       
2.程序源代码:

import strings = raw_input('input a string:\n')letters = 0space = 0 digit = 0 others = 0 for c in s: if c.isalpha(): letters += 1 elif c.isspace(): space += 1 elif c.isdigit(): digit += 1 else: others += 1 print 'char = %d,space = %d,digit = %d,others = %d' % (letters,space,digit,others)

 

题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时 

   共有5个数相加),几个数相加有键盘控制。 
1.程序分析:关键是计算出每一项的值。 
2.程序源代码:

Tn = 0Sn = []n = int(raw_input('n = :\n'))a = int(raw_input('a = :\n')) for count in range(n): Tn = Tn + a a = a * 10 Sn.append(Tn) print Tn Sn = reduce(lambda x,y : x + y,Sn) print Sn

 

 

【程序19】 

题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程 
   找出1000以内的所有完数。 
1. 程序分析:请参照程序<–上页程序14. 
2.程序源代码:

from sys import stdoutfor j in range(2,1001):    k = [] n = -1 s = j for i in range(1,j): if j % i == 0: n += 1 s -= i k.append(i) if s == 0: print j for i in range(n): stdout.write(k[i]) stdout.write(' ') print k[n]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

【程序20】 

题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 
   第10次落地时,共经过多少米?第10次反弹多高? 
1.程序分析:见下面注释 
2.程序源代码:

Sn = 100.0Hn = Sn / 2for n in range(2,11): Sn += 2 * Hn Hn /= 2 print 'Total of road is %f' % Sn print 'The tenth is %f meter' % Hn 限于篇幅,这里只列出10个,更多Python程序请自行下载后阅读。

转载于:https://www.cnblogs.com/givemelove/p/9359974.html

你可能感兴趣的文章
UVA 10269 Adventure of Super Mario 最短路
查看>>
mysql having,group by查询去除重复记录
查看>>
PHP正则表达式 /i, /is, /s, /isU等
查看>>
羊车门问题
查看>>
【HNOI】 小A的树 tree-dp
查看>>
聊天室--java socket
查看>>
iOS 之 Swift 新特性
查看>>
j2me必备之网络开发数据处理
查看>>
关于C++的递归调用(n的阶乘为例)
查看>>
设计模式之四:模板方法模式
查看>>
UVA 11294 Wedding 2sat
查看>>
配置IIS服务器提供APP文件下载
查看>>
StringBuffer和StringBuilder的区别
查看>>
修改GDAL库支持RPC像方改正模型
查看>>
UVALive5461 UVA615 POJ1308 Is It A Tree?(解法二)
查看>>
HDU1164 Eddy's research I【素因子分解】
查看>>
dataGridView 去除默认选择
查看>>
物理删除和逻辑删除
查看>>
MFC中使用ADO的记录集
查看>>
nodejs中 require 方法的加载规则
查看>>