当前位置:   article > 正文

python100例_python中[100:]

python中[100:]

目录

前言

python练习实例1

python练习实例2

注意:

python练习实例3

收获:

python练习实例4

python练习实例5

python练习实例6

python练习实例7

python练习实例8

python练习实例9

python练习实例10

python练习实例11

python练习实例12

python练习实例13

python练习实例14

收获:

python练习实例15

python练习实例16

python练习实例17

python练习实例18

python练习实例19

python练习实例20

python练习实例21

python练习实例22

python练习实例23

python练习实例24

python练习实例25

python练习实例26

python练习实例27

python练习实例28

python练习实例29

python练习实例30

python练习实例31

python练习实例32

 python练习实例33

收获:

python练习实例34

python练习实例35

python练习实例36

python练习实例37

python练习实例38

python练习实例39

python练习实例40

python练习实例41

 python练习实例42

python练习实例43

python练习实例44

python练习实例45

python练习实例46

python练习实例47

python练习实例48

python练习实例49

python练习实例50

python练习实例51

python练习实例52

python练习实例53

python练习实例54

python练习实例55

python练习实例56

python练习实例57

python练习实例58

python练习实例59

python练习实例60

python练习实例61

收获:

python练习实例62

python练习实例63

python练习实例64

python练习实例65

python练习实例66

python练习实例67

python练习实例68

python练习实例69

python练习实例70

python练习实例71

python练习实例72

python练习实例73

Python 练习实例74

Python 练习实例75

Python 练习实例76

python练习实例77

python练习实例78

python练习实例79

python练习实例80

python练习实例81

python练习实例82

python练习实例83

python练习实例84

python练习实例85

python练习实例86

python练习实例87

python练习实例88

python练习实例89

python练习实例90

python练习实例91

python练习实例92

python练习实例93

python练习实例94

python练习实例95

python练习实例96

python练习实例97

python练习实例98

python练习实例99

python练习实例100

结语:


前言

今天开始打卡的第一天,希望能够一直坚持下去。

因为python这东西,只看不练是没什么效果的。所以我就先稍微复习了一些川川的教程,然后开始今天的案例。

python练习实例1

题目:

有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

分析:

直接三重循环暴力遍历,计数并输出,比较简单。

源代码:

  1. n = 0
  2. for i in range(1, 5):
  3. for j in range(1, 5):
  4. for k in range(1, 5):
  5. if i != j and j != k and i != k:
  6. n += 1
  7. print(i, j, k)
  8. print(n)

python练习实例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,求应发放奖金总数?

分析:

最直接的方法是多重if条件语句直接计算,但是我觉得这样没有意义,所以想了以下方法。

思路是用列表的索引来循环计算每部分利润并求和。

具体实现:

将节点临界值(10w、20w等)赋值一个列表rim,提成作为权值赋值给另一个列表p。比较输入I与rim列表的值大小,以此分割计算区域。索引rim[i-1]及以前临界值差与权值乘积求和,I-索引rim[i]的值与对应权值乘积并求和。实现利润计算。

第一次写,思路还是有些写不明白,见谅。

源代码:

  1. I = int(input("请输入利润I(万元):"))
  2. rim = [0, 10, 20, 40, 60, 100]
  3. p = [0.1, 0.075, 0.05, 0.03, 0.015, 0.01]
  4. s = 0
  5. for i in range(5, -1, -1):
  6. if I > rim[i]:
  7. for j in range(i):
  8. s += p[j] * (rim[j + 1] - rim[j])
  9. s += p[i] * (I - rim[i])
  10. break
  11. print('%.2f万元' % s)

注意:

这个代码中比较重要的一点是 j循环下的break语句。

因为是从大到小比较,所以I大于大的值,肯定也大于更小的值,如果不加break语句,就会继续循环导致计算出错。

就好像你需要算1+2+3的值,但不加break的话算的就是1+(1+2)+(1+2+3)的值。

python练习实例3

题目:

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

分析:

这道题需要用数学知识把题目的已知条件做些转化,以便能够用python编程实现求解。

因为我也没想出来什么方法,所以在此借用菜鸟的分析:

假设该数为 x。

1、则:x + 100 = n2, x + 100 + 168 = m2

2、计算等式:m2 - n2 = (m + n)(m - n) = 168

3、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数

4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶数,要么都是奇数。

5、从 3 和 4 推导可知道,i 与 j 均是大于等于 2 的偶数。

6、由于 i * j = 168, j>=2,则 1 < i < 168 / 2 + 1

7、接下来将 i 的所有数字循环计算即可。

源代码:

  1. for i in range(1, 85):
  2. if 168 % i == 0:
  3. j = 168 / i
  4. if i > j and (i + j) % 2 == 0 and (i - j) % 2 == 0:
  5. m = (i + j) / 2
  6. n = (i - j) / 2
  7. x = n * n - 100
  8. print(x)

收获:

编程往往需要运用数学知识对问题已知条件做合适的转化,来达到简单编程的目标。需要加强这方面的学习和应用。

python练习实例4

题目:

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

分析:

首先要知道闰年这个概念:

普通闰年:能被4整除但不能被100整除

世纪闰年:能被400整除

当判断是闰年的时候,月份为3以上时天数要+1

源代码:

  1. year = int(input('请输入年份:'))
  2. month = int(input('请输入月份:'))
  3. day = int(input('请输入日:'))
  4. s = 0
  5. days = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]
  6. if ((year % 4 == 0 and year % 100 != 0) or year % 400 == 0) and month > 2:
  7. s = days[month - 1] + day + 1
  8. else:
  9. s = days[month - 1] + day
  10. print('这是一年的第%d天' % s)

python练习实例5

题目:

输入三个整数x,y,z,请把这三个数由小到大输出。

分析:

三个数,算是一个小型冒泡排序。

源代码:

  1. x = int(input('first number:'))
  2. y = int(input('second number:'))
  3. z = int(input('third number:'))
  4. if x > y:
  5. x, y = y, x
  6. if y > z:
  7. y, z = z, y
  8. if x > y:
  9. x, y = y, x
  10. print(x, y, z)

python练习实例6

题目:

斐波那契数列

分析:

用一个python特有的多元赋值语句解决,比较简单。

源代码:

  1. a, b = 0, 1
  2. list1 = [0, 1]
  3. n = int(input('请输入n(n>2):'))
  4. for i in range(n-2):
  5. a, b = b, a+b
  6. list1.append(b)
  7. print(list1)

python练习实例7

题目:

将一个列表的数据复制到另一个列表中。

源代码:

  1. a = [1, 23, 45, 265, 7]
  2. b = a.copy()
  3. print(b)

python练习实例8

题目:

输出 9*9 乘法口诀表。

分析:

用python的格式化输出print完成。

‘-’表示左对齐,‘.’前面的数字表示占位数,后面表示小数点保留位数。

源代码:

  1. for i in range(1, 10):
  2. for j in range(1, i+1):
  3. print('%dx%d=%-4d' % (i, j, i * j), end='')
  4. print('')

python练习实例9

题目:

暂停一秒输出。

分析:

利用time包的sleep暂停。

源代码:

  1. import time
  2. num = [1, 2, 3, 4, 5, 6]
  3. for i in range(len(num)):
  4. print(num[i])
  5. time.sleep(1)

python练习实例10

题目:

暂停一秒输出,并格式化当前时间。

分析:

用time包的格式化时间。

