2023年2月

import random
M = int(input("请输入需要生成的密码个数:"))
N = int(input("请输入密码的位数:"))

#提前设定的密码取值范围
codes = 'abcdefghijklimnopqrstuvwxyz' + 'ABCDEFGHIJKLMNOPQRSTUVWSYZ' + '0123456789'
codeCount = len(codes)
passwords = []
num = 0
while num< M:
      pas = random.sample(codes ,N)
      num += 1
      st = ','.join(pas)
      print(st.replace(',', ''))

伪进度条

import time
print('------执行开始------')
for i in range(0, 101, 2):
  time.sleep(0.1)
  num = i // 2
  if i == 100:
    process = "\r%3s%%: [%-50s->]\n" % (i, '*' * num)
  else:
    process = "\r%3s%%: [%-50s->]\n" % (i, '*' * num)
  print(process, end='', flush=True)
print("------执行结束------")

水仙花数对于某个三位整数x,如果其个位、十位和百位分别为a、b和c,且满足如下条件:

a3 + b3 + c**3 = x,则称x为水仙花数

i = int(input("100到一个数字范围:"))
for num in range(100, i):
    a = num % 10
    b = num // 10 % 10
    c = num // 100

    if a ** 3 + b ** 3 + c ** 3 == num:
        print(num)

回文数判断

设 n 是任意自然数

如果 n 的各位数字反向排列所得自然数 与 n 相等 则 n 称为回文数

import sys
n = input("请输入一个5位数字:");
if len(n) < 5:
    print("长度小于五位") 
    sys.exit(0)
    
if n == n[::-1]:
    print("{}是回文数".format(n))
else:
    print("{}不是回文数".format(n))

接口


接口是一种类型, 一种抽象的类型
接口就是你要实现的方法的清单
接口的定义

type moner interface{
    方法的签名(参数)(返回值)
}

接口的实现

  • 实现了所有的方法就实现了这个接口
  • 实现了接口就可以当成这个接口类型的变量

接口变量

  • 实现了一个万能的变量, 可以保存所有实现了我这个接口的类型的值
  • 通常作为函数的参数出现

空接口

  • 接口中没有定义任何方法, 也就是说任意类型都实现了空接口
  • 作为函数参数->fmt.PrintLn()
  • mapinterface{}

    interface{}:空接口

接口底层

  • 动态类型 (存什么是什么)
  • 动态值

类型断言

  • 做类型断言的前提是 一定要是一个接口类型的变量
  • 类型断言1

        assign("1")
        func assign(a interface{}) {
            str, ok := a.(string)
        if !ok { // 不是字符串ok为空
           fmt.Println("猜错了")
        } else {
            fmt.Println("猜对了 传进来的是一个字符串:", str)
        }
    }
    
  • 类型断言2

        assign2("asf")
        func assign2(a interface{}) {
            switch v := a.(type) { // 只能在switch内部使用
            case string:
                fmt.Println("这是string类型", v)
            case int:
                fmt.Println("这是int类型", v)
            case byte:
                fmt.Println("这是byte类型", v)
            case int64:
                fmt.Println("这是int64", v)
            }
    
        }