习题1:设定一个用户名和密码,用户输入正常的用户名和密码,则显示登录成功,否则提示登录失败,用户最多3次,否则退出程序。
username = "ming666"
password = "123456"
for i in range(3):
user = input("please input the username:")
pwd = input("please input the password:")
if user == username and pwd == password:
print "guess ok"
break
if i == 2:
print "input times is used out!bye!!"
习题2:自己实现一个函数,在一句话中查找某个单词的算法,存在返回索引号,否则返回False。
def findWord(s,word):
length = len(word)
for i in range(len(s)-length+1):
if s[i:i+length] == word:
return i
return -1
print (findWord ("I am a good boy","good"))
print (findWord("I am good","good"))
习题3: 随机生成一个整数,1-100之间最多可以猜5次。如果猜测范围错误,提示猜测"大了/小了"。如果猜测猜中,就提示猜中了。5次之后,就提示不可以再猜了。
import random
target_num = random.randint(1,100)
for i in range(5):
user_input_num = int(input("请输入你猜的数字:"))
if target_num == user_input_num:
print "你猜中了,数字是:",user_input_num)
elif target_num > user_input_num:
print "你猜大了"
else:
print "你猜小了"
if i == 4:
print ("5次机会用光了 Bye")
习题4:使用while,计算随机数之和,超过100的时候,停止程序。随机数1-20的范围产生,要求记录一下产生的随机数,以及最后的和,以及随机数的个数。
import random
result = 0
number_list = [ ]
while result <= 100:
num = random.randint(1,20)
number_list.append(num)
result += num
print "一共产生了%s个随机数:" ,len(number_list)
print "产生随机数如下:" ,random_num_list
print "最后的随机数之和:" ,result
习题5:遍历字符串、列表,分别基于位置和基于字符遍历
字符串
import random
s = "abc"
for i in s:
print i
for i in range(len(s)):
print s[i]
列表
l = [1,2,3]
for i in l:
print i
for i in range(len(l)):
print l[i]
习题6: 遍历一个列表中的嵌套列表和元组的所有元素,将1-12的数字进行输出.
[[[1,2,3],4,5],7,8(9,10,(11,12))]
l=[[[1, 2, 3], 4, 5], 7, 8, (9, 10, (11, 12))]
for value in l:
if isinstance(value,(list,tuple)):
for v in value:
if isinstance(v,(list,tuple)):
for j in v:
print j
else:
print v
else:
print value
习题7:判断一个数字是否是素数。(素数:一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为[合数].)
import math
def is_prime(num):
if num == 1:
return False
elif num == 2:
return Ture
else:
for i in range(2,int(math.sqrt(num))+1):
if num%i == 0:
return False
return True
习题8:求100以内的素数和。
result = 0
for i in range(100):
if is_prime(i):
result += i
print result
求100以内的素数
prime_num = [ ]
for i in range(2,101):
for j in range(2,i):
if i%j == 0:
break
else:
prime_num.append(i)
print prime_num
习题9:求一下100以内奇数的和(使用for的方式)
import math
result = 0
for i in range(101):
if i%2 == 1:
result +=i
print result
import math( 100以内的偶数)
result = 0
for i in range(101):
if i %2 == 0:
result +=i
print result
习题10:用户输入多个数字,当输入偶数的时候求和,输入奇数,不求和,输入(一个点)的时候结束求和。打印求和结果
sum = 0
while True:
number = input("please input the number:")
if number ==".":
break
else:
number = int(number)
if number%2 == 0
sum += number
print sum
习题11:嵌套循环输出10~50中个位带有1~5的所有数字
方法1:
import math
for i in range(10,51):
if i%10 >=1 and i%10 <=5:
print i
方法2:
for i in range(10,51):
if str(i)[1] in "12345":
print i
方法3:
for i in “1234”:
for j in “12345”:
print int(i+j)
习题12:输入3个数字,达到3个 数字求和,结束程序
result = 0
for i in range(3):
number = input(“please input number:”)
result += int(number)
print result
习题13: 用户输入不同的数据,当输入的数据达到3个数字的时候,求和结束程序。
result = 0
count = 0
while True:
s = input("please input the number:")
for v in s:
if v not in "0123456789":
break
else:
count +=1
result += int(s)
if count ==3:
break
print result
习题14:用嵌套列表的方式,遍历输出一个矩阵
L = [[1,2,3],[4,5,6],[7,8,9]]
for i in L:
for j in i:
print (j,end=" ")
print (result )
习题15:嵌套列表的正、反对角线之和
正对角线之和:
l=[[1,2,3],[4,5,6],[7,8,9]]
result =0
for i in range(len(l)):
for j in range(len(l[i])):
if i == j:
result += l[i][j]
print result
反对角线之和
result = 0
for i in range(len(l)):
for j in range(len(l[i])):
if (i+j) ==2:
result += l[i][j]
print result
习题16:求以下矩阵四边元素之和
l = [
[1,2,3,4,5],
[1,2,3,4,5],
[1,2,3,4,5],
[1,2,3,4,5],
[1,2,3,4,5]
]
matrix_element_sum = 0
sub_matrix_element_sum = 0
for i in range(len(l)):
for j in range(len(l[i])):
matrix_element_sum+=l[i][j]
result_mid=0
for j in range(len(l[i])):
if i == 0 or i ==4:
continue
else:
if j!=0 and j!=4:
sub_matrix_element_sum +=l[i][j]
print matrix_element_sum - sub_matrix_element_sum
习题17:统计单词中包含字母a的单词个数
s="I am a boy!"
count =0
list1 = s.split( )
for value in list:
if "a" in value:
count +=1
print count
随堂练习:
习题1:使用尽可能多的方法实现list去重;
方法1: 利用两个列表,遍历一个列表元素,如果不在另外一个列表,添加进另一个列表。
list = [1,2,2,3,3,4,4,4,5,5,6]
new_list = []
for I in list:
if I not in new_list:
new_list.append(i)
print new_list
方法2:利用 set
list1 = [1,1,2,3,3,4,4,5,5,6]
list2=list(set(list1))
方法3:利用字典
fromkeys()方法
L=[1,2,3,4,5,6,5,4,3,2,1]
d={}
L=d.fromkeys(L)
L=L.keys()
print L
习题2:成绩等级判断
利用条件运算符的嵌套来完成此题。学习成绩>=90分的同学用A表示,60~89分之间的用B表示,60分以下的用C表示。
while l:
try:
score = float(input("请输入学生的成绩:"))
except:
print ("成绩输入错误,请重新输入。")
else:
break
if score >=90:
print "your grade is A"
elif score >=60 and score <=89:
print "your grade is B"
else:
print "your grade is C"
习题3:实现数学中多项式求和公式的打印
比如:a6x^6 + a5x^5 + a4x^4 + a3x^3 + a2x^2 + a1x^1 + a0
string = " "
for i in range(6,-1,-1):
if i > =1:
string +=("a"+str(i)+"x"+"^"+str(i)+"+")
else:
string += ("a"+str(i))
print string
习题4.统计名字列表中,各名字的首字母在名字列表中出现的次数
names = ["zhangsan","lisi","wangwu","zhaoliu"]
first_letter = [ ]
first_letter_dict = { }
for name in names:
first_letter.append(name[0])
for c in first_letter:
first_letter_dict[c] = first_letter.count(c)
print first_letterdict
习题5.输入三个数,判断是否能构成三角形。能构成三角形三边关系:
三边都大于零,两边之和大于第三边,两边之差小于第三边。
a=int(input("请输入第1条边:"))
b=int(input("请输入第2条边:"))
c=int(input("请输入第3条边:"))
if a>0 and b>0 and c>0:
if a+b>c and a+c>b and b+c>a:
if a-b
print "可以构成三角形"
else:
print "不可以构成三角形"
else:
print "不可以构成三角形"
else:
print "不可以构成三角形"
习题6.实现字典的fromkeys方法
例如: seq = ('name', 'age', 'sex')
dict = dict.fromkeys(seq, 10)
print "New Dictionary : %s" % str(dict)
结果:New Dictionary : {'age': 10, 'name': 10, 'sex': 10}
def fromkeys_2(seq,value):
keys_dict = {}
for val in seq:
keys_dict[val] = value
return keys_dict
seq = ('name','age','sex')
print fromkeys_2(seq,10)
习题7.键盘读入一字符串,逆序输出
方式1:
string = input("请输入字符串:")
print (string[::-1])
raw_input( ) 将所有的输入作为字符串看待
input ( )需要输入python表达式
方式2:
string = input("请输入字符串: ")
for I in range(len(string)-1,-1,-1):
print (string[I],end=" ")
习题8.读入一个整数n,输出n的阶乘
方式1:
n = int(input("请输入一个整数:"))
result = 1
for I in range(1,n+1):
result *=I
print result
def fac(n):
if n==1:
return 1
else:
return n*fac(n-1)
n = int(input("请输入一个整数:"))
print (fac(n))
习题9.打印1/2, 1/3, 1/4,....1/10
for i in range(2,11):
if i <= 9:
print ("1"+"/"+str(i),end=",")
else:
print("1"+"/"+ str(i))
习题10.写一个函数实现一个数学公式
import math
def circle_area(r):
return math.pirr
print circle_area(2)
注意:Python math 模块提供了许多对浮点数的数学运算函数。
Python cmath 模块包含了一些用于复数运算的函数。
cmath 模块的函数跟 math 模块函数基本一致,区别是 cmath 模块运算的是复数,math 模块运算的是数学运算。
习题11.输入数字a,n,如a,4,则打印a+aa+aaa+aaaa之和
a = int(input ("请输入数字之和:"))
times = int(input("请输入项数:"))
result = 0
for i in range(1,times+1):
result += int(str(a)*i)
print result
习题12.求100个随机数之和,随机数要求为0—9的整数
import random
result = 0
for i in range(100):
result += random.randint(0,9)
print result
习题13.要求在屏幕上分别显求1到100之间奇数之和与偶数之和
result_odd=0 #奇数
result_even=0 #偶数
for i in range(1,101):
if I%2 ==0:
result_even+=i
else:
result_odd+=I
print ("奇数和:",result_odd)
print ("偶数和:",result_even)
习题14.输入10个数,并显示最大的数与最小的数
l = list(range(10)) max(l) min(l)
def func(l):
max_item=l[0]
min_item=l[0]
for val in l:
if val >max_item:
max_item = val
elif val < min_item:
min_item = val
return max_item,min_item
max_number,min_number = func(l)
print ("最大数:",max_number)
print ("最小数:",min_number)
习题15.给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出 各位数字。
方式1:
number = input("请输入正整数:")
print ("位数:",len(number))
print (number[ : :-1])
方式2:
num = raw_input("请输入正整数:")
count = 0; list1=[]; list2=[]
for i in num:
count+=1
print "它是%s位数" %count
for i in num:
list1.append(i)
习题16.求1000以内的所有水仙花数 (水仙花数:它的每个位置上的数字的n次幂之和等于它本身,例如:13+53+3^3 = 153)
num_lis=[ ]
for num in range(1,1000):
n = len(str(num))
if n==2:
if int(str(num)[0])2+int(str(num)[1])2==num:
num_list.append(num)
elif n==3:
if int(str(num)[0])3+int(str(num)[1])3+int(str(num)[2])**3==num:
num_list.append(num)
print num_list
习题17.编程求s=1!+2!+3!+.....+n! (阶乘)
n =5
s =0
t =1
for i in range(1,n+1):
t*=i
s+=t
print s
习题18.钞票换硬币 把一元钞票换成一分、二分、五分硬币(每种至少一枚),有多种换法,分 别有哪些?
习题19.自己实现在一句话中查找某个单词的算法,存在返回索引号,否则返回 False
习题20.读入一个十进制整数,实现十进制转二进制算法将其转成二进制数 要求:不能使用现成进制转换函数,自己写代码实现