0
点赞
收藏
分享

微信扫一扫

day5三目运算符while循环总结和作业

ixiaoyang8 2022-02-20 阅读 26
python

三目运算符while循环总结

一、三目运算符

python的三目运算符

  • 语法:
1 if 表达式 else2
  • 运算规则:如果表达式的结果为True,整个运算的结果就是值1,否则是值2
# 案例:如果a大于10让a加1,否则让a减1(用三目运算符
a = 18
result = a + 1 if a > 10 else a - 1
print(result)

二、while循环

1.while循环

  • 语法:
while 条件语句:
	循环体
  • 说明:

while - 关键字;固定写法

条件语句 - 可以是任何有结果的表达式(赋值语句)

: - 固定写法

循环体 - 和while保持一个缩进的一条或者多条语句;循环体就是会被重复FLASE执行的代码

  • 执行过程

先判断 条件语句是否为True,如果是就执行循环体;执行完循环体再判断条件语句是否为True,如果是又执行循环体…以此类推,如果条件语句是Flase循环就结束。

#案例1:使用while打印5遍hello word!
n = 0
while n < 5:
    n += 1
    print('hello word!')
#案例2:输入登录密码,直到输入正确为止
password = '123456'
value = input('请输入密码:')
while value != password:
    value = input('请输入密码:')
print('登录成功!')

2.for和while的选择

如果循环次数确定就使用for循环;如果循环次数不确定就使用while

(凡是可以用for解决的问题都用for,for解决不了的才用while)

三、循环关键字

1.continue和break

  • continue

作用:结束一次循环(执行循环体的时候如果遇到continue当次循环结束时,直接进入下次循环)

#案例1:打印三排aaa
for x in range(3):
    print('aaa')
    continue
    print('bbb')
#案例2:打印0-99以内的奇数
for x in range(100):
    if x % 2 == 0:
        continue
    print(x)
  • break

作用:结束整个循环(执行循环体的时候如果遇到break,整个循环直接结束)

#案例1:打印一排aaa
for x in range(3):
    print('aaa')
    break
    print('bbb')

遇到break的while:

while True:
	需要重复执行的操作
	if 循环结束的条件:
		break
#案例:随机产生一个0~100的随机数,玩家输入数字,输入的数和产生的数相等,游戏结束!如果不相等给出'大了'或者'小了'的提示
from random import randint
num = randint(0,100)
c = 0
while True:
    n = int(input('请输入一个数:'))
    c += 1
    if n > num:
        print('大了!')
    elif n < num:
        print('小了!')
    else:
        break
print('恭喜你,猜对了!共猜了',c,'次')

四、else关键字

1.完整的循环结构

  • 完整的for:
for 变量 in 序列:
	循环体
else:
	代码段
  • 完整的while:
while 条件语句:
	循环体
else:
	代码段
  • 关于else :
    • else的存在不会影响原循环的执行
    • else后面的代码会在循环结束后执行(如果循环是因为遇到break而结束就不会执行)
#案例:判断字符串是否是纯数字
str = '3465475'
for x in str:
    if not '0' <= x <= '9':
        print(str, '不是纯数字字符串')
        break
else:
    print(str, '是纯数字字符串')