time.strftime(format, t)
  • %y 两位数的年份表示(00-99)
  • %Y 四位数的年份表示(000-9999)
  • %m 月份(01-12)
  • %d 月内中的一天(0-31)
  • %H 24小时制小时数(0-23)
  • %I 12小时制小时数(01-12)
  • %M 分钟数(00-59)
  • %S 秒(00-59)
  • %a 本地简化星期名称
  • %A 本地完整星期名称
  • %b 本地简化的月份名称
  • %B 本地完整的月份名称
  • %c 本地相应的日期表示和时间表示
  • %j 年内的一天(001-366)
  • %p 本地A.M.或P.M.的等价符
  • %U 一年中的星期数(00-53)星期天为星期的开始
  • %w 星期(0-6),星期天为星期的开始
  • %W 一年中的星期数(00-53)星期一为星期的开始
  • %x 本地相应的日期表示
  • %X 本地相应的时间表示
  • %Z 当前时区的名称
  • %% %号本身

源代码:

  1. import time
  2. print(time.strftime('%Y-%m-%d %H:%M:%S'))
  3. time.sleep(1)
  4. print(time.strftime('%Y-%m-%d %H:%M:%S'))

python练习实例11

题目:

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

分析:

1,1,2,3,5,8……

可见,这是斐波那契数列。我记得最早了解斐波那契数列的引例就是这个。

因此,让我们拿出python练习实例6来稍作修改,去掉第一个0。

源代码:

  1. a, b = 1, 1
  2. list1 = [1, 1]
  3. n = int(input('请输入月份n(n>2):'))
  4. for i in range(n-2):
  5. a, b = b, a+b
  6. list1.append(b)
  7. print(list1)

python练习实例12

题目:

判断101-200之间有多少个素数,并输出所有素数。

分析:

用这个数分别除以2到它本身-1,都不能整除则为素数。

为了减少计算量,可以排除偶数,只遍历奇数。

源代码:

  1. n = 0
  2. for i in range(101, 201, 2):
  3. k = 0
  4. for j in range(2, i):
  5. if i % j != 0:
  6. k += 1
  7. if k == i-2:
  8. n += 1
  9. print(i)
  10. print(f'101-200内素数的个数为{n}个')

python练习实例13

题目:

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

分析:

重点是如何取出每一位数。我的方法是:

百位通过整除100取出,

十位先取余100再整除10,

个位取余10.。

但是我做的时候竟然把三次方输成了二次方,我说怎么一个结果也没有。

看清题目很重要。。。

源代码:

  1. for i in range(100, 1000):
  2. x = i // 100
  3. y = (i % 100) // 10
  4. z = i % 10
  5. if i == x ** 3 + y ** 3 + z ** 3:
  6. print(i)

python练习实例14

题目:

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

分析:

这道题做了很久,说明基础还是不太扎实。

这道题有几个重要的点:

一是要让每次判断n能被整除时更新n的值

       n = n / i

二是要更新n值后让for i循环重新开始(为了能让重复的质因数出现)

       参考示例,将for循环置于while n not in [1]循环下,每次n更新并输出i后break一下,否则continue

三是最后的输出问题,需要一个停止(不能一直输出2*2*这样的,没有结尾)

       判断最后的n==1则不输出*

源代码:

  1. n = int(input('请输入需要分解的正整数:'))
  2. print(f'{n}=', end='')
  3. while n not in [1]:
  4. for i in range(2, int(n)+1):
  5. n /= i
  6. if n == 1:
  7. print(f'{i}', end='')
  8. break
  9. elif n % 1 == 0:
  10. print(f'{i}', end='*')
  11. break
  12. else:
  13. n = int(n*i)
  14. continue

收获:

break和continue语句应该熟练掌握,考虑问题时要知道循环应该从哪里结束或者继续。

python练习实例15

题目:

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

分析: 

很简单,很基础。

注意python里是elif,不是else if。

源代码:

  1. while 1:
  2. score = int(input('请输入学习成绩(百分制):'))
  3. if score >= 90:
  4. print('A')
  5. elif score >= 60:
  6. print('B')
  7. else:
  8. print('C')

  

python练习实例16

题目:

输出指定格式的日期。

分析:

datetime包与time用法基本一样。采用strftime方法格式化输出时间。

源代码:

  1. import datetime
  2. x = datetime.datetime.now()
  3. print(x.strftime("%Y-%m-%d"))
  4. print(x.strftime("%Y-%m-%d %A %H:%M:%S"))

python练习实例17

题目:

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

分析:

通过比较计数。其中英文字母的大小写要分开用or连接。

源代码:

  1. x = input('请输入一行字符:')
  2. empty = 0
  3. english = 0
  4. number = 0
  5. other = 0
  6. for i in x:
  7. if 'a' <= i <= 'z' or 'A' <= i <= 'Z':
  8. english += 1
  9. elif i == ' ':
  10. empty += 1
  11. elif '0' <= i <= '9':
  12. number += 1
  13. else:
  14. other += 1
  15. print(f'empty={empty}\nenglish={english}\nnumber={number}\nother={other}')

python练习实例18

题目:

求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。

分析:

需要有一个b在每次循环中自乘10加a,作为a,aa,aaa,aaaa等,然后s求和。

源代码:

  1. a = int(input('请输入a值:'))
  2. n = int(input('请输入n值:'))
  3. s = a
  4. b = a
  5. for i in range(n-1):
  6. b = b * 10 + a
  7. s += b
  8. print(s)

python练习实例19

题目:

一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。

分析:

这次是找因子,并非质因数。

所以找到一个就加进去。

Tip:为了避免重复因子的影响,我们选择用集合。后面可以强制转换列表来索引。

源代码:

  1. for i in range(4, 1001):
  2. x = {1}
  3. for j in range(2, i):
  4. a = i / j
  5. if a % 1 == 0:
  6. x.add(int(a))
  7. x.add(j)
  8. s = 0
  9. x = list(x)
  10. for k in x:
  11. s += k
  12. if i == s:
  13. print(i, end="=")
  14. print(x[0], end='')
  15. for m in range(1, len(x)):
  16. print(f'+{x[m]}', end='')
  17. print('')

python练习实例20

题目:

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

分析:

只要理清节点就很简单。

源代码:

  1. h = 100
  2. s = 100
  3. for i in range(10):
  4. s += h
  5. h /= 2
  6. print(f's={s}')
  7. print(f'h={h}')

python练习实例21

题目:

猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

分析:

简单的逆向思维问题。

源代码:

  1. x = 1
  2. for i in range(9):
  3. x = (x+1)*2
  4. print(x)

python练习实例22

题目:

两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

源代码:

  1. team = ['x', 'y', 'z']
  2. for i in team:
  3. for j in team:
  4. if i != j:
  5. for k in team:
  6. if i != k and j != k:
  7. if i != 'x' and k != 'x' and k != 'z':
  8. print(f'a--{i}\nb--{j}\nc--{k}')

python练习实例23

题目:

打印出如下图案(菱形):

   *
  ***
 *****
*******
 *****
  ***
   *

分析:

找出i与空格、‘*’的对应数学关系,循环输出。

源代码:

  1. empty = ' '
  2. for i in range(7):
  3. if i < 4:
  4. print(empty*(3-i)+'*'*(2*i+1))
  5. else:
  6. print(empty*(i-3)+'*'*(2*(7-i)-1))

python练习实例24

题目:

有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

分析:

我们又看到了熟悉的东西:斐波那契数列。

于是我们再次找到实例6的代码,稍作修改加以引用。

源代码:

  1. a, b = 1, 2
  2. list1 = [1, 2]
  3. n = 21
  4. for i in range(n-2):
  5. a, b = b, a+b
  6. list1.append(b)
  7. s = 0
  8. for i in range(len(list1)-1):
  9. s = s + list1[i+1]/list1[i]
  10. print(s)

python练习实例25

题目:

求1+2!+3!+...+20!的和。

