python 第一次查漏补缺笔记

python第一次入门笔记

入门笔记,监督自己一步步进步。也用来回顾易错点。

1.input

num1 = input("请输入第一个数字")
num2 = input("请输入第二个数字")
#错误方式 sum = num1+num2
sum = float(num1)+float(num2)
print("数字{0}+数字{1}为{2}".format(num1,num2,sum))

input()返回的是一个字符串,而非是一个数字。可以使用float()等方法将字符串转换成数字再进行相加。
注意最好加上try……except ValueError

2.random

import random

print(random.randint(0,9))

注意此处的结果是[0,9]
而C++中却是这样

#define random(x) (rand()%x)//[0,x)

要取得[a,b)的随机整数,使用(rand() % (b-a))+ a (结果值 [a,b) )。
C++rand详细参考:
https://blog.csdn.net/weixin_45677333/article/details/111790193

3.交换值(不使用临时变量)

a=1;b=2
a,b=b,a

4.测试输入的是否是数字

#!/usr/bin/python3
#coding:utf8

def is_number(str):
    try:
        float(str)
        return True
    except ValueError:
        pass

    try:
        import unicodedata
        for s in str:
            unicodedata.numeric(s)
        return True
    except (TypeError,ValueError):
        pass

    return False

while True:
    str = input("请输入字符串")
    if is_number(str):
        print("%s是数字"%str)
    else:
        if str == "q":
            print("结束测试")
            break
        else:
            print("%s不是数字"%str)

注意事项:
1.为什么需要使用#coding:utf8
防止中文乱码
2.使用float后,为什么还需要unicodedata
float可以测试数字,加上unicode后可以测试中文数字等其他含义的数字

5.判断是否是质数

#!/usr/bin/python3
#coding:utf8

