首页 > 编程语言 >聪明办法学python(4)

聪明办法学python(4)

时间:2023-12-02 20:45:08浏览次数:48  
标签:文件 return python range 办法 字符串 聪明 print def

聪明办法学python(4)

TASK 06 循环 LOOP

1.1 for循环

for x in range(m,n+1) #range(x,y)是左闭右开区间

1.2 range

range(n+1) #起始范围默认为0
range(m,n,k) #第三个参数为步长step
for x in range(5,20,7)  == (5 + 12 +19)
eg :只对从m 到 n 的奇数求和
def sum(m,n):
    total = 0
    for x in range(m,n+1):
        if x % 2 == 1:
            total += x
    return total
eg:从尾到头的range
for x in range(n,m-1,-1)
#以上写法不建议
for i in reversed(range(10,0,1))
#reversed反转

1.3 for循环的嵌套

def printCoordinates(xMax, yMax):
    for x in range(1, xMax+1):
        for y in range(1, yMax+1):
            print(f"( {x} , {y} )  ", end="")
 		print()
#多层循环运行极慢

eg:星号图

def Stars(n, m):
    # 输出一个 n*m 的星型矩阵图
    for row in range(n):
        for col in range(m):
            print("*", end="")
        print()
Stars(5, 5)
*****
*****
*****
*****
*****
#换一种写法
def printMysteryStarShape(n):
    for row in range(n):
        print(row, end=" ")
        for col in range(row):
            print("*", end=" ")
        print()
printMysteryStarShape(5)
0 
1 * 
2 * * 
3 * * * 
4 * * * * 

2.1 while循环

#我不知道什么时候停下来
def leftmostDigit(n):
    n = abs(n)
    while n >= 10:
        n = n//10
    return n 
#找出一个数最左边的数字

eg :

def isMultipleOf4or7(x):
    return ((x % 4) == 0) or ((x % 7) == 0)

def nthMultipleOf4or7(n):
    found = 0
    guess = -1
    while found <= n:
        guess += 1
        if isMultipleOf4or7(guess):
            found += 1
    return guess
#在知道循环范围时不应该使用while,而应该使用for

3.1 break与continue语句

for n in range(200):
    if n % 3 == 0:
        continue # 跳过这次循环
    elif n == 8:
        break # 跳出当前整个循环
    else:
        pass # 啥也不做,占位符(不会被运行)
    print(n, end=" ")
1 2 4 5 7 

eg:判断一个数是不是质数

def isPrime(n):
    if n < 2:
        return False
    for factor in range(2,n):
        if n % factor == 0:
            return False
    return True

def fasterIsPrime(n):
    if n < 2:
        return False
    if n == 2:
        return True
    if n % 2 == 0:
        return False
    maxFactor = round(n**0.5)
    for factor in range(3, maxFactor+1, 2):
        if n % factor == 0:
            return False
    return True
#快了一点 但是只有结果正确才能提及算法快慢

4.1 合理的剪枝,缩小搜索范围/循环范围,可以大幅提高程序运行效率

TASK 07 字符串

1.1 字符串文字

#四种引号
#引号的作用就是将文字包裹起来,告诉 Python "这是个字符串!"
#单引号 ' 和双引号 " 是最常见的两种字符字符串引号
print('单引号')
print("双引号")
#三个引号的情况不太常见,但是它在一些场合有特定的作用,如doc-strings

我们为什么需要两种不同的引号?

print("聪明办法学 Python 第二版的课程简称是 'P2S'")
如果我们偏要只用一种引号,这会导致语法错误,Python 无法正确判断一个字符串的终止位置

1.2字符串里的换行符号

#前面有反斜杠 \ 的字符,叫做转义序列
print("Data\nwhale")  # \n 是一个单独的换行符号
Data
whale
#等价于
print("""Data
whale""")
Data
whale
#其它的转移序列
print("双引号:\"")
双引号:"