分析:

循环相乘求和。

源代码:

  1. a = 1
  2. s = 0
  3. for i in range(1, 21):
  4. a *= i
  5. s += a
  6. print(s)

python练习实例26

题目:

利用递归方法求5!。

分析:

因为需要用递归解决问题,所以我们需要定义一个函数来实现递归算法,其中的传递参数为n。

源代码:

  1. def n_1(n):
  2. if n == 0 or n == 1:
  3. return 1
  4. else:
  5. return n * n_1(n - 1)
  6. print(n_1(5))

python练习实例27

题目:

利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

分析:

这个题目还是递归,但是需要传递两个参数来控制递归。一个是字符串str1,一个是需要用到的字符串索引数n。

源代码:

  1. def invert(n, str1):
  2. if n == 0:
  3. return
  4. print(str1[n - 1], end="")
  5. invert(n - 1, str1)
  6. str1 = input('请输入字符串:')
  7. n = len(str1)
  8. invert(n, str1)

python练习实例28

题目:

有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

分析:

读题发现是很简单的一道题,但是蕴含了递归的思想,于是我们用递归算法来解决这个问题。

源代码:

  1. def age(n):
  2. if n == 1:
  3. return 10
  4. else:
  5. return age(n-1)+2
  6. print(age(5))

python练习实例29

题目:

给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

分析:

因为给定了不多于5位的正整数是,因此我们可以直接用5次的for循环,只需要给定一个结束循环并打印的条件就行。

源代码:

  1. number = int(input('请输入一个不多于五位的正整数:'))
  2. for i in range(5):
  3. n = number % 10
  4. number = int((number - n) / 10)
  5. print(n)
  6. if number == 0:
  7. print(f'这是一个{i+1}位数')
  8. break

python练习实例30

题目:

一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

分析:

if判断语句

源代码:

  1. n = int(input('请输入一个5位数:'))
  2. a = n // 10000
  3. b = (n - a * 10000) // 1000
  4. d = n % 10
  5. c = (n % 100 - d) // 10
  6. if a == d and b == c:
  7. print('是回文数!')
  8. else:
  9. print('不是回文数')

python练习实例31

题目:

请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

分析:

我的思路是:创建一个可索引的列表week,将七个单词以列表的形式储存到week中,以便后面的索引。

这样,我们就可以用for循环来解决问题。

最后输出时,要想得到连续的字母,需要用到''.join()语句。

源代码:

  1. week = [list('Monday'), list('Tuesday'), list('Wednesday'), list('Thursday'), list('Friday'), list('Saturday'), list('Sunday')]
  2. first_letter = str(input('请输入第一个字母:'))
  3. n = 0
  4. a = 0
  5. for i in range(7):
  6. if first_letter == week[i][0]:
  7. a = i
  8. n += 1
  9. if n == 1:
  10. print(''.join(week[a]))
  11. elif n == 2:
  12. second_letter = str(input('请输入第二个字母:'))
  13. for i in range(7):
  14. if second_letter == week[i][1]:
  15. print(''.join(week[i]))
  16. else:
  17. print('error')

python练习实例32

题目:

按相反的顺序输出列表的值。

源代码:

  1. list1 = [1, 2, 3, 4, 5, 6]
  2. list2 = list1[::-1]
  3. print(list2)

 python练习实例33

题目:

按逗号分隔列表。

分析:

直接用‘,’.join(str)方法就行。

源代码:

  1. list1 = [1, 2, 3, 4, 5, 6]
  2. # s = ','.join(str(list1))
  3. # s = str(list1)
  4. s = ','.join(str(n) for n in list1)
  5. print(str(s))

收获:

本以为是个很简单的题,但还是让我有了新收获。

str(list)直接把list中的内容连[]带,带数据全部转换成了字符串,大家可以吧注释掉的那两行运行看看。

如果只需要把列表内容强制转换,还是要像菜鸟教程给的演示代码一样用条件赋值语句遍历list中的内容。

python练习实例34

题目:

练习函数调用。

分析:

使用函数,输出三次 RUNOOB 字符串。

源代码:

  1. def many(n):
  2. for i in range(n):
  3. print('RUNOOB')
  4. if __name__ == '__main__':
  5. many(3)

python练习实例35

题目:

文本颜色设置。

分析:

这属实触及到我的知识盲区了。学一下:

Python文本颜色设置

源代码:

  1. class bcolors:
  2. HEADER = '\033[95m'
  3. OKBLUE = '\033[94m'
  4. OKGREEN = '\033[92m'
  5. WARNING = '\033[93m'
  6. FAIL = '\033[91m'
  7. ENDC = '\033[0m' # 标准结尾
  8. BOLD = '\033[1m' # 改字体
  9. UNDERLINE = '\033[4m' # 加下划线
  10. print(bcolors.WARNING + "警告的颜色字体?" + bcolors.ENDC)

  

python练习实例36

题目:

求100之内的素数。

分析:

我记得之前有一道题是求101-200以内的素数,所以思路都差不多。

用从2到它本身的数去除它,如果没有能整除的就是质数。

源代码:

  1. s = [2]
  2. for i in range(3, 101):
  3. for j in range(2, i):
  4. if i % j == 0:
  5. break
  6. if j == i-1:
  7. s.append(i)
  8. print(s)

python练习实例37

题目:

对10个数进行排序。

分析:

排序方法有多种,我就选择两种我有点基础的算法吧。选择排序和冒泡排序。

选择排序:从一众数中选择最小或最大的数放在第一位,再从剩下数中选出最小或最大的数放在第二位,以此类推。

冒泡排序:把较小的数当成泡泡一样一步一步往上冒,就是相邻两数比较,小的放前面。

我窃以为把较大的数一步一步排到最后应该算是下沉,不应该叫冒泡,哈哈哈。

源代码:

  1. # 选择排序
  2. s = []
  3. for i in range(10):
  4. a = int(input(f'请输入第{i+1}个数:'))
  5. s.append(a)
  6. for i in range(9): # 循环次数
  7. a = s[i] # a用来储存一次循环中的最小数
  8. n = i # n用来储存最小数的索引
  9. for j in range(i+1, 10):
  10. if a > s[j]:
  11. a = s[j]
  12. n = j
  13. s[i], s[n] = a, s[i] # 交换第i位和最小数,使得在选择排序最小数时不丢失数据
  14. print(s)
  15. # 冒泡排序
  16. s = []
  17. for i in range(10):
  18. a = int(input(f'请输入第{i+1}个数:'))
  19. s.append(a)
  20. for i in range(9):
  21. for j in range(9, i, -1):
  22. if s[j-1] > s[j]: # 前面大的时候交换
  23. s[j-1], s[j] = s[j], s[j-1]
  24. print(s)

python练习实例38

题目:

求一个3*3矩阵主对角线元素之和。 

分析:

用numpy包, 或者直接列表嵌套列表,双重索引。

源代码:

  1. import numpy as np
  2. a = np.arange(1, 10).reshape(3, 3)
  3. s = 0
  4. for i in range(3):
  5. s += a[i][i]
  6. print(s)

python练习实例39

题目:

有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

分析:

既然是已经排好的数组,那么就可以直接比较插入了,插入完加个break结束循环。

源代码:

  1. l = [1, 2, 3, 5, 6, 8, 9, 45]
  2. a = int(input('请输入数字:'))
  3. for i in range(len(l)):
  4. if a < l[i]:
  5. l.insert(i, a)
  6. break
  7. print(l)

python练习实例40

题目:

将一个数组逆序输出。

分析:

列表的inverse方法,或者负索引也行。