while True:
    str1 = input("请输入一个数字")
    try:
        num = int(str1)

        if num > 1:
            for value in range(2,num):#//range(a,b)=>[a,b)
                if(num%value)==0:
                    print("%d不是质数 因为%d*%d=%d"%(num,value,num//value,num))
                    break;
            else:
                print("%d是质数"%num)
        else:
            print("%d是质数"%num)
    except ValueError:
        if str1 == "q":
            break;
        else:
            print("输入错误,请重新输入")

注意range的范围range(a,b)=>[a,b)
str( )是python自带函数,是python保留的关键字,定义变量时应该避免使用str作为变量名

6.阶乘

        if num < 0:
            print("%d没有阶乘"%num)
        elif num == 0:
            print("0的阶乘是1")
        else:
            factorial = 1
            for value in range(1,num+1):
                factorial = factorial *value
            print("%d的阶乘是%d"%(num,factorial))

基础知识,带过就好

7.斐波那契数列

#!/user/bin/python3
#coding:utf8

def method1(nums):
    num1 = 0
    num2 = 1
    count = 2
    if nums <= 0:
        print("请输入一个正整数")
    else:
        if nums == 1:
            print("结果:", num1)
        else:
            print("结果:", end=" ")
            print(num1, " ", num2, end="")
            while count < nums:
                sum = num1 + num2;
                print("   %d" % sum, end="")
                num1 = num2
                num2 = sum
                count = count + 1
            print()

def recur_fibo(num):
    if num <= 1:
        return num
    else:
        return (recur_fibo(num-1) + recur_fibo(num-2))

def method2(nums):
    print("结果:", end=" ")
    for i in range(nums):
        print(recur_fibo(i),end="   ")
    print()

while True:
    str1 = input("斐波那契数列,你需要几项?")
    try:
        nums = int(str1)
        method1(nums)
        method2(nums)
    except ValueError:
        if str1 == "q":
            print("结束")
            break
        else:
            print("输入错误,请重新输入")

只需要记住:
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。

8.阿姆斯特朗数

#!user/bin/python3
#coding:utf8

def isArmstrongNumber(num):
    n = len(str(num))
    sum = 0
    temp = num
    while temp > 0:
        digit = temp % 10
        sum += digit ** n
        temp //= 10
    if sum == num:
        return True
    else:
        return False

while True:
    str1 = input("找多少以内的阿姆斯特朗数?")
    try:
        nums = int(str1)
        print(nums,"以内的阿姆斯特朗数有",end=" ")
        for num in range(1,nums+1):
            if isArmstrongNumber(num):
                print(num,end=" ")
        print("结束")
    except ValueError:
        if str1 == "q":
            print("结束")
            break
        else:
            print("请输入一个正整数")

需要注意:
如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5^3 + 3^3 = 153。
str( )是python自带函数,是python保留的关键字,定义变量时应该避免使用str作为变量名

9.进制转换和ASCII码与字符转换

dec = int(input("输入"))
print("二进制:",bin(dec),"八进制:",oct(dec),"十进制:",dec,"十六进制:",hex(dec))
print("二进制:",bin(dec),"八进制: 0o%o"%dec,"十进制: %d"%dec,"十六进制: 0x%x"%dec)
c = input("一个字符")
print(c,"的ASCII码是",ord(c))
a = int(input("一个ASCII码"))
print(a,"对应的字符是",chr(a))

带过就行

10.最大公约数算法和最小公倍数算法

for i in range(1,smaller + 1):
       if((x % i == 0) and (y % i == 0)):
           hcf = i
while(True):
       if((greater % x == 0) and (greater % y == 0)):
           lcm = greater
           break
       greater += 1

11.模块

输出日历

import calendar
print(calendar.month(2021,5))
print(calendar.monthrange(2021,5))
#第一个元素是所查月份的第一天对应的是星期几(0-6),第二个元素是这个月的天数

日期

import datetime
def getYesterday():
    return (datetime.date.today()-datetime.timedelta(1))
print(getYesterday())
import  time

while True:
    print("请开始")
    input("")
    startTime = time.time()
    print("计时开始")
    try:
        while True:
            print("计时",round(time.time()-startTime),"秒")
            time.sleep(1)
    except KeyboardInterrupt:
        print("计时结束")
        print("总时长",round(time.time()-startTime),"秒")
        break

注意: except KeyboardInterrupt
round()四舍五入,深入传送门https://www.cnblogs.com/anpengapple/p/6507271.html
了解就行,后续继续补充

12.文件读写

#!user/bin/python3
#coding:utf8

def readfile1(filename):
    with open(filename, "r+") as f:
        #调用readlines()一次读取所有内容并按行返回list
        for lines in f.readlines():
            print(lines.strip())

def readfile2(filename):
    with open(file_name, "r+") as f:
        #text = f.read()
        #read()会一次性读取文件的全部内容,所以一般调用read(size)方法
        text = f.read(100)
        print(text)

#文件读写时都有可能产生IOError
file_name="bobotest.txt"
try:
    f = open(file_name,"w")
    f.write("第一次写入一行\n")
finally:
    if f:
        f.close()

#Python引入了with语句自动调用close()方法
with open(file_name,"a") as f1:
    f1.write("第二次写入一行\n")
    f1.flush()#将缓冲区中的数据立刻写入文件,同时清空缓冲区
    readfile1(file_name)
    print("重新设置文件读取指针到开头")
    f1.seek(0,0)#重新设置文件读取指针到开头
    readfile2(file_name)

需要注意:
with语句自动调用close()方法
read()与readlines()需要注意文件大小

13.字符串判断

print(str.isalnum()) # 判断所有字符都是数字或者字母
print(str.isalpha()) # 判断所有字符都是字母
print(str.isdigit()) # 判断所有字符都是数字
print(str.islower()) # 判断所有字符都是小写
print(str.isupper()) # 判断所有字符都是大写
print(str.istitle()) # 判断所有单词都是首字母大写,像标题
print(str.isspace()) # 判断所有字符都是空白字符、\t、\n、\r
print(str.upper())          # 把所有字符中的小写字母转换成大写字母
print(str.lower())          # 把所有字符中的大写字母转换成小写字母
print(str.capitalize())     # 把第一个字母转化为大写字母,其余小写
print(str.title())          # 把每个单词的第一个字母转化为大写,其余小写 

看一眼就行

14.lamba

from functools import reduce
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
print(list(filter(lambda  x:x%2==0,foo)))
print(list(map(lambda x: x * 2 + 10, foo)))
print(reduce(lambda x,y:x+y,foo))

注意:这里与python2有些区别
1.Python3.x reduce() 已经被移到 functools 模块里
2.以上代码python3不加list,则输出是迭代器

15.参数传递

def func1(a, b=1, *c, **d):
    #print(a, b, c, d)
    print("a:{} b:{} c:{} d:{}".format(a, b, c, d))

def fun0(*name):
    print(type(name))
    print(name)

fun0([1,2,3])
fun0((1,2,3))
fun0(1,2,3)

l = [3, 4]
dic = {'y': 5, 'z': 6}
func1(1, 2, l, dic)
func1(1, 2, *l, **dic)
func1(1, 2, 3, 4, **dic)

运行结果:

<class 'tuple'>
([1, 2, 3],)
<class 'tuple'>
((1, 2, 3),)
<class 'tuple'>
(1, 2, 3)
a:1 b:2 c:([3, 4], {'y': 5, 'z': 6}) d:{}
a:1 b:2 c:(3, 4) d:{'y': 5, 'z': 6}
a:1 b:2 c:(3, 4) d:{'y': 5, 'z': 6}

注意:dic中关键字选择’y’,'z’的原因是不能与形参定义相同
name是包裹位置传递所用的元组名,在定义func时,在name前加*号。
dict是一个字典,收集所有的关键字,传递给函数func。参数dict是包裹关键字传递所用的字典,在dict前加**。
仔细讲解传送门:https://www.bbsmax.com/A/GBJrjmBJ0e/

16.pip命令

pip install --upgrade --pre uiautomator2

讲解:
pip install --upgrade +包名 升级各种包
-U, --upgrade
Upgrade all specified packages to the newest available version. The handling of dependencies depends on the upgrade-strategy used.
–pre
Include pre-release and development versions. By default, pip only finds stable versions.
传输门:https://pip.pypa.io/en/stable/cli/pip_install/#install-pre

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值