Python基础练习——水仙花数、成绩分级

文章目的:通过自主编写Python的基础练习题,熟悉基本的语法、结构和函数,尽快入门干巴爹~~~

题目一:打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:
153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

列举使用到的语法点:
1、基本运算符(加、减、乘、除、次方、取余)
2、if 结构
3、for 结构
4、条件判断

解题思路:通过举例得出如下算式a³+b³+c³=a×100+b×10+c=水仙花数,主要困难在于Python语法不熟悉,需要边查找语法示例边做题

初始代码:

number=100
for number in range(1000):
    a=number/100
    b=number/10%10
    c=number%10
    if ((a**)*100+(b**)*10+(c**))==number:
        print number;
        else number+=1

错误之处:
1、range的使用,如:
range中就已经包含起始值、终止条件、递增步数,range(20)即为range(0,20,1),意为从0开始,每次递增1,迭代20次,输出的序列即为0到19
故将 ‘number=100’的起始条件去掉

2、次方使用和条件判断
Python中的乘方为 ** ,相当于^,后面需要接着数值表明是多少次方
所以a的三次方应该表示为a**3。
根据算式应写为 a**3+b**3+c**3==number (不用乘100…)

3、不使用range而改为xrange,区别在于:
range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列
xrange 用法与 range 完全相同,所不同的是生成的不是一个list对象,而是一个生成器。
在生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间,这两个基本上都是在循环的时候用。

修改后代码:

for number in xrange(100,1000):
   a=number/100
   b=number/10%10
   c=number%10

   if a**3+b**3+c**3==number:
       print number

积累要点:
1、对于Python而言代码缩进是一种语法,不使用大括号,而是采用代码缩进和冒号来区分代码之间的层次。
2、for、if、else等复合语句结尾需加冒号(语法规定)

题目二:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

列举使用到的语法点:
1、读取输入值
2、缩进
3、使用elif完成多个条件的检查

代码块如下:

#encoding:utf-8
print '请输入成绩分数'
score=raw_input()
if score>=90:
    print 'A'
elif score<60:
    print 'C'
else:
    print 'B'

积累要点:
1、#encoding:utf-8或者 #--conding:utf-8-- ;* 如果要在py文件里面写中文,则必须要添加一行声明文件编码的注释,否则会默认使用ASCII编码。*
2、input()和‘raw_input()‘,这两个函数均能接收字符串 ,但 raw_input() 直接读取控制台的输入(任何类型的输入它都可以接收)。而对于 input() ,它希望能够读取一个合法的 python 表达式,即输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError
3、使用elif检查的多个条件,它是else if的简写,是具有条件的else子句。
4、容易犯的错误 错误的使用缩进量。(导致“IndentationError:unexpected indent”、“IndentationError:unindent does not match any outer indetation level”以及“IndentationError:expected an indented block”)
记住缩进增加只用在以:结束的语句之后,而之后必须恢复到之前的缩进格式。

易犯错误总结的参考文章链接为:
http://www.jb51.net/article/31014.htm

猜你喜欢

转载自blog.csdn.net/lyycasablanca000/article/details/54773929