源代码:

  1. l = [1, 2, 3, 5, 6, 8, 9, 45]
  2. a = l[::-1]
  3. l.reverse()
  4. print(l)
  5. print(a)

python练习实例41

题目:

模仿静态变量的用法。

分析:

首先我们要知道静态变量是什么。

C语言中,在函数内部可以定义static类型的变量,这个变量是属于这个函数的全局对象。在python中也可以实现这样的机制。

源代码:

  1. class Student:
  2. school = 'NWPU'
  3. def __init__(self, name, age):
  4. self.name = name
  5. self.age = age
  6. a = Student('张三', 20)
  7. print(a.school)

 python练习实例42

题目:

学习使用auto定义变量的用法。

分析:

c语言中,关键字auto用于声明一个变量为局部变量。所有局部变量默认都是auto,一般省略不写。

具体可参考:c语言关键字之auto

没有auto关键字的话,可以使用变量作用域来举例。

源代码:

  1. num = 2
  2. def autofunc():
  3. num = 1
  4. print('internal block num = %d' % num)
  5. num += 1
  6. for i in range(10):
  7. print('The num = %d' % num)
  8. num += 1
  9. autofunc()

可以看到,局部变量和全局变量虽然名称相同但互不影响。

python练习实例43

题目:

模仿静态变量(static)另一案例。

分析:

直接看演示代码,我理解的意思是:

变量在定义类的时候初始化,在执行类下面的函数时不会再次初始化该变量,而是以其此刻的值执行代码。

源代码:

  1. class Num:
  2. nNum = 1
  3. def inc(self):
  4. self.nNum += 1
  5. print('nNum = %d' % self.nNum)
  6. if __name__ == '__main__':
  7. nNum = 2
  8. inst = Num()
  9. for i in range(3):
  10. nNum += 1
  11. print('The num = %d' % nNum)
  12. inst.inc()

python练习实例44

题目:

两个 3 行 3 列的矩阵,实现其对应位置的数据相加,并返回一个新矩阵:

X = [[12,7,3],
    [4 ,5,6],
    [7 ,8,9]]

Y = [[5,8,1],
    [6,7,3],
    [4,5,9]]

分析:

用numpy包产生矩阵, 直接相加。

源代码:

  1. import numpy as np
  2. X = np.array([12, 7, 3, 4, 5, 6, 7, 8, 9]).reshape(3, 3)
  3. Y = np.array([5, 8, 1, 6, 7, 3, 4, 5, 9]).reshape(3, 3)
  4. Z = X + Y
  5. print(Z)

python练习实例45

题目:

统计 1 到 100 之和。

分析:

他可能想考range的范围是左闭右开吧……

源代码:

  1. s = 0
  2. for i in range(1, 101):
  3. s += i
  4. print(s)

python练习实例46

题目:

求输入数字的平方,如果平方运算后小于 50 则退出。

分析:

需要设定死循环中断条件。

源代码:

  1. def square(n):
  2. return n**2
  3. while 1:
  4. n = int(input('请输入数字:'))
  5. a = n**2
  6. print(a)
  7. if a < 50:
  8. break

python练习实例47

题目:

两个变量值互换。

分析:

用python独有的多元赋值语句。

但定义函数需要有返回值,因为参数传递是局部变量。

源代码:

  1. def exchange(a, b):
  2. a, b = b, a
  3. return a, b
  4. if __name__ == '__main__':
  5. x = 10
  6. y = 100
  7. print(x, y)
  8. x, y = exchange(x, y)
  9. print(x, y)

python练习实例48

题目:

数字比较。

分析:

定义函数传参比较。

源代码:

  1. def compare(a, b):
  2. if a < b:
  3. print(f'{a}<{b}')
  4. elif a > b:
  5. print(f'{a}>{b}')
  6. else:
  7. print(f'{a}={b}')
  8. if __name__ == '__main__':
  9. a = 10
  10. b = 100
  11. compare(a, b)
'
运行

  

python练习实例49

题目:

使用lambda来创建匿名函数。

分析:

川川教程里有这个函数的讲解。

需要注意,这是一个需要传参的函数。

源代码:

  1. def tri(n):
  2. return lambda a: a * n
  3. if __name__ == '__main__':
  4. trible = tri(3)
  5. print(trible(5))

python练习实例50

题目:

输出一个随机数。

分析:

使用 random 模块可以输出各种各样的随机数。

源代码:

  1. import random
  2. num = []
  3. for i in range(20):
  4. x = random.randint(1, 10)
  5. num.append(x)
  6. print(num)

python练习实例51

题目:

学习使用按位与 & 。

分析:

按位与&是将数据转化为二进制,然后按位与。

比如十六进制88是10001000,与十进制5(00000101)按位与之后是0,与十六进制15(00001111)按位与之后是8

源代码:

  1. x = 5
  2. y = 0x88
  3. z = x & y
  4. print(z)
  5. a = 0xf
  6. b = a & y
  7. print(b)

python练习实例52

题目:

 学习使用按位或 | 。

分析:

按位或 | 是将数据转化为二进制,然后按位或。

比如十六进制88是10001000,与十进制5(00000101)按位或之后是0x8d(141),与十六进制15(00001111)按位与之后是0x8f(143)

源代码:

  1. x = 5
  2. y = 0x88
  3. z = x | y
  4. print(z)
  5. a = 0xf
  6. b = a | y
  7. print(b)

python练习实例53

题目:

学习使用按位异或 ^ 。

分析:

按位异或 ^ 是将数据转化为二进制,然后按位异或。

相异为一,相同为零。

比如十六进制88是10001000,与十进制5(00000101)按位异或之后是0x8d(141),与十六进制15(00001111)按位与之后是0x87(135)

源代码:

  1. x = 5
  2. y = 0x88
  3. z = x ^ y
  4. print(z)
  5. a = 0xf
  6. b = a ^ y
  7. print(b)

python练习实例54

题目:

取一个整数a从右端开始的4〜7位。

分析:

说实话没看懂代码。

原以为是取万位以上,但看完示例分析发现应该是说的二进制数,但是这个给的例子又很奇怪。

取4-7位不应该右移3位用1111取吗?为什么右移4位。

源代码:

  1. if __name__ == '__main__':
  2. a = int(input('input a number:\n'))
  3. b = a >> 3
  4. c = ~(~0 << 4)
  5. d = b & c
  6. print('%o\t%o' % (a, d))

python练习实例55

题目:

学习使用按位取反~。

分析:

完全是学习,因为忘完了。

说明:

二进制数在内存中以补码的形式存储。

按位取反:二进制每一位取反,0 变 1,1 变 0。

最高位为符号位,正数的符号位为 0,负数为 1。

对正数来说,最高位为 0,其余各位代表数值本身(以二进制表示),如 +42 的补码为 00101010。

对负数而言,把该数绝对值的补码按位取反,然后对整个数加 1,即得该数的补码。如 -42 的补码为 11010110(00101010 按位取反

11010101+1 即 11010110)。

~9 的计算步骤:

转二进制:0 1001
计算补码:0 1001
按位取反:1 0110

转为原码:

按位取反:1 1001  
末位加 1:1 1010
符号位为 1 是负数,即 -10

源代码:

  1. a = 7
  2. b = ~a
  3. c = -7
  4. d = ~c
  5. print('变量 a 取反结果为: %d' % b)
  6. print('变量 c 取反结果为: %d' % d)

python练习实例56

题目:

画图,学用circle画圆形。

分析:

可以像演示代码一样,也可以用numpy和matplotlib.pyplot画,也可以用turtle

