从入门到入狱------运算符和分支结构(二)

入门 three day

python 中的循环有两种 :for循环和while循环

1.for循环
for 变量 in 序列:
循环体

说明:
a.for/in 关键字,固定写法
b.变量 任意变量,一般写一个新的变量名
c.序列 python中容器型数据类型,例如;字符串、列表、元组、集合、迭代器、生成器、range等
D.冒号 : 固定写法
e.循环体 和for保持一个缩进的一条或者多条语句:
循环体就是需要重复执行的代码块
执行过程:
让变量去序列中取值,一个一个取,取完为止:每取一个值执行一次循环体。
(for循环的次数卡序列中元素的个数)

while 循环的用法
while True:
需要重复执行的操作
if 循环结束的条件:
break



# 执行5次'hello'
for i in 'abcde':
    print(i, 'hello')

# range(N)     产生一个 0 ~ N-1 的数字序列:0,1,2,3,...,N-1
# range(x,y)   产生一个 x ~ y-1 的数字序列:x,x+1,x+2,...,y-1
#              (x,y都是整数,x < y)
# 打印10次‘hello’

for i in range(0, 10):
    print(i, 'hello')

# range(x,y,step)  step(步长),控制每次增加的值,默认是1

for i in range(0, 10, 3):
    print(i, 'hello')  # '3 hello' "6 hello"'9 hello'

# 产生100到1所有的数字对应的数列
for i in range(100, 0, -1):
    print(i)

for i in range(-100, 0):
    print(-i)

# 求1+2+3~+100的和
sum = 0
for i in range(0, 101):
    sum += i
    print(sum)

# 统计0~100中能被3整除的偶数的个数
# 方法一
count = 0
for i in range(0, 101, 3):
    if i % 2 == 0:
        count += 1
print(count)

# 方法二
count = 0
for i in range(0, 101, 6):
    count += 1
print(count)

# 练习1:求1000以内能被7整除但是不能被3整除的数的和

sum = 0
for i in range(0, 1000, 7):
    if i % 3 != 0:
        sum += i
print(sum)

# 练习2:统计1000以内十位数加上个位数的和等于5的数的个数

sum1 = 0
for i in range(0, 1000):
    if (i % 100 // 10) + (i % 10) == 5:
        sum1 += 1
print(sum1)


sum = 1
while sum != '0':
    sum = input('请输入: ')

print('循环结束')

# 九九乘法表
b=0
for x in range(1, 10):
    for y in range(1, x+1):
        print(y, '*', x, '=', x * y,end="  ",sep='')
    b+=1
    print('\n',b, sep=" ")
    
    

while循环
语法:
while 条件语句:
循环体

说明:
while - 关键字;固定写法
条件语句 -除了赋值语句外的任意有结果的表达式
冒号 : -固定写法
循环体 -和while 保持一个缩进的一条或者多条语句
循环体就是需要重复执行的代码
执行过程:
先判断条件语句是否为 True ,为 True 就执行循环体,
执行完循环体再判断条件语句… …
直到判断条件语句的结果为False 整个循环体就结束

for循环和while的选择
用for循环:
遍历序列(将序列中的元素一个一个取出来)
循环次数确定

用while循环:
死循环
循环次数不确定

continue和break只能在循环体中使用
continue 结束一次循环
如果在执行循环体的时候遇到了continue,那么当次循环借宿直接进入下次循环

break 结束整个循环
如果执行循环体的时候遇到了break,那么整个循环结束

‘’’

continue的使用(跳过当前循环执行下一条)

randint (m,n) 产生一个m~n的随机整数
随机产生一个0-100的数字:num,用户不断输入数字直到输入的值和产生的
随机数相等游戏就结束

 count = 0
for i in range(10):
    if i % 3 == 0:
        continue
    count += 1
print(count)

print('欢迎来到猜数字游戏....................')
num = randint(0, 100)
a=0
while True:
    a+=1
    num1 = int(input('请输入一个10以内的整数:'))
    print('第',a,"次")
    if num == num1:
        print('恭喜恭喜猜对了也没有奖励') 
      	break
    elif num1 < num:
        print('猜小了')
    else:
        print('猜大了')
print("游戏结束")

基础题

  1. 根据输入的成绩的范围打印及格 或者不及格

    grade = int(input('请输入你的成绩: '))
    if grade < 60:
        print("爪巴爪巴,不及格")
    else:
        print('及格')
    
  2. 根据输入的年纪范围打印成年或者未成年,如果年龄不在正常范围内(0~150)打印这不是人!

    age = int(input('请输入你的年龄: '))
    if 0 <=  age < 18:
        print("爪巴爪巴,未成年!")
    elif 18 <= age <= 150:
        print('成年了!')
    else:
        print('老妖怪')
    
  3. 输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息a-b的结果不是奇数

    a=int(input('请输入整数: '))
    b=int(input('请输入整数: '))
    if (a-b) & 1 :
        print(a-b,'是奇数')
    else:
        print("结果不是奇数")
    
  4. 使用while循环输出 0~100内所有3的倍数。

    num = 100
    while num >= 0:
        if num % 3 == 0:
            print(num)
        num -= 1
    
  5. 使用while循环输出0~100内所有的偶数。

    num = 100
    while num > 0:
        if not(num & 1):
            print(num,'是偶数')
        num -= 1
    

进阶题

  1. 使用循环计算1*2*3*4*...*10的结果。

    count=1
    for i in range(1,11):
        count *= i
    print(count)
    
  2. 统计100以内个位数是2并且能够被3整除的数的个数。

    sum=0
    for i in range (0,101,3):
        if i % 10 == 2:
            sum+=1
    print(sum,i)
    
  3. 输入任意一个正整数,求他是几位数?

    注意: 这儿不能使用字符串,只能用循环

    sum = int(input("请输入一个正整数: "))
    a=0
    whlie True:
    	if sum //(10**a) != 0:
    		a+=1
    	else:
    		break
    print(a)
    
    
    num = int(input("请输入一个正整数: "))
     a=0
     while True:
     	num //= 0
     	a+=1
     	if num==0:
     		break
     print(a)
    
    
    
  4. 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是

    ⼀个⽔仙花数,因为 1³ + 5³ + 3³ 等于 153。

    for i in range(100,1000):
        if (i // 100)**3+(i%100//10)**3+(i%10)**3==i:
            print("水仙花数是:",i)
    

挑战题

  1. 判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
num= int(input("请输入一个数:"))
if num != 0:
    for i in range(2,int(num**0.5)+1):
        if num % i==0:
            print("不是质数")
            break
    else:
        print('是质数')
else:
    print('不是质数')
  1. 求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)
num = int(input("请输入一个数:"))
a1 = 1
a2 = 1
for i in range(1,num):
    a1, a2 = a2, a1+a2
print(a1)
  1. 输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

    for i in range(1,10):
        for j in range(1,i+1):
            print(j,'*',i,'=',j*i,end='  ',sep='')
        print('\n')
    
  2. 这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)

bd = 100
n = 0
m = 0
for big in range(0, 100 // 3 + 1):
    n += 1
    print('big第', n, '次循环')
    for mid in range(0, 100 // 2 + 1 - big):
        sm = 100 - big - mid
        m += 1
        print("mid第", m, "次循环")
        if big * 3 + mid * 2 + sm * 0.5 == bd:
            print('大马:', big, '中马:', mid, "小马:", sm)

你可能感兴趣的:(笔记,学习,python)