MENU

Python笔记 第三章

• August 4, 2022 • Read: 114 • 编程语言,学习笔记

for 循环语句

for i in range(5): #[1,5)
    print(i)
for i in range(-10,-100,-30): #步长-30
    print(i)

# >> -10 -40 -70(每个数单独一行)
for i in range(0)
    print(i) #>> 无输出
for i in range(2,2)
    print(i) #>> 无输出

(注意 :,print 前有四个空格)

for 循环遍历列表

写法一

a = ['vx','QQ','YEB']
for i in range(len(a)):# len 求列表长度(元素个数)
    print(i,a[i])
#>>0 vx
#1 QQ
#2 YEB
  • len 也可以用来求字符串长度,元组、集合、字典元素个数
print(len("abc")) #>>3

写法二

a = ['vx','QQ','YEB']
for i in a:
    print(i)
#>>vx QQ YEB(转行)
for letter in 'omage':
    print (letter)
#>>o m a g e(转行)

break 语句

a = ['vx','QQ','YEB']
for i in a:
    if i =='QQ':
        print("over")
        break #跳出循环
    print(i)
else:
    print("Not break")
print("Done!")
#>>vx
#over
#Done!

continue 语句

for letter in 'omage':
    if letter == 'a':
        continue #不执行此次循环,执行下一次循环
    print (letter)
#>>o
m
g
e

补充

  • 字符的编码

    • ord(x) 求字符 x 的编码
    • chr(x) 求编码为 x 的字符

(使用 ASCII 编码方案)

for i in range(26):
    print(chr(ord('a') + i),end="")
#连续输出 26 个英文字符

例题

n = int(input("请输入将要输入数字的个数:"))
total = 0
for i in range(n): #进行 n 次
    total +=int(input("请输入要加的数字:"))
print(total)
#输入 n 个整数求和
n = int(input("请输入一个整数:"))
for i in range (1,n+1):
    if n % i == 0:
        print(i)

# 输入一个正整数 n,从小到大输出它的公因数
n = int(input("请输入一个整数:"))
for i in range (n,0,-1):
    if n % i == 0:
    print(i)
#从大到小

多重循环

for i in range n:
    # ...
    for j in range m:
        # ...
#从 n 里取两个数使其和等于 m,且每个数只能取一次
c = input("请输入 n m:").split()
n,m = int(c[0]),int(c[1])
for i in range(1,n):# n-1 种取法
    for j in range(i + 1,n + 1):#使 i>j,避免重复
        if m % (i + j) == 0:
            print(i,j)
            break #后面的 j 不再取,换下一个 i
  • 多重循环中的 break 只会跳出那重循环,不会跳出多重循环

while 循环

count = 0
while count<5:
    print(count,"小于 5")
    count = count + 1
else:
    print(count,"大于或等于 5")
i=0
while i<26:
    print(chr(ord('a') + i),end="")
    i+=1
s = input().split()
x,y,z = int(s[0]),int(s[1]),int(s[2])
n = m =max(x,y,z)#从最大的数开始试
while not(n%x==0 and n%y==0 and n%z==0):
    n +=m #隔 m 个试一次
print(n)
#求三个数的最小公倍数

综合例题

#求斐波那契数列第 n 项
n =int(input())
c1=1
c2=1
for i in range (n-2):
   c3=c1+c2
    c1=c2
    c2=c3
print(c3)
#求阶乘的和
n = int(input())
s=0
for i in range (1,n+1):
    f=1
    for j in range (1,i+1):
        f*=j #重复计算多
        s+=f
print(s)
# 角谷猜想
n=int(input("请输入一个正整数:"))
while n!=1:
    if n%2==1:
    print(str(n)+"*3+1="+str(n*3+1))
    n=n*3+1
    else :
        print(str(n)+"/2="+str(n//2))
    n=n//2
print("End")

# 法2:
n=int(input("请输入一个正整数:"))
b = n
for i in range(n):#n 取多少合适
temp=b
if b==1:
break
if b%2==1:
b1=b*3+1
b =b1
print("%d = %d * 3 + 1"%(b1,temp))
if b%2==0:
b1=b/2
b=b1
print("%d = %d / 2"%(b1,temp))
#上式如何改正,已改;法 2:
#输入一个范围,找出 2 的个数
s=input().split()
ran1,ran2=int(s[0]),int(s[1])
tol=0
for i in range(ran1,ran2+1):
    s=str(i)
    for x in s:
        if x =="2":
            tol+=1
print(tol)
#法 2:
s=input().split()
ran1,ran2=int(s[0]),int(s[1])
tol=0
for i in range(ran1,ran2+1):
    if i/10==2 and i%10==2:
        tol+=2
        continue
    if i/10==2 or i%10==2:
        tol+=1
print("%d"%(tol))

字节星球 林栈 2022-08-21
https://www.bytecho.net/archives/2084.html


版权属于:字节星球 (转载请联系作者授权)
原文链接:https://www.bytecho.net/archives/2084.html
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

Last Modified: August 21, 2022
Archives QR Code
QR Code for this page
Tipping QR Code
Leave a Comment