print("反斜线:\\")
反斜线:\

print("换\n行")
换
行

print("这个是\t制\t表\t符\n也叫\t跳\t格\t键")
这个是	制	表	符
也叫	跳	格	键

s = "D\\a\"t\ta"
print("s =", s)
print("\ns 的长度为:", len(s))
s = D\a"t	a

s 的长度为: 7

1.3一些字符串常量

import string
print(string.ascii_letters)
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

print(string.ascii_lowercase)
abcdefghijklmnopqrstuvwxyz

print(string.ascii_uppercase) 
ABCDEFGHIJKLMNOPQRSTUVWXYZ

print(string.digits)
0123456789

print(string.punctuation) # < = >
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

print(string.printable)
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 	

print(repr(string.whitespace))
' \t\n\r\x0b\x0c'

1.4一些字符串的运算

print("abc" + "def")
print("abc" * 3)
abcdef
abcabcabc

print("ring" in "strings") # True
print("wow" in "amazing!") # False
print("Yes" in "yes!") # False
print("" in "No way!") # True
print("聪明" in "聪明办法学 Python") # True
True
False
False
True
True

1.5字符串的索引和切片

s = "Datawhale"
print(s)
print(s[0])
print(s[1])
print(s[2])
print(s[3])
Datawhale
D
a
t
a

print(s[0:4])
print(s[4:9])
Data
whale

print(s[0:2])
print(s[2:4])
print(s[5:7])
print(s[7:9])
Da
ta
ha
le


1.6翻转字符串

# 可以,但是不优雅
print(s[::-1])
elahwataD

# 优雅
def reverseString(s):
    return s[::-1]

print(reverseString(s))
elahwataD

1.7字符串的循环

for i in range(len(s)):
    print(i, s[i])
0 D
1 a
2 t
3 a
4 w
5 h
6 a
7 l
8 e


in 而不是for
for c in s:
    print(c)
D
a
t
a
w
h
a
l
e

#可以使用 enumerate() 获得元素的序号
for idx, c in enumerate(s):
    print(idx, c)
0 D
1 a
2 t
3 a
4 w
5 h
6 a
7 l
8 e

#zip(a, b) 可以在一次循环中,分别从 a 和 b 里同时取出一个元素
for a, b in zip(s, reverseString(s)):
    print(a, b)
D e
a l
t a
a h
w w
h a
a t
l a
e D

#用 split() 来循环

# class_name.split() 本身会产生一个新的叫做“列表”的东西,但是它不存储任何内容
class_name = "learn python the smart way 2nd edition"
for word in class_name.split():
    print(word)
learn
python
the
smart
way
2nd
edition

1.8格式化字符串

用 f-string 格式化字符串

x = 42
y = 99

print(f'你知道 {x} + {y} 是 {x+y} 吗?')
你知道 42 + 99 是 141 吗?

2.1基础文件操作

Python open() 函数用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数。

open(file, mode) 函数主要有 file 和 mode 两个参数,其中 file 为需要读写文件的路径。mode 为读取文件时的模式,常用的模式有以下几个:

  • r:以字符串的形式读取文件
  • rb:以二进制的形式读取文件
  • w:写入文件
  • a:追加写入文件

2.2文件对象

open 函数会返回一个 文件对象。在进行文件操作前,我们首先需要了解文件对象提供了哪些常用的方法:

  • close( ): 关闭文件
  • 在 r 与 rb 模式下:read(): 读取整个文件;readline(): 读取文件的一行;readlines(): 读取文件的所有行
  • 在 w 与 a 模式下:write(): ; writelines():

2.3注意

  • 注意每次操作结束后,及时通过 close( ) 方法关闭文件,否则代码什么不会输出
  • w 模式会覆盖之前的文件。如果你想在文件后面追加内容,可以使用 a 模式操作

2.4 with语句