源代码:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. x = np.linspace(-2, 2, 500)
  4. y = np.sqrt(4 - x ** 2)
  5. z = -np.sqrt(4 - x ** 2)
  6. figures = plt.figure()
  7. plt.plot(x, y)
  8. plt.plot(x, z)
  9. plt.show()
  1. import turtle
  2. turtle.circle(60)

python练习实例57

题目:

画图,学用line画直线。

分析:

跟上个题差不多,但turtle中没有line函数。

源代码:

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. x = np.linspace(-2, 2, 500)
  4. y = x + 2
  5. plt.plot(x, y)
  6. plt.show()

python练习实例58

题目:

画图,学用rectangle画方形。

分析:

还是演示代码更方便一些。

源代码:

  1. if __name__ == '__main__':
  2. from tkinter import *
  3. root = Tk()
  4. root.title('Canvas')
  5. canvas = Canvas(root, width=400, height=400, bg='yellow')
  6. x0 = 263
  7. y0 = 263
  8. y1 = 275
  9. x1 = 275
  10. for i in range(19):
  11. canvas.create_rectangle(x0, y0, x1, y1)
  12. x0 -= 5
  13. y0 -= 5
  14. x1 += 5
  15. y1 += 5
  16. canvas.pack()
  17. root.mainloop()

python练习实例59

题目:

画图,综合例子。

吐槽:

说实话做到近期这一部分让我这个任务驱动型的人非常难受,什么叫做综合例子啊,没有一个明确的指示真的让我很难做事。

而且昨天做的三道题用的东西、演示代码什么的也很是奇怪,虽然应该是我学艺不精。

下面是不想做了,直接贴的演示代码。

演示代码:

  1. if __name__ == '__main__':
  2. from tkinter import * # 只修改了个T-t
  3. canvas = Canvas(width = 300,height = 300,bg = 'green')
  4. canvas.pack(expand = YES,fill = BOTH)
  5. x0 = 150
  6. y0 = 100
  7. canvas.create_oval(x0 - 10,y0 - 10,x0 + 10,y0 + 10)
  8. canvas.create_oval(x0 - 20,y0 - 20,x0 + 20,y0 + 20)
  9. canvas.create_oval(x0 - 50,y0 - 50,x0 + 50,y0 + 50)
  10. import math
  11. B = 0.809
  12. for i in range(16):
  13. a = 2 * math.pi / 16 * i
  14. x = math.ceil(x0 + 48 * math.cos(a))
  15. y = math.ceil(y0 + 48 * math.sin(a) * B)
  16. canvas.create_line(x0,y0,x,y,fill = 'red')
  17. canvas.create_oval(x0 - 60,y0 - 60,x0 + 60,y0 + 60)
  18. for k in range(501):
  19. for i in range(17):
  20. a = (2 * math.pi / 16) * i + (2 * math.pi / 180) * k
  21. x = math.ceil(x0 + 48 * math.cos(a))
  22. y = math.ceil(y0 + 48 + math.sin(a) * B)
  23. canvas.create_line(x0,y0,x,y,fill = 'red')
  24. for j in range(51):
  25. a = (2 * math.pi / 16) * i + (2* math.pi / 180) * k - 1
  26. x = math.ceil(x0 + 48 * math.cos(a))
  27. y = math.ceil(y0 + 48 * math.sin(a) * B)
  28. canvas.create_line(x0,y0,x,y,fill = 'red')
  29. mainloop()

python练习实例60

题目:

计算字符串长度。

分析:

用len函数。

源代码:

  1. str1 = input('请输入字符串:')
  2. l = len(str1)
  3. print(f'字符串长度为{l}')

python练习实例61

题目:

打印出杨辉三角形(要求打印出10行如下图)。

1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
1 5 10 10 5 1 
1 6 15 20 15 6 1 
1 7 21 35 35 21 7 1 
1 8 28 56 70 56 28 8 1 
1 9 36 84 126 126 84 36 9 1

分析:

杨辉三角形:每个数等于它上方两数之和。(因为这里排布不太一样,所以每个数等于他正上方数及其左边数之和)

源代码:

  1. import copy
  2. tri = [[1]]
  3. tri1 = [1]
  4. for i in range(9):
  5. tri2 = []
  6. tri1.insert(0, 0)
  7. tri1.append(0)
  8. for j in range(i + 2):
  9. tri2.append(tri1[j] + tri1[j + 1])
  10. tri1 = tri2
  11. tri.append(copy.deepcopy(tri1)) # 可以改变这行代码看看浅拷贝和深拷贝不同的运行结果。
  12. for i in range(10):
  13. print(tri[i])

收获:

我这个思路的实现让我理解了上课老师讲的直接赋值、浅拷贝和深拷贝的区别。

直接赋值=:获得列表的引用(数组的指针),用id函数查看系统分配的地址是一样的。

浅拷贝.copy:复制第一层的引用保存到另一个地址空间中。

深拷贝.deepcopy:复制所有层的引用保存到另一个地址空间中。

浅拷贝和深拷贝,简单的区别就是:

当列表套列表的时候执行直接赋值或浅拷贝,改变源列表内列表的值,相应复制列表内列表的值也会改变。

用深拷贝,则复制列表不会改变。

python练习实例62

题目:

查找字符串。

分析:

find函数返回查找字符串索引,如果找不到返回-1。

源代码:

  1. str1 = '123keh565'
  2. print(str1.find('keh'))
  3. print(str1.find('0keh'))

python练习实例63

题目:

画椭圆。

分析:

tkinter还是可以,numpy+matpotlib.pyplot也可以。

源代码:

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. x = np.linspace(-2, 2, 1000)
  4. y = np.sqrt(3-3/4*x**2)
  5. plt.plot(x, y, 'b')
  6. plt.plot(x, -y, 'b')
  7. plt.show()

python练习实例64

题目:

利用ellipse 和 rectangle 画图。

源代码:

  1. if __name__ == '__main__':
  2. from tkinter import *
  3. canvas = Canvas(width = 400,height = 600,bg = 'white')
  4. left = 20
  5. right = 50
  6. top = 50
  7. num = 15
  8. for i in range(num):
  9. canvas.create_oval(250 - right,250 - left,250 + right,250 + left)
  10. canvas.create_oval(250 - 20,250 - top,250 + 20,250 + top)
  11. canvas.create_rectangle(20 - 2 * i,20 - 2 * i,10 * (i + 2),10 * ( i + 2))
  12. right += 5
  13. left += 5
  14. top += 10
  15. canvas.pack()
  16. mainloop()

python练习实例65

题目:

一个最优美的图案。

源代码:

  1. import math
  2. from tkinter import *
  3. class PTS:
  4. def __init__(self):
  5. self.x = 0
  6. self.y = 0
  7. points = []
  8. def LineToDemo():
  9. screenx = 400
  10. screeny = 400
  11. canvas = Canvas(width=screenx, height=screeny, bg='white')
  12. AspectRatio = 0.85
  13. MAXPTS = 15
  14. h = screeny
  15. w = screenx
  16. xcenter = w / 2
  17. ycenter = h / 2
  18. radius = (h - 30) / (AspectRatio * 2) - 20
  19. step = 360 / MAXPTS
  20. angle = 0.0
  21. for i in range(MAXPTS):
  22. rads = angle * math.pi / 180.0
  23. p = PTS()
  24. p.x = xcenter + int(math.cos(rads) * radius)
  25. p.y = ycenter - int(math.sin(rads) * radius * AspectRatio)
  26. angle += step
  27. points.append(p)
  28. canvas.create_oval(xcenter - radius, ycenter - radius,
  29. xcenter + radius, ycenter + radius)
  30. for i in range(MAXPTS):
  31. for j in range(i, MAXPTS):
  32. canvas.create_line(points[i].x, points[i].y, points[j].x, points[j].y)
  33. canvas.pack()
  34. mainloop()
  35. if __name__ == '__main__':
  36. LineToDemo()