作业

  1. 判断101-200之间有多少个素数,并输出所有素数。

    count = 0
    for i in range(100, 201):
        for j in range(2,i-1):
            if i % j == 0:
                break
        else:
            count += 1
            print(i)
    print(count)
    
  2. 求整数1~100的累加值,但要求跳过所有个位为3的数。

    sum = 0
    for i in range(1,101):
        if i % 10 != 3:
            sum += i
    print(sum)
    
  3. 有⼀分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的第20个分数

    a = 2
    b = 1
    for i in range(20):
        a,b = a + b,a
    print(a,'/',b)
    
  4. 写程序计算 n 的阶乘 n! 的结果

    n = int(input('请输入一个整数:'))
    num = 1
    for i in range(1,n + 1):
        num *= i
    print(num)
    
  5. 求1+2!+3!+…+20!的和

    num = 1
    sum = 0
    for i in range(1,21):
       num *= i
       sum +=num
    print(sum)
    
  6. 写程序求表达式 a + aa + aaa + aaaa+ … 的结果,其中a是1~9的数字,求和的项数用n来控制。(a和n可以用变量来表示)

    a = int(input('请输入a的值:'))
    n = int(input('请输入n的值:'))
    sum = 0
    m = a
    for i in range(1,n+1):
        sum += a
        a = a * 10 + m
    print(sum)
    
  7. 控制台输出三角形

    a.根据n的值的不同,输出相应的形状
    n = 5时             n = 4
    *****               ****
    ****                ***
    ***                 **
    **                  *
    *
    
    n = int(input('请输入一个整数:'))
    for i in range(n,0,-1):
        print('*' * n)
        n -= 1
        
    b.根据n的值的不同,输出相应的形状(n为奇数)
    n = 5               n = 7
      *                    *
     ***                  ***
    *****                *****
                        *******
    
    n = int(input('请输入一个奇数:'))
    for i in range(1,n + 1,2):
        m = int((n - i)/ 2 )
        print(' ' * m,'*' * i)
        
    c. 根据n的值的不同,输出相应的形状
    n = 4
       1
      121
     12321
    1234321
    
    n = 5
        1
       121
      12321
     1234321
    123454321
    
    n = int(input('请输入一个整数:'))
    c = n
    for i in range(1, n + 1):
        for l in range(1, n - i + 1):
            print(' ',end='')
        for j in range(1,i + 1):
            print(j,end='')
        for k in range(j - 1, 0, -1):
            print(k, end='')
        print('')
    
  8. 小明单位发了100元的购物卡,小明到超市买三类洗化用品,洗发水(15元),香皂(2元),牙刷(5元)。要把100元正好花掉,可有哪些购买结合?

    for a in range(7):
        for b in range(21):
            for c in range(51):
                 if 15 * a + 5 * b + 2 * c == 100:
                    print(a,b,c)
    
  9. 一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?

    n = 1
    while True:
        n += 1
        if 0.08 * 0.001 * 2 ** n >= 8848.13:
            print(n)
            break
    
  10. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

    a = b = 1
    c = 0
    n = int(input('请输入第几个月:'))
    if n == 1 or n == 2:
        print('1')
    else:
        i = 2
        while i < n:
            c = a + b
            a = b
            b = c
            i += 1
        print(c)
    
  11. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。

    a = int(input('请输入一个正整数:'))
    i = 2
    num = a
    print(a, '=', end='',sep='')
    while True:
        if num % i == 0:
            num = num // i
            print(i,'x',end='',sep='')
            i = 1
        if num // 2 == i:
            print(num)
            break
        i += 1
    
  12. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值

    num = int(input('请输入一个四位数整数:'))
    ge = (num % 10 + 5) % 10
    shi = (num // 10 % 10 + 5) % 10
    bai = (num // 100 % 10 + 5) % 10
    qian = (num // 1000 + 5) % 10
    print(qian,bai,shi,ge)
    
  13. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。

    a = int(input('请输入一个正整数:'))
    i = 2
    num = a
    print(a, '=', end='',sep='')
    while True:
        if num % i == 0:
            num = num // i
            print(i,'x',end='',sep='')
            i = 1
        if num // 2 == i:
            print(num)
            break
        i += 1
    
  14. 本金10000元存入银行,年利率是千分之三。每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是多少。

    sum = 0
    a = 10000
    for i in range(1,6):
        b = a * (1 + 0.003) ** i
        sum += b
    print(sum)
    
  15. 输入一个整数,计算它各位上数字的和。(注意:输入的整数可以是任意位)

    sum = 0
    m = 1
    a = 1
    n = int(input('请输入一个整数:'))
    for i in range(1,n + 1):
        a = n // 10 ** (m - 1) % 10
        m += 1
        sum += a
    print(sum)
    
  16. 求两个数的最大公约数和最小公倍数。(提示:公约数一定小于等于两数中的小的那个数,且能同时被两个数整除;公倍数一定大于等于两数中的大数,且是大数的倍数又能被两数中的小数整除)

    m = int(input('请输入m的值:'))
    n = int(input('请输入n的值:'))
    min = m if n > m else n
    for i in range(2,n * m + 1):
        if i % m == 0 and i % n == 0:
            break
    for x in range(1,min + 1):
        if m % x == 0 and n % x == 0:
            a = x
    print('最小公倍数:',i)
    print('最大公因数:',a)
    
举报

相关推荐

0 条评论