with open("ZenOfPy.py", "w", encoding="utf-8") as file:
    file.write(Caesar_cipher)
    print(len(Caesar_cipher))
1003

文件操作推荐使用 with open("xxx") as yyy,这样就不用写 f.close()

标签:文件,return,python,range,办法,字符串,聪明,print,def
From: https://www.cnblogs.com/liuyankun111/p/17872191.html

相关文章

  • 聪明学python【5】+【6】
    聪明学python【5】+【6】【5】循环for本质(功能):基于提供的范围,重复执行特定次数的操作(注意:区分C语言和python的“重复”和“循环”:C语言更倾向于用循环数字来实现重复,Python可以直接实现重复,在需要时使用数字循环)格式:#格式1————循环xforxinrange(m,n+1):#格......
  • pythonDay19
    文件的两种用途from  import导入模块(都在同一个路径下) from  import案例 循环导入模块产生的问题 导入模块的优先级 如何解决第一次导入模块以后第二次再导入时候的路径来源 解决导入的模块路径来源不在同一个路径 包被导入是要注意的三点 相对......
  • python第四次笔记
    循环和字符串循环for循环forxinrange(x,y)forxinrange(1,10,2):print(int(x))表示遍历1到9之间的数,步长为2即打印13579while循环while(条件):执行行为whileTrue:print("nihao")这个代码会一直打印nihaocontinuebreakpasscontinue用于跳出本......
  • 聪明办法学Python_task4_11.28-12.2
    聪明办法学Python_task4_11.28-12.2聪明办法学Python_task4_11.28-12.21.task06循环1.1while循环1.2for循环1.3循环控制语句1.4range()函数2.task07字符串2.1字符串构成2.2字符串操作2.2.1字符串运算2.2.2索引&切片2.2.3相关函数1.task06......
  • Python 潮流周刊第 29 期(摘要)
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。周刊全文:https://pythoncat.top/posts/2023-12-02-weekly以下是本期摘要:......
  • python notebook
    python(11.20--12.2)配置python环境:下载:anaconda在清华大学开源软件镜像站中选择合适的镜像进行下载。anaconda的存在和作用:要使用anaconda不妨先了解anaconda是什么,做什么。首先要知道,anaconda的存在必然有其存在的社会条件,现如今的python拥有众多版本,他们可以满足使用者不......
  • ###聪明办法学python,task06,task07
    Task06---循环for循环和循环范围在提供的范围内,重复执行语句例:foriinrange(1,10)(缩进)print(“HelloWorld!!!”)重复打印9次“HelloWorld!!!”range(a,b)是一个左闭右开的区间,即a到b-1range(a,b,c)可存三个参数,a--起点,b--终点,c--步长若步长为正,则从a到b每c个数执行一次,若步长为负,则从b......
  • 聪明办法学python(字符串)
    字符串编写方式单引号,双引号(如果已存在一种,可用另一种引号包裹字符串,或用转义字符),三引号均可原始字符串在字符串前加"r",使字符串内的转义字符不再有效跨行字符串在每一行的末尾加上一个"\"用’‘’‘’‘或”“”“”“包裹字符串字符串字符串的运算1.字符串的......
  • python notebook
    python(11.20--11.28)现学现卖配置python环境:下载:anaconda在清华大学开源软件镜像站中选择合适的镜像进行下载。anaconda的存在和作用:要使用anaconda不妨先了解anaconda是什么,做什么。首先要知道,anaconda的存在必然有其存在的社会条件,现如今的python拥有众多版本,他们可以满......
  • phpstudy 80端口被system占用的解决办法
    转发至https://www.xp.cn/phpstudy/phpstudy-v8/3320.html,非常好用。1、启动phpstudy为本地配置虚拟机环境,启动apache或者nginx发现端口被占用,且无法关闭。打开cmd跑netstat-aon|findstr"80",然后跑tasklist/fi"PIDeq4",2、咋一看还是System这个进程?又无法结束这货,......