python练习实例66

题目:

输入3个数a,b,c,按大小顺序输出。

分析:

可以用sort函数,也可以自己定义一个函数。

源代码:

  1. num = []
  2. for i in range(3):
  3. a = int(input(f'请输入第{i+1}个数:'))
  4. num.append(a)
  5. num.sort()
  6. print(num)

python练习实例67

题目:

输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

分析:

当定义一个函数的传递参数是列表时,传递过去的还是列表,可以用列表专用的函数。

源代码:

  1. def special_swap(args):
  2. a = args.index(max(args))
  3. args[0], args[a] = args[a], args[0]
  4. b = args.index(min(args))
  5. args[-1], args[b] = args[b], args[-1]
  6. return args
  7. if __name__ == "__main__":
  8. num = []
  9. for i in range(6):
  10. n = input('请输入数据:')
  11. num.append(int(n))
  12. print(num)
  13. num_new = special_swap(num)
  14. print(num_new)

python练习实例68

题目:

有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数。

分析:

通过看题目,可以发现这是一个循环右移的算法,那么我们可以定义一个函数来实现。

源代码:

  1. def RR(num, n):
  2. for i in range(n):
  3. a = num[-1]
  4. for j in range(len(num)-1, 0, -1):
  5. num[j] = num[j-1]
  6. num[0] = a
  7. return num
  8. if __name__ == "__main__":
  9. num = []
  10. n = int(input('你要输入几个数:'))
  11. for i in range(n):
  12. a = int(input(f'请输入第{i+1}个数:'))
  13. num.append(a)
  14. m = int(input('需要循环移动几位:'))
  15. print(num)
  16. num_new = RR(num, m)
  17. print(num_new)

python练习实例69

题目:

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

分析:

围成一圈报数意思就是报到最后的时候,从头开始继续报,不是从头开始从1报。所以实现只能用while循环,因为不知道循环次数。

源代码:

  1. import numpy as np
  2. n = int(input('请输入人数:'))
  3. num = np.arange(1, n+1)
  4. i = 0
  5. j = 0
  6. k = 0
  7. while k < n-1:
  8. if num[i] != 0:
  9. j += 1
  10. if j == 3:
  11. num[i] = 0
  12. j = 0
  13. k += 1
  14. i += 1
  15. if i == n:
  16. i = 0
  17. for m in range(n):
  18. if num[m] != 0:
  19. print(m+1)

python练习实例70

题目:

写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

分析:

len函数。

源代码:

  1. def L(string):
  2. long = len(string)
  3. return long
  4. if __name__ == "__main__":
  5. string = input('请输入字符串:')
  6. s = L(string)
  7. print(f'字符串长度为:{s}')

python练习实例71

题目:

编写input()和output()函数输入,输出5个学生的数据记录。

分析:

专用于存储学生信息的input和output函数。

tips:注意遍历字典内容时要用.items()

源代码:

  1. def input_stu(stu):
  2. n = int(input('请输入学生个数:'))
  3. for i in range(n):
  4. student0 = {}
  5. student0['number'] = i+1
  6. student0['name'] = input('请输入姓名:')
  7. student0['math'] = input('数学成绩:')
  8. student0['chinese'] = input('语文成绩:')
  9. student0['english'] = input('英语成绩:')
  10. stu.append(student0)
  11. def output_stu(stu):
  12. for i in range(len(stu)):
  13. for j, k in stu[i].items():
  14. print(f'{j}:{k}')
  15. print('')
  16. if __name__ == '__main__':
  17. student = []
  18. input_stu(student)
  19. print(student)
  20. output_stu(student)

python练习实例72

题目:

创建一个链表。

源代码:

  1. if __name__ == '__main__':
  2. ptr = []
  3. for i in range(5):
  4. num = int(input('please input a number:\n'))
  5. ptr.append(num)
  6. print(ptr)

python练习实例73

题目:

反向输出一个链表。

分析:

列表专属reverse函数。

源代码:

  1. if __name__ == '__main__':
  2. ptr = []
  3. for i in range(5):
  4. num = int(input('please input a number:\n'))
  5. ptr.append(num)
  6. print(ptr)
  7. ptr.reverse()
  8. print(ptr)

Python 练习实例74

题目:

列表排序及连接。

程序分析:

排序可使用 sort() 方法,连接可以使用 + 号或 extend() 方法。

源代码:

  1. if __name__ == '__main__':
  2. a = [1, 3, 2]
  3. b = [3, 4, 5]
  4. a.sort()
  5. print(a)
  6. print(a + b)
  7. a.extend(b)
  8. print(a)

Python 练习实例75

题目:

放松一下,算一道简单的题目。

源代码:

  1. if __name__ == '__main__':
  2. for i in range(5):
  3. n = 0
  4. if i != 1:
  5. n += 1
  6. if i == 3:
  7. n += 1
  8. if i == 4:
  9. n += 1
  10. if i != 4:
  11. n += 1
  12. if n == 3:
  13. print(64 + i)

Python 练习实例76

题目:

编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n。

分析:

简单的for循环。

源代码:

  1. def even(n):
  2. s = 0
  3. for i in range(2, n + 1, 2):
  4. s += 1 / i
  5. return s
  6. def uneven(n):
  7. s = 0
  8. for i in range(1, n + 1, 2):
  9. s += 1 / i
  10. return s
  11. if __name__ == '__main__':
  12. n = int(input('请输入n:'))
  13. if n % 2 == 0:
  14. s = even(n)
  15. else:
  16. s = uneven(n)
  17. print(s)

python练习实例77

题目:

循环输出列表。

分析:

for range(len())或者for i in list都可以。

源代码:

  1. if __name__ == '__main__':
  2. s = ["man", "woman", "girl", "boy", "sister"]
  3. for i in range(len(s)):
  4. print(s[i])
  5. print()
  6. for i in s:
  7. print(i)

python练习实例78

题目:

找到年龄最大的人,并输出。请找出程序中有什么问题。

分析:

好像没找到什么问题……

源代码:

  1. if __name__ == '__main__':
  2. person = {"li": 18, "wang": 50, "zhang": 20, "sun": 22}
  3. m = 'li'
  4. for key in person.keys():
  5. if person[m] < person[key]:
  6. m = key
  7. print('%s:%d' % (m, person[m]))

python练习实例79

题目:

字符串排序。

源代码:

  1. if __name__ == '__main__':
  2. str1 = input('input string:\n')
  3. str2 = input('input string:\n')
  4. str3 = input('input string:\n')
  5. print(str1, str2, str3)
  6. if str1 > str2:
  7. str1, str2 = str2, str1
  8. if str1 > str3:
  9. str1, str3 = str3, str1
  10. if str2 > str3:
  11. str2, str3 = str3, str2
  12. print('after being sorted.')
  13. print(str1, str2, str3)

python练习实例80

题目:

海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

分析:

演示代码中,i用来计数猴子的个数,j是平均分成5份时每份的个数,x是桃子总数。

源代码:

  1. if __name__ == '__main__':
  2. i = 0
  3. j = 1
  4. x = 0
  5. while i < 5:
  6. x = 4 * j
  7. for i in range(0, 5):
  8. if x % 4 != 0:
  9. break
  10. else:
  11. i += 1
  12. x = (x / 4) * 5 + 1
  13. j += 1
  14. print(x)

python练习实例81

题目:

809*??=800*??+9*?? 其中??代表的两位数, 809*??为四位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。

分析:

判断乘积结果是几位数就可以了。

