python习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
程序源代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
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、题目:斐波那契数列。
F0 = 0 (n=0)
F1 = 1 (n=1)
Fn = F[n-1]+ F[n-2](n=>2)
程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34...
程序源代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
def fib(n):
a,b = 1,1
for i in range(n-1):
a,b = b,a+b
return a
# 输出了第10个斐波那契数列
print fib(10)
3、题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
程序分析:程序分析:(a>b)?a:b这是条件运算符的基本例子。(if...else判断)
程序源代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
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)
4、题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
程序分析:利用while语句,条件为输入的字符不为'\n'。
程序源代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import string
s = raw_input('input a string:\n')
letters = 0
space = 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)
6、题目:在字典{"li":18,"wang":50,"zhang":20,"sun":22}中找到年龄最大的人,并输出。(字典)
程序分析:无。
程序源代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
if __name__ == '__main__':
person = {"li":18,"wang":50,"zhang":20,"sun":22}
m = 'li'
for key in person.keys():
if person[m] < person[key]:
m = key
print '%s,%d' % (m,person[m])
7、题目:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件C中。(文件操作)
程序分析:无。
程序源代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
if __name__ == '__main__':
8、题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。(for循环)
程序分析:无。
程序源代码:
#!/u
sr/bin/python
# -*- coding: UTF-8 -*-
if __name__ == '__main__':
n = 1
while n <= 7:
a = int(raw_input('input a number:\n'))
while a < 1 or a > 50:
a = int(raw_input('input a number:\n'))
print a * '*'
n += 1
9、题目:列表相关操作:定义一个列表List,插入、删除、遍历打印、修改List中的值。(列表)
# -*- coding: UTF-8 -*-
#题目:列表相关操作:定义一个列表List,插入、删除、遍历打印、修改List中的值。
#iterate the list
def printlist():
for i in list:
print i
print ">>>>>>>>>>>>>>>>>>"
list = ["stu1", "stu2", "stu3", "stu4"]
#firstly, print the list
printlist()
#insert an item into the list
list.insert(2, "stu5")
printlist()
#delete an item from the list
del list[4]
printlist()
10、面向对象相关:定义“学校成员”、“老师”、“学生”三个类,其中“老师”、“学生”两个类由“学校成员”继承而来。(类和对象)
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Filename: SchoolMember.py
# 面向对象的实例,学校成员类
class SchoolMember:
# 总人数,这个是类的变量
sum_member = 0
# __init__方法在类的对象被创建时执行
def __init__(self, name):
= name
SchoolMember.sum_member += 1
print "学校新加入一个成员:%s" %
print "现在有成员%d人" % SchoolMember.sum_member
# 自我介绍
def say_hello(self):
print "大家好,我叫:%s" %
# 老师类继承学校成员类
class Teacher(SchoolMember):
def __init__(self, name, salary):
SchoolMember.__init__(self, name)
self.salary = salary
def say_hello(self):
SchoolMember.say_hello(self)
print "我是老师,我的工资是:%d" % self.salary
# 学生类
class Student(SchoolMember):
def __init__(self, name, mark):
SchoolMember.__init__(self, name)
self.mark = mark
def say_hello(self):
SchoolMember.say_hello(self)
print "我是学生,我的成绩是:%d" % self.mark
t = Teacher("老黄", 3000)
t.say_hello()
s = Student("小河", 77)
s.say_hello()
11、题目:从文件sample.txt中解析出坐标经纬度信息(data[10],data[11]),并保存成文件geo.txt。(字符串解析)
程序分析:无。
程序源代码:
import random
import re
f = file('sample.txt')
lines = f.readlines()
f.close()
out = open("geo.txt", "w")
for line in lines:
flag = False
data = line.split("\t")#split the line with "tab"
if(not data[10]== '' or not data[11]== '' ):
newline = data[10] + "\t" + data[11] + "\n"
#write the line to new file
out.write(newline)
out.close()