python自动化办公第二节_python 第二节 练习

习题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.读入一个十进制整数,实现十进制转二进制算法将其转成二进制数 要求:不能使用现成进制转换函数,自己写代码实现

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值