源代码:

  1. for i in range(10, 100):
  2. if 809 * i < 10000 and 8 * i < 100 <= 9 * i < 1000:
  3. print(f'i={i}')
  4. print(f'809*{i}={809 * i}')

python练习实例82

题目:

八进制转换为十进制。

分析:

将输入的字符串转化为列表以便索引,然后计算时用int强制转换。

源代码:

  1. n = input('请输入一个八进制数:')
  2. n = list(n)
  3. s = 0
  4. for i in range(len(n)):
  5. s += int(n[i])*8**(len(n)-1-i)
  6. print(s)

python练习实例83

题目:

求0—7所能组成的奇数个数。

分析:

组成1位数是4个。

组成2位数是7*4个。

组成3位数是7*8*4个。

组成4位数是7*8*8*4个。

......

源代码:

  1. if __name__ == '__main__':
  2. sum = 4
  3. s = 4
  4. for j in range(2, 9):
  5. print(sum)
  6. if j <= 2:
  7. s *= 7
  8. else:
  9. s *= 8
  10. sum += s
  11. print('sum = %d' % sum)

python练习实例84

题目:

连接字符串。

分析:

我理解的连接是+号

源代码:

  1. delimiter = ','
  2. mylist1 = ['Brazil', 'Russia', 'India', 'China']
  3. mylist2 = ['Brazil', 'Russia', 'India', 'China']
  4. print(delimiter.join(mylist1))
  5. print(mylist1+mylist2)

python练习实例85

题目:

输入一个奇数,然后判断最少几个 9 除于该数的结果为整数。

分析:

先生成一个9,99,999,……的列表,然后用for循环寻找符合条件的数。

源代码:

  1. num = []
  2. a = 10
  3. for i in range(15):
  4. num.append(a-1)
  5. a *= 10
  6. n = int(input('请输入一个奇数:'))
  7. for i in num:
  8. if i % n == 0:
  9. print(f'{i}/{n}={int(i/n)}')
  10. break

python练习实例86

题目:

两个字符串连接程序。

分析:

这次是真的+号连接。

源代码:

  1. if __name__ == '__main__':
  2. a = "acegikm"
  3. b = "bdfhjlnpq"
  4. c = a + b
  5. print(c)

python练习实例87

题目:

回答结果(结构体变量传递)。

分析:

定义外部函数也依然可以改变类属性的值。

源代码:

  1. if __name__ == '__main__':
  2. class student:
  3. x = 0
  4. c = 0
  5. def f(stu):
  6. stu.x = 20
  7. stu.c = 'c'
  8. a = student()
  9. a.x = 3
  10. a.c = 'a'
  11. f(a)
  12. print(a.x, a.c)

python练习实例88

题目:

读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。

分析:

随机数生成,for循环打印。

源代码:

  1. import random
  2. num = []
  3. for i in range(7):
  4. n = random.randint(1, 51)
  5. num.append(n)
  6. for i in num:
  7. print(i)
  8. print('*'*i)

python练习实例89

题目:

某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

分析:

将输入数据转化为可索引的列表,比较容易交换和遍历。

源代码:

  1. def encrypt(data):
  2. for i in range(len(data)):
  3. data[i] = (int(data[i]) + 5) % 10
  4. data[0], data[3] = data[3], data[0]
  5. data[1], data[2] = data[2], data[1]
  6. return data
  7. data = list(input('请输入需要传递的数据:'))
  8. print('原数据:' + ''.join(data))
  9. data = encrypt(data)
  10. print('加密后数据:', end='')
  11. for n in data:
  12. print(n, end='')

python练习实例90

题目:

列表使用实例。

分析:

推荐川川教程,我就粘一下列表部分吧。

源代码:

  1. ### 创建 ###
  2. mylist = ["川川一号", "川川二号", "川川三号"]
  3. print(mylist)
  4. thislist = list(("apple", "banana", "cherry"))
  5. print(thislist)
  6. # 允许重复
  7. thislist = ["川川一号", "川川二号", "川川三号", "川川一号"]
  8. print(thislist)
  9. ### 遍历 ###
  10. for i in thislist:
  11. print(i)
  12. # List列表是一个有序且可变的集合。允许重复成员。
  13. # turple元组是一个有序且不可更改的集合。允许重复成员。
  14. # Set集合是一个无序且无索引的集合。没有重复的成员。
  15. # dict字典是一个有序*且可变的集合。没有重复的成员。
  16. # !!!从 Python 3.7 版开始,字典才是有序的!!!
  17. ### 索引 ###
  18. # 可正可负
  19. # 检查是否存在
  20. thislist = ["apple", "banana", "cherry"]
  21. if "apple" in thislist:
  22. print("Yes, 'apple' is in the fruits list")
  23. ### 更改 ###
  24. # 单个更改
  25. mylist = ["川川一号", "川川二号", "川川三号", "川川四号"]
  26. mylist[0] = "川川五号"
  27. print(mylist[0])
  28. # 多个更改
  29. mylist = ["川川一号", "川川二号", "川川三号", "川川四号", "川川五号"]
  30. mylist[1:3] = ["哈皮川川", "憨批川川"]
  31. print(mylist)
  32. # 插入
  33. mylist = ["川川一号", "川川二号", "川川三号", "川川四号"]
  34. mylist.insert(2, '帅哥呀')
  35. print(mylist)
  36. ### 添加 ###
  37. # 末尾添加append
  38. mylist = ["川川一号", "川川二号", "川川三号", "川川四号"]
  39. mylist.append("憨批川川")
  40. print(mylist)
  41. # 指定位置添加insert
  42. mylist = ["川川一号", "川川二号", "川川三号", "川川四号"]
  43. mylist.insert(2, '川川菜鸟')
  44. print(mylist)
  45. # 合并列表extend
  46. mylist = ["川川一号", "川川二号", "川川三号", "川川四号"]
  47. mylist1 = ["川川一号", "川川二号", "川川三号", "川川四号"]
  48. mylist.extend(mylist1)
  49. print(mylist)
  50. # extend()方法不一定要列表,也可以添加任何可迭代对象(元组、集合、字典等)。
  51. mylist = ["川川一号", "川川二号", "川川三号", "川川四号"]
  52. mylist2 = ("川川", "菜鸟")
  53. mylist.extend(mylist2)
  54. print(mylist)
  55. ### 删除列表 ###
  56. # 删除指定目标remove
  57. mylist = ["川川一号", "川川二号", "川川三号", "川川四号"]
  58. mylist.remove('川川二号')
  59. print(mylist)
  60. # 删除指定索引pop
  61. mylist = ["川川一号", "川川二号", "川川三号", "川川四号"]
  62. mylist.pop(2)
  63. print(mylist)
  64. # 如果不指定索引,该pop()方法将删除最后一项。
  65. mylist = ["川川一号", "川川二号", "川川三号", "川川四号"]
  66. mylist.pop()
  67. print(mylist)
  68. # 删除指定索引del
  69. mylist = ["川川一号", "川川二号", "川川三号", "川川四号"]
  70. del mylist[0]
  71. print(mylist)
  72. # 该del关键字也可以完全删除列表。
  73. mylist = ["川川一号", "川川二号", "川川三号", "川川四号"]
  74. del mylist
  75. # 清除列表clear
  76. mylist = ["川川一号", "川川二号", "川川三号", "川川四号"]
  77. mylist.clear()
  78. print(mylist)
  79. # clear()方法清空列表。该列表仍然存在,但没有内容。
  80. ### 循环列表 ###
  81. # for循环遍历
  82. '''可以使用循环遍历列表项'''
  83. mylist = ["川川一号", "川川二号", "川川三号", "川川四号"]
  84. for i in mylist:
  85. print(i)
  86. '''遍历索引号'''
  87. mylist = ["川川一号", "川川二号", "川川三号", "川川四号"]
  88. for i in range(len(mylist)):
  89. print(mylist[i])
  90. # while循环遍历
  91. mylist = ["川川一号", "川川二号", "川川三号", "川川四号"]
  92. i = 0
  93. while i < len(mylist):
  94. print(mylist[i])
  95. i = i + 1
  96. ### 列表推导式 ###
  97. # 根据fruits列表,您需要一个新列表,其中仅包含名称中带有字母“a”的fruits。
  98. # 如果没有列表理解,您将不得不编写一个for带有条件测试的语句:
  99. fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
  100. newlist = []
  101. for x in fruits:
  102. if "a" in x:
  103. newlist.append(x)
  104. print(newlist)
  105. # 使用列表推导式,你只需要一行代码即可!
  106. fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
  107. newlist = [x for x in fruits if "a" in x]
  108. print(newlist)
  109. # 返回“orange”而不是“banana”:(这个不是很好理解,多想想)
  110. fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
  111. newlist = [x if x != "banana" else "orange" for x in fruits]
  112. print(newlist)
  113. ### 列表排序 ###
  114. # 区分大小写的排序
  115. # 默认情况下,该sort()方法区分大小写,导致所有大写字母都排在小写字母之前:
  116. thislist = ["banana", "Orange", "Kiwi", "cherry"]
  117. thislist.sort()
  118. print(thislist)
  119. # 不区分大小写的排序
  120. # 如果你想要一个不区分大小写的排序函数,使用 str.lower 作为键函数:
  121. thislist = ["banana", "Orange", "Kiwi", "cherry"]
  122. thislist.sort(key=str.lower)
  123. print(thislist)
  124. # 倒序reverse
  125. mylist = ["川川一号", "川川二号", "川川三号", "川川四号"]
  126. mylist.reverse()
  127. print(mylist)
  128. ### 复制列表 ###
  129. # copy()方法制作列表的副本:
  130. mylist = ["川川一号", "川川二号", "川川三号", "川川四号"]
  131. my = mylist.copy()
  132. print(my)
  133. # list()方法制作列表的副本:
  134. mylist = ["川川一号", "川川二号", "川川三号", "川川四号"]
  135. my = list(mylist)
  136. print(my)
  137. ### 加入列表 ###
  138. # +号运算符
  139. list1 = ["a", "b", "c"]
  140. list2 = [1, 2, 3]
  141. list3 = list1 + list2
  142. print(list3)
  143. # 稍微有意思点,连接两个列表的另一种方法是将 list2 中的所有项一个一个地附加到 list1 中:
  144. list1 = ["a", "b", "c"]
  145. list2 = [1, 2, 3]
  146. for x in list2:
  147. list1.append(x)
  148. print(list1)
  149. # extend() 方法,其目的是将元素从一个列表添加到另一个列表:
  150. list1 = ["a", "b", "c"]
  151. list2 = [1, 2, 3]
  152. list1.extend(list2)
  153. print(list1)

