Python-Day02-分支结构及循环结构

                                                                                  """
                                                                                  Author: Seven_0507
                                                                                  Date: 2019-05-16
                                                                                  """
                                                                                  

                                                                                  Day02主要重新学习总结Python基本语法的分支结构、循环结构,重点用多种练习题作为学习内容!在这里插入图片描述

                                                                                  1. Python分支结构练习题

                                                                                  1.1 用户身份验证

                                                                                  """
                                                                                  用户身份验证
                                                                                  """
                                                                                  # import getpass
                                                                                  # from getpass import getpass
                                                                                  # from getpass import *
                                                                                  
                                                                                  username = input('请输入用户名: ')
                                                                                  password = input('请输入口令: ')
                                                                                  # 输入口令的时候终端中没有回显
                                                                                  # password = getpass.getpass('请输入口令: ')
                                                                                  if username == 'admin' and password == '123456':
                                                                                      print('身份验证成功!')
                                                                                  else:
                                                                                      print('身份验证失败!')
                                                                                  
                                                                                  请输入用户名: csn
                                                                                  请输入口令: 1234455
                                                                                  身份验证失败!
                                                                                  

                                                                                  1.2 分段函数求值

                                                                                  KaTeX parse error: Expected & or \\ or \cr or \end at position 37: …-5&\text{(x>1)}\?x?+2&\text{(-1}\l…

                                                                                  """
                                                                                  分段函数求值
                                                                                          3x - 5  (x > 1)
                                                                                  f(x) =  x + 2   (-1 <= x <= 1)
                                                                                          5x + 3  (x < -1)
                                                                                  """
                                                                                  x = float(input('x = '))
                                                                                  if x > 1:
                                                                                      y = 3 * x - 5
                                                                                  elif x >= -1:
                                                                                      y = x + 2
                                                                                  else:
                                                                                      y = 5 * x + 3
                                                                                  print('f(%.2f) = %.2f' % (x, y))
                                                                                  
                                                                                  x = 5
                                                                                  f(5.00) = 10.00
                                                                                  

                                                                                  1.3 英制单位英寸和公制单位厘米互换

                                                                                  """
                                                                                  英制单位英寸和公制单位厘米互换
                                                                                  """
                                                                                  value = float(input('请输入长度: '))
                                                                                  unit = input('请输入单位: ')
                                                                                  if unit == 'in' or unit == '英寸':
                                                                                      print('%f英寸 = %f厘米' % (value, value * 2.54))
                                                                                  elif unit == 'cm' or unit == '厘米':
                                                                                      print('%f厘米 = %f英寸' % (value, value / 2.54))
                                                                                  else:
                                                                                      print('请输入有效的单位')
                                                                                  
                                                                                  请输入长度: 5
                                                                                  请输入单位: cm
                                                                                  5.000000厘米 = 1.968504英寸
                                                                                  

                                                                                  1.4 掷骰子游戏

                                                                                  """
                                                                                  掷骰子决定做什么事情
                                                                                  """
                                                                                  from random import randint
                                                                                  
                                                                                  face = randint(1, 6)
                                                                                  if face == 1:
                                                                                      result = '唱首歌'
                                                                                  elif face == 2:
                                                                                      result = '跳个舞'
                                                                                  elif face == 3:
                                                                                      result = '学狗叫'
                                                                                  elif face == 4:
                                                                                      result = '做俯卧撑'
                                                                                  elif face == 5:
                                                                                      result = '念绕口令'
                                                                                  else:
                                                                                      result = '讲冷笑话'
                                                                                  print(result)
                                                                                  
                                                                                  讲冷笑话
                                                                                  

                                                                                  1.5 百分制成绩转等级制成绩

                                                                                  """
                                                                                  百分制成绩转等级制成绩
                                                                                  90分以上    --> A
                                                                                  80分~89分    --> B
                                                                                  70分~79分	   --> C
                                                                                  60分~69分    --> D
                                                                                  60分以下    --> E
                                                                                  """
                                                                                  score = float(input('请输入成绩: '))
                                                                                  if score >= 90:
                                                                                      grade = 'A'
                                                                                  elif score >= 80:
                                                                                      grade = 'B'
                                                                                  elif score >= 70:
                                                                                      grade = 'C'
                                                                                  elif score >= 60:
                                                                                      grade = 'D'
                                                                                  else:
                                                                                      grade = 'E'
                                                                                  print('对应的等级是:', grade)
                                                                                  
                                                                                  请输入成绩: 100
                                                                                  对应的等级是: A
                                                                                  

                                                                                  1.6 计算出三角形的周长和面积

                                                                                  """
                                                                                  判断输入的边长能否构成三角形
                                                                                  如果能则计算出三角形的周长和面积
                                                                                  面积计算使用:海伦公式
                                                                                  """
                                                                                  import math
                                                                                  
                                                                                  a = float(input('a = '))
                                                                                  b = float(input('b = '))
                                                                                  c = float(input('c = '))
                                                                                  if a + b > c and a + c > b and b + c > a:
                                                                                      print('周长: %f' % (a + b + c))
                                                                                      p = (a + b + c) / 2
                                                                                      area = math.sqrt(p * (p - a) * (p - b) * (p - c))
                                                                                      print('面积: %f' % (area))
                                                                                  else:
                                                                                      print('不能构成三角形')
                                                                                  
                                                                                  a = 2
                                                                                  b = 3
                                                                                  c = 4
                                                                                  周长: 9.000000
                                                                                  面积: 2.904738
                                                                                  

                                                                                  1.7 计算个人所得税

                                                                                  """
                                                                                  输入月收入和五险一金计算个人所得税
                                                                                  """
                                                                                  salary = float(input('本月收入: '))
                                                                                  insurance = float(input('五险一金: '))
                                                                                  diff = salary - insurance - 3500
                                                                                  if diff <= 0:
                                                                                      rate = 0
                                                                                      deduction = 0
                                                                                  elif diff < 1500:
                                                                                      rate = 0.03
                                                                                      deduction = 0
                                                                                  elif diff < 4500:
                                                                                      rate = 0.1
                                                                                      deduction = 105
                                                                                  elif diff < 9000:
                                                                                      rate = 0.2
                                                                                      deduction = 555
                                                                                  elif diff < 35000:
                                                                                      rate = 0.25
                                                                                      deduction = 1005
                                                                                  elif diff < 55000:
                                                                                      rate = 0.3
                                                                                      deduction = 2755
                                                                                  elif diff < 80000:
                                                                                      rate = 0.35
                                                                                      deduction = 5505
                                                                                  else:
                                                                                      rate = 0.45
                                                                                      deduction = 13505
                                                                                  tax = abs(diff * rate - deduction)
                                                                                  print('个人所得税: ¥%.2f元' % tax)
                                                                                  print('实际到手收入: ¥%.2f元' % (diff + 3500 - tax))
                                                                                  
                                                                                  本月收入: 12000
                                                                                  五险一金: 1800
                                                                                  个人所得税: ¥785.00元
                                                                                  实际到手收入: ¥9415.00元
                                                                                  

                                                                                  2. Python循环结构练习题

                                                                                  2.1 计算1~100和

                                                                                  """
                                                                                  (1) 用for循环实现1~100求和
                                                                                  """
                                                                                  sum = 0
                                                                                  for x in range(101):
                                                                                      sum += x
                                                                                  print(sum)
                                                                                  
                                                                                  
                                                                                  """
                                                                                  (2) 用while循环实现1~100求和
                                                                                  """
                                                                                  sum = 0
                                                                                  num = 1
                                                                                  while num <= 100:
                                                                                      sum += num
                                                                                      num += 1
                                                                                  print(sum)
                                                                                  
                                                                                  5050
                                                                                  5050
                                                                                  
                                                                                  • range可以用来产生一个不变的数值序列
                                                                                    1. range(101)可以产生一个0到100的整数序列。
                                                                                    2. range(1, 100, 2)可以产生一个1到99的奇数序列,其中的2是步长,即数值序列的增量。

                                                                                  2.2 1~100之间的偶数求和

                                                                                  """
                                                                                  (1) 用for循环实现1~100之间的偶数求和
                                                                                  """
                                                                                  sum = 0
                                                                                  for x in range(2, 101, 2):
                                                                                      sum += x
                                                                                  print(sum)
                                                                                  
                                                                                  
                                                                                  """
                                                                                  (2) 用for循环+if分支实现1~100之间的偶数求和
                                                                                  """
                                                                                  sum = 0
                                                                                  for x in range(1, 101):
                                                                                      if x % 2 == 0:
                                                                                          sum += x
                                                                                  print(sum)
                                                                                  
                                                                                  
                                                                                  """
                                                                                  (3) 用while循环实现1~100之间的偶数求和
                                                                                  """
                                                                                  sum = 0
                                                                                  num = 2
                                                                                  while num <= 100:
                                                                                      sum += num
                                                                                      num += 2
                                                                                  print(sum)
                                                                                  
                                                                                  2550
                                                                                  2550
                                                                                  2550
                                                                                  

                                                                                  2.3 猜数字游戏

                                                                                  """
                                                                                  猜数字游戏
                                                                                  计算机出一个1~100之间的随机数由人来猜
                                                                                  计算机根据人猜的数字分别给出提示大一点/小一点/猜对了
                                                                                  """
                                                                                  import random
                                                                                  
                                                                                  answer = random.randint(1, 100)
                                                                                  counter = 0
                                                                                  while True:
                                                                                      counter += 1
                                                                                      number = int(input('请输入: '))
                                                                                      if number < answer:
                                                                                          print('大一点')
                                                                                      elif number > answer:
                                                                                          print('小一点')
                                                                                      else:
                                                                                          print('恭喜你猜对了!')
                                                                                          break
                                                                                  print('你总共猜了%d次' % counter)
                                                                                  if counter > 7:
                                                                                      print('你的智商余额明显不足')
                                                                                  
                                                                                  请输入: 50
                                                                                  大一点
                                                                                  请输入: 90
                                                                                  小一点
                                                                                  请输入: 70
                                                                                  小一点
                                                                                  请输入: 55
                                                                                  小一点
                                                                                  请输入: 52
                                                                                  小一点
                                                                                  请输入: 51
                                                                                  恭喜你猜对了!
                                                                                  你总共猜了6次
                                                                                  

                                                                                  2.4 九九乘法表

                                                                                  """
                                                                                  输出乘法口诀表(九九表)
                                                                                  """
                                                                                  for i in range(1, 10):
                                                                                      for j in range(1, i + 1):
                                                                                          print('%d*%d=%d' % (i, j, i * j), end='\t')
                                                                                      print()
                                                                                  
                                                                                  1*1=1	
                                                                                  2*1=2	2*2=4	
                                                                                  3*1=3	3*2=6	3*3=9	
                                                                                  4*1=4	4*2=8	4*3=12	4*4=16	
                                                                                  5*1=5	5*2=10	5*3=15	5*4=20	5*5=25	
                                                                                  6*1=6	6*2=12	6*3=18	6*4=24	6*5=30	6*6=36	
                                                                                  7*1=7	7*2=14	7*3=21	7*4=28	7*5=35	7*6=42	7*7=49	
                                                                                  8*1=8	8*2=16	8*3=24	8*4=32	8*5=40	8*6=48	8*7=56	8*8=64	
                                                                                  9*1=9	9*2=18	9*3=27	9*4=36	9*5=45	9*6=54	9*7=63	9*8=72	9*9=81	
                                                                                  

                                                                                  2.5 素数判断

                                                                                  """
                                                                                  输入一个正整数判断它是不是素数
                                                                                  """
                                                                                  from math import sqrt
                                                                                  
                                                                                  num = int(input('请输入一个正整数: '))
                                                                                  end = int(sqrt(num))
                                                                                  is_prime = True
                                                                                  for x in range(2, end + 1):
                                                                                      if num % x == 0:
                                                                                          is_prime = False
                                                                                          break
                                                                                  if is_prime and num != 1:
                                                                                      print('%d是素数' % num)
                                                                                  else:
                                                                                      print('%d不是素数' % num)
                                                                                  
                                                                                  请输入一个正整数: 1
                                                                                  1不是素数
                                                                                  

                                                                                  2.6 计算两个正整数的最大公约数和最小公倍数

                                                                                  """
                                                                                  输入两个正整数计算最大公约数和最小公倍数
                                                                                  """
                                                                                  
                                                                                  x = int(input('x = '))
                                                                                  y = int(input('y = '))
                                                                                  if x > y:
                                                                                      x, y = y, x
                                                                                  for factor in range(x, 0, -1):
                                                                                      if x % factor == 0 and y % factor == 0:
                                                                                          print('%d和%d的最大公约数是%d' % (x, y, factor))
                                                                                          print('%d和%d的最小公倍数是%d' % (x, y, x * y // factor))
                                                                                          break
                                                                                  
                                                                                  x = 4
                                                                                  y = 2
                                                                                  2和4的最大公约数是2
                                                                                  2和4的最小公倍数是4
                                                                                  

                                                                                  2.7 打印三角形图案

                                                                                  """
                                                                                  打印各种三角形图案
                                                                                  
                                                                                  *
                                                                                  **
                                                                                  ***
                                                                                  ****
                                                                                  *****
                                                                                  
                                                                                      *
                                                                                     **
                                                                                    ***
                                                                                   ****
                                                                                  *****
                                                                                  
                                                                                      *
                                                                                     ***
                                                                                    *****
                                                                                   *******
                                                                                  *********
                                                                                  
                                                                                  """
                                                                                  
                                                                                  row = int(input('请输入行数: '))
                                                                                  for i in range(row):
                                                                                      print(i+1,end="\t")
                                                                                      for _ in range(i + 1):
                                                                                          print('*', end='')
                                                                                      print()
                                                                                  
                                                                                  print('-'*30)
                                                                                  
                                                                                  for i in range(row):
                                                                                      print(i+1,end='\t')
                                                                                      for j in range(row):
                                                                                          if j < row - i - 1:
                                                                                              print(' ', end='')
                                                                                          else:
                                                                                              print('*', end='')
                                                                                      print()
                                                                                      
                                                                                  print('-'*30)
                                                                                  
                                                                                  for i in range(row):
                                                                                      print(i+1,end='\t')
                                                                                      for _ in range(row - i - 1):
                                                                                          print(' ', end='')
                                                                                      for _ in range(2 * i + 1):
                                                                                          print('*', end='')
                                                                                      print()
                                                                                  
                                                                                  请输入行数: 4
                                                                                  1	*
                                                                                  2	**
                                                                                  3	***
                                                                                  4	****
                                                                                  ------------------------------
                                                                                  1	   *
                                                                                  2	  **
                                                                                  3	 ***
                                                                                  4	****
                                                                                  ------------------------------
                                                                                  1	   *
                                                                                  2	  ***
                                                                                  3	 *****
                                                                                  4	*******
                                                                                  

                                                                                  3. Python分支与循环综合练习题

                                                                                  3.1 寻找水仙花数练习

                                                                                  """
                                                                                  找出100~999之间的所有水仙花数(自幂数)
                                                                                  水仙花数:是这个数每位上的立方和等于这个数本身,如: 153 = 1**3 + 5**3 + 3**3
                                                                                  拓展知识:
                                                                                  一位自幂数:独身数
                                                                                  两位自幂数:没有
                                                                                  三位自幂数:水仙花数
                                                                                  四位自幂数:四叶玫瑰数
                                                                                  五位自幂数:五角星数
                                                                                  六位自幂数:六合数
                                                                                  七位自幂数:北斗七星数
                                                                                  八位自幂数:八仙数
                                                                                  九位自幂数:九九重阳数
                                                                                  十位自幂数:十全十美数
                                                                                  """
                                                                                  
                                                                                  for num in range(100, 1000):
                                                                                      # 先获取num的个十百位,再判断个十百每位立方和是否等于num
                                                                                      low = num % 10 # 取个位==取余数
                                                                                      mid = num // 10 % 10 # 取十位==整除再求余数
                                                                                      high = num // 100 # 取百位==整除
                                                                                      if num == low ** 3 + mid ** 3 + high ** 3:
                                                                                          print(num)
                                                                                  
                                                                                  153
                                                                                  370
                                                                                  371
                                                                                  407
                                                                                  

                                                                                  3.2 寻找完全数练习

                                                                                  """
                                                                                  找出1~9999之间的所有完美数
                                                                                  完美数是它的真因子(除自身外其他所有因子)和正好等于这个数本身的数
                                                                                  例如: 6 = 1 + 2 + 3, 28 = 1 + 2 + 4 + 7 + 14
                                                                                  """
                                                                                  import math
                                                                                  
                                                                                  for num in range(1, 10000):
                                                                                      sum = 0
                                                                                      # 先需要找到num的所有因数,可以通过遍历sqrt(n)的范围得到
                                                                                      for factor in range(1, int(math.sqrt(num)) + 1):
                                                                                          if num % factor == 0:
                                                                                              sum += factor
                                                                                              if factor > 1 and num / factor != factor:
                                                                                                  sum += num / factor
                                                                                      # 最后判断因数之和是否等于本身
                                                                                      if sum == num:
                                                                                          print(num)
                                                                                  
                                                                                  1
                                                                                  6
                                                                                  28
                                                                                  496
                                                                                  8128
                                                                                  

                                                                                  3.3 百钱百鸡练习

                                                                                  """
                                                                                  求解《百钱百鸡》问题
                                                                                  1只公鸡5元 1只母鸡3元 3只小鸡1元 用100元买100只鸡
                                                                                  问公鸡 母鸡 小鸡各有多少只?
                                                                                  公鸡5元一只,那么100元内,公鸡数量要小于20,母鸡数量要小于33
                                                                                  公鸡:x  母鸡:y  小鸡:100-x-y  求解:5x+3y+(100-x-y)=100成立
                                                                                  """
                                                                                  
                                                                                  for x in range(0, 20):
                                                                                      for y in range(0, 33):
                                                                                          z = 100 - x - y
                                                                                          if 5 * x + 3 * y + z / 3 == 100:
                                                                                              print('公鸡: %d只, 母鸡: %d只, 小鸡: %d只' % (x, y, z))
                                                                                  
                                                                                  # 要理解程序背后的算法 - 穷举法
                                                                                  
                                                                                  公鸡: 0只, 母鸡: 25只, 小鸡: 75只
                                                                                  公鸡: 4只, 母鸡: 18只, 小鸡: 78只
                                                                                  公鸡: 8只, 母鸡: 11只, 小鸡: 81只
                                                                                  公鸡: 12只, 母鸡: 4只, 小鸡: 84只
                                                                                  

                                                                                  3.4 斐波那契数列练习

                                                                                  """
                                                                                  斐波那契数列:从第3项开始,每一项都等于前两项之和
                                                                                  输出斐波那契数列的前20个数
                                                                                  1 1 2 3 5 8 13 21 ...
                                                                                  """
                                                                                  
                                                                                  a = 0
                                                                                  b = 1
                                                                                  for i in range(20):
                                                                                      (a, b) = (b, a + b)
                                                                                      print(a, end=' ')
                                                                                  
                                                                                  1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 
                                                                                  

                                                                                  3.5 回文素数

                                                                                  """
                                                                                  判断输入的正整数是不是回文数
                                                                                  回文数是指将一个正整数从左往右排列和从右往左排列值一样的数
                                                                                  """
                                                                                  
                                                                                  num = int(input('请输入一个正整数: '))
                                                                                  temp = num
                                                                                  num2 = 0
                                                                                  while temp > 0:
                                                                                      num2 *= 10
                                                                                      num2 += temp % 10 # 取个位==取余数,个位做百位
                                                                                      temp //= 10 # 取百位十位
                                                                                  if num == num2:
                                                                                      print('%d是回文数' % num)
                                                                                  else:
                                                                                      print('%d不是回文数' % num)
                                                                                  
                                                                                  
                                                                                  请输入一个正整数: 232
                                                                                  232是回文数
                                                                                  

                                                                                  3.6 Craps赌博游戏

                                                                                  """
                                                                                  Craps赌博游戏
                                                                                  玩家摇两颗色子 如果第一次摇出7点或11点 玩家胜
                                                                                  如果摇出2点 3点 12点 庄家胜 其他情况游戏继续
                                                                                  玩家再次摇色子 如果摇出7点 庄家胜
                                                                                  如果摇出第一次摇的点数 玩家胜
                                                                                  否则游戏继续 玩家继续摇色子
                                                                                  玩家进入游戏时有1000元的赌注 全部输光游戏结束 用while循环
                                                                                  """
                                                                                  
                                                                                  from random import randint
                                                                                  
                                                                                  money = 1000
                                                                                  while money > 0:
                                                                                      print('你的总资产为:', money)
                                                                                      needs_go_on = False
                                                                                      while True:
                                                                                          debt = int(input('请下注: '))
                                                                                          if debt > 0 and debt <= money:
                                                                                              break # 跳出第二个while True循环
                                                                                      first = randint(1, 6) + randint(1, 6)
                                                                                      print('玩家摇出了%d点' % first)
                                                                                      if first == 7 or first == 11:
                                                                                          print('玩家胜!')
                                                                                          money += debt
                                                                                      elif first == 2 or first == 3 or first == 12:
                                                                                          print('庄家胜!')
                                                                                          money -= debt
                                                                                      else:
                                                                                          needs_go_on = True
                                                                                  
                                                                                      while needs_go_on:
                                                                                          current = randint(1, 6) + randint(1, 6)
                                                                                          print('玩家摇出了%d点' % current)
                                                                                          if current == 7:
                                                                                              print('庄家胜')
                                                                                              money -= debt
                                                                                              needs_go_on = False
                                                                                          elif current == first:
                                                                                              print('玩家胜')
                                                                                              money += debt
                                                                                              needs_go_on = False
                                                                                  
                                                                                  print('你破产了, 游戏结束!')
                                                                                  
                                                                                  你的总资产为: 1000
                                                                                  请下注: 200
                                                                                  玩家摇出了10点
                                                                                  玩家摇出了8点
                                                                                  玩家摇出了9点
                                                                                  玩家摇出了6点
                                                                                  玩家摇出了10点
                                                                                  玩家胜
                                                                                  你的总资产为: 1200
                                                                                  请下注: 500
                                                                                  玩家摇出了6点
                                                                                  玩家摇出了4点
                                                                                  玩家摇出了10点
                                                                                  玩家摇出了12点
                                                                                  玩家摇出了6点
                                                                                  玩家胜
                                                                                  你的总资产为: 1700
                                                                                  请下注: 1000
                                                                                  玩家摇出了7点
                                                                                  玩家胜!
                                                                                  你的总资产为: 2700
                                                                                  请下注: 2700
                                                                                  玩家摇出了8点
                                                                                  玩家摇出了7点
                                                                                  庄家胜
                                                                                  你破产了, 游戏结束!
                                                                                  
                                                                                  展开阅读全文

                                                                                  没有更多推荐了,返回首页

                                                                                  加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】| 加拿大28预测计划【复制fh118.com打开】|