认真是我们
参与这个社会的方式

Python基础笔记1

不知道烂尾了多少次的Python学习计划,2019年争取把这个flag拔掉。课程为尹成python。

基础部分分成了27天,从输入输出到mysql数据库编程,这个日志记录这一部分认为重要的地方。

1、 常量不能被赋值,下面这个是错的

13=13

2、 str转实数

eval()

3、 反斜杠链接各行,分号多行合为一行

\
;

4、

\  除法

\\  整除

%  求模

**  开方

5、 num += 1 等价于 num = num+1

6、 整数转str,直接调用str()

int()取整数

round()四舍五入

7、 给变量赋值实际上是传递新的常量地址

8、 None主要用于判断常量有没有人正在使用

9、 平方根

import math

math.sqrt(9)  #9平方根

10、

ord() 求字符的编号

chr()由编号求字符

常用于字符串加密,大小写转换

11、print()

print('a', end=' ')  #控制结尾字符,默认换行

print('a', sep=' ')  #控制间隔字符

12、 format()字符串格式化

format(10.345, '10.8f')  #10为宽度,8为小数点位,f为浮点数

format(10.345, '<10.8f')  #<小于号,左对齐

format(1234, '10d')  #d为整数  #s为字符串

format()返回值为str类型

13、 num%26,%为取模

num模26,结果范围为0-25

14、 10.93元,提取元角分

int(eval(10.93)) 元

int(eval(10.93)*10)%10 角

int(eval(10.93)*100)%10 分

误差

10.03*100=1002.999999

#所以当执行下面时会有误差

int(10.03*100)%10  #会等于2

int(round(10.03*100))%10  #得3,先进行了四舍五入

15、 字符串比较,按照ASCII码大小进行比较

16、 0为false,非0为ture

字符串为空 false,非空ture

if在运算时,会转成布尔类型

bool(none)=flase

17、

('%d乌拉,%(num=7))  #占位,传值

18、 random

import random

num1=random.randrange(0,10)  #0-10,不含10

num2=random.randint(0,10)  #0-10,含10

19、

and  #且

or  #或

not  #非,结合性从右往左

20、 短路

print(3>2 and 10)  #and运算符,没有找到假之前,都取最后成立的值

10

print(2>3 or 10)  #or运算符,没有找到真之前,都取最后成立的值

10

print(2<3 or 10) 

True

21、 关系运算符

is  #两个变量是否指向同一个地址(是否共用一个地址)

is not

22、 运算符

print(5>3)

true

print(5>3>2)  #等价于 5>3 且 3>2

true

print(5>3<2)  #等价于 5>3 且 3<2

flase

x关系y关系z 等价于 x关系y且y关系z

23、 while规则,与if一样,会对表达式进行转换,转为布尔值。true继续循环,flase退出循环。

true 1,2,-1,’ ‘,ture,1.234

flase 0,”,None,flase

24、 浮点数误差

import time
num=2.0
while num!=0:
  num -=0.1
  print(num)
  time.sleep(0.5)

运行结果有误差

25、 if嵌入print

print('AAAA'   if   bool(3)   else   'BBBB')

等价于,if bool() 为true    AAAA,flase    BBBB

26、 if嵌入num

x=10
num=  10    if    x>18    else    20
print(num)

true返回前面的,false返回后面的

27、 if,else

import os
os.system('calc')  if  3>2  else  os.system('notepad')

如果3>2成立,运行前半部分,不成立,运行后半部分

28、 判断是否为三位数

num=eval(input('输入三位整数'))
if (num//100 > 0 and num//100<10):
  print('三位数')
else:
  print('不是三位数')

29、 同步异步

import os
while -1:
  os.system(‘notepad’)  #同步模式,一个程序执行结束,执行下一个
  os.system('start notepad')  #异步模式

30、 猜数字

import random
startnum=random.randint(1,10000)#随机数
num=eval(input("请输入一个数字"))
while  num!=startnum:   #while()条件,跳出循环的表达式取反
    if num>startnum:
        print("big")
    else:
        print("small")
    num=eval(input("再次输入"))
else:
    print("right")
    print(num,startnum)

31、 输入输出重定向

>写入文本覆盖

>>增加模式

<输入

32、 绘制表格

for i in range(1,5)
  j = 0
  while j<i:
    print(j, end=" ")
    j += 1

输出

0
0 1 
0 1 2 
0 1 2 3

33、 break中断循环(结束整个循环)

num=eval(input("输入一个数字"))
for i in range(1000):
  if num == i
    print('find')
    #break
  print(i)

假设输入,在123时会打印find,但是会循环999次。

如果加入break,就会在123时退出

34、 continue(结束本次循环)

for i in range(100):
  if i == 30:
    continue
  print(i)

程序循环到99,不会打印30,30时会跳过print语句

结束本次循环,本次循环continue执行,本次循环后续代码不会执行。常用于筛选。

打印所有奇数

for i in range(100):
  if i%2==0:
    continue
  print(i)

35、取出最大数

思路:先读取一个值maxdata,然后循环读取剩下的值,只要找到比最初读取的数大的,就将新的值赋给maxdata。

代码

num=eval(input("输入数据数量")) #读取第一个值=10
print(num)
maxdata=eval(input("data"))
print(maxdata)
for  i  in range(num-1): #循环9次
    data=eval(input("data"))
    if  data>maxdata:
        maxdata=data
    print(data)
print("max",maxdata)

数据为tt.txt,10指10个数据,以输入重定向的方式运行。python name.py < tt.t

10
97
34
59
28
98
165
73
81
13
105

取出最大数、次大数

num=eval(input("输入数据数量")) #读取第一个值=10
print(num)
maxdata=eval(input("data"))  #100   #90
nextdata=eval(input("data"))  #90   #100

#max >nextmax 确保max  >nextmax
if  maxdata<maxdata:
        temp=maxdata
        maxdata=nextdata
        nextdata=temp

for i in range(num-2):
    x = eval(input('data'))
    if x > maxdata:
        nextdata = maxdata
        maxdata = x
    elif x < maxdaat
        if x < nextdata:
            pass
        elif x > nextdata:
            nextdata = x
        
print(maxdata)
print(nextdata)

思路:先取出两个数,maxdata和nextdata,保证maxdata大于nexdata。循环8次,处理剩下的8个数据。如果取出的数比maxdata大,则将原来的maxdata的值赋值给nextdata,新取的值赋值给maxdata,这样就可以找出最大值。

如果取出的值小于maxdata,且小于nextdata,则循环结束。如果取出的值小于maxdata,且大于nextdata,则将取出的值赋值给nextdata。

36、按行显示

count=1
for  i  in range(100,1000+1):
    if i % 5 == 0 and i % 6 == 0:
        print(i,end="  ")

        if count %12==0: #按照行显示
            print("")
        count+=1

题目:找出能同时被5和6整除的数,每行显示12个。

按行显示的思路是,先定义一个初始值count=1,在需要换行的地方添加判断,如果count模12=0,则打印一个空(换行),然后自增。

37、在day6-16提到了装饰器模式,将函数当作参数传进去。emmmm?

 

 

 

 

没有故事 也没有酒

点也没用点也没用