python练习实例91

题目:

时间函数举例1。

分析:

就当学习了。

源代码:

  1. if __name__ == '__main__':
  2. import time
  3. print(time.ctime(time.time()))
  4. print(time.asctime(time.localtime(time.time())))
  5. print(time.asctime(time.gmtime(time.time())))

python练习实例92

题目:

时间函数举例2。

分析:

计算循环打印3000次所需时间。

源代码:

  1. if __name__ == '__main__':
  2. import time
  3. start = time.time()
  4. for i in range(3000):
  5. print(i)
  6. end = time.time()
  7. print(end - start)

python练习实例93

题目:

时间函数举例3。

源代码:

  1. if __name__ == '__main__':
  2. import time
  3. start = time.clock()
  4. for i in range(10000):
  5. print(i)
  6. end = time.clock()
  7. print('different is %6.3f' % (end - start))

Traceback (most recent call last):
  File "C:\Users\14504\PycharmProjects\study\python100例\93.py", line 6, in <module>
    start = time.clock()
AttributeError: module 'time' has no attribute 'clock'

和上个代码一样的功能,但是这个报错time没有clock这个属性,所以就用time好了。 

python练习实例94

题目:

 时间函数举例4,一个猜数游戏,判断一个人反应快慢。

源代码:

  1. if __name__ == '__main__':
  2. import time
  3. import random
  4. play_it = input('do you want to play it.(\'y\' or \'n\')')
  5. while play_it == 'y':
  6. c = input('input a character:\n')
  7. i = random.randint(0, 100)
  8. print('please input number you guess:\n')
  9. start = time.time()
  10. a = time.time()
  11. guess = int(input('input your guess:\n'))
  12. while guess != i:
  13. if guess > i:
  14. print('please input a little smaller')
  15. guess = int(input('input your guess:\n'))
  16. else:
  17. print('please input a little bigger')
  18. guess = int(input('input your guess:\n'))
  19. end = time.time()
  20. b = time.time()
  21. var = (end - start) / 18.2
  22. print(var)
  23. if var < 15:
  24. print('you are very clever!')
  25. elif var < 25:
  26. print('you are normal!')
  27. else:
  28. print('you are stupid!')
  29. print('Congradulations')
  30. print('The number you guess is %d' % i)
  31. play_it = input('do you want to play it.')

python练习实例95

题目:

字符串日期转换为易读的日期格式。

源代码:

  1. from dateutil import parser
  2. dt = parser.parse("Aug 28 2015 12:00AM")
  3. print(dt)

如果不是有这个函数,确实比较难办,字符串格式太多了。

python练习实例96

题目:

计算字符串中子串出现的次数。

分析:

 用一个count函数就可以解决。

源代码:

  1. if __name__ == '__main__':
  2. str1 = input('请输入一个字符串:\n')
  3. str2 = input('请输入一个子字符串:\n')
  4. n = str1.count(str2)
  5. print(n)

python练习实例97

题目:

从键盘输入一些字符,逐个把它们写到磁盘文件上,直到输入一个 # 为止。

分析:

当字符串没有#全部写入,有#则提取#前面的字符串写入。

源代码:

  1. filename = input('输入文件名:\n')
  2. fp = open(filename, "w+")
  3. ch = ''
  4. while '#' not in ch:
  5. fp.write(ch)
  6. ch = input('输入字符串:\n')
  7. n = ch.index('#')
  8. ch1 = ch[0:n]
  9. fp.write(ch1)
  10. fp.close()

python练习实例98

题目:

从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。

分析:

upper函数,with open语句比较方便。

源代码:

  1. string = input('请输入字符串:').upper()
  2. with open('test.txt', 'w+') as f:
  3. f.write(string)

python练习实例99

题目:

有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件C中。

分析:

首先读取两个文件内容并存在两个变量内,然后强制转换list使用sort函数,最后用join函数转回字符串写入。

源代码:

  1. with open('A.txt', 'r') as f:
  2. a = f.readline()
  3. with open('B.txt', 'r') as f:
  4. b = f.readline()
  5. c = list(a + b)
  6. c.sort()
  7. d = ''.join(c)
  8. with open('C.txt', 'w') as f:
  9. f.write(d)

python练习实例100

题目:

列表转换为字典。

分析:

注意dict[i[j]] = l[j]这个语句,dict[key],key=i[j]。

源代码:

  1. i = ['a', 'b']
  2. l = [1, 2]
  3. dict = {}
  4. for j in range(len(i)):
  5. dict[i[j]] = l[j]
  6. print(dict)
'
运行

结语:

经过整整一个月的坚持,我终于搞完了菜鸟100例,接下来稍作休整,继续进军力扣。

加油加油加油! 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号