Python循环练习

这个世界并不是掌握在那些嘲笑者的手中,而恰恰掌握在能够经受得住嘲笑与批评,仍不断往前走的人手中 

文章目录

1.输入一个整数n,输出从1到n的数字

2.请输入一个整数n,输出n!的值

3.请输入一个正整数n,计算m=1-2+3-4...+(-)n

4.字符串统计,输入一个字符串,输出数字字符的个数

5.字符分类统计,输入一个字符串,分别统计字母、数字、下划线、其他字符的统计结果

6.打印菱形

7.打印水仙花数


前言:

本文中的几道题都用了两种方法,代码自取即可 

大家好,我是纪宁

今天我们用7道练习题来巩固python的循环部分,这是目前python基础的学习进度

关于for---in循环和while循环的强调

要注意的点:

  • for循环中,如果要对n个数进行操作,且要循环n次,当range 函数的第一个参数是1时,第二个参数必须是n+1,否则就不能对第n个数进行操作
  • while循环每循环一次要逐渐逼近循环终止条件

1.输入一个整数n,输出从1到n的数字

  此题不是很难,直接用for---in或while控制循环次数或者控制条件即可

#输出从1到n的数字
#for----in
n=int(input("请输入一个整数n:"))
for i in range(1,n+1,1):
    print(i)

#while
n=int(input("请输入一个整数:"))
i=1
while i<=n:
    print(i)
    i+=1

2.请输入一个整数n,输出n!的值

  此题要在循环外面定义一个变量,且初值必须赋为1,因为后面要对他进行自乘运算,用来存放阶乘n的值


#请输入一个整数n,输出n!的值
#while
n=int(input("请输入一个整数:"))
ret=1
i=1
while i<=n:
    ret*=i
    i+=1
print(ret)

#for----in
n=int(input("请输入一个整数:"))
ret=1
for i in range(1,n+1,1):
    ret*=i
print(ret)

3.请输入一个正整数n,计算m=1-2+3-4...+(-)n

  此题的重点是找规律:

  •   奇数项为正,偶数项为负,且绝对值每次都要加1
  •   那么只需要在每次往sum上面加的时候,判断一下奇偶即可:是偶数就乘  -1
#输入一个正整数n,计算m=1-2+3-4...+(-)n
#while
n=int(input("请输入一个整数n:"))
i=1
sum=0
while i<=n:
    if i%2!=0:
        sum+=i
    else:
        sum+=(-i)
    i+=1
print(sum)
#for----in
#
n=int(input("请输入一个整数n:"))
sum=0
for i in range(1,n+1,1):
    if i%2!=0:
        sum+=i
    else:
        sum+=(-i)
print(sum)

4.字符串统计,输入一个字符串,输出数字字符的个数

  此题在使用for循环时,只需要用i对字符串进行索引即可(不能用字符串名.[下标]),在while循环中正常使用字符串名.[下标]来索引每个字符

  还有一个注意点是,在python3中字符是不能直接用ASCII码与数字进行比较的,只能字符之间比较大小,如下面的代码在判断是否为数字时的语句

#字符串统计,输入一个字符串,输出数字字符的个数
#for----in
Str_=input("请输入一串字符:")
l=len(Str_)
count=0
for i in Str_:
    if i<='9' and i>='0':
        count+=1
print(count)

#while
Str_=input("请输入一串字符:")
l=len(Str_)
i=0
count=0
while i<l:
    if(Str_[i]<='9' and Str_[i]>='0'):
        count+=1
    i+=1
print(count)

5.字符分类统计,输入一个字符串,分别统计字母、数字、下划线、其他字符的统计结果

  这个题与第四题大同小异:只需要注意不能用处ASCII码数字进行判断即可

#打印字符分类
#while
Str_=input("请输入一串字符:")
l=len(Str_)
count_cha=0 #字母
count_dig=0 #数字
count_underline=0 #下划线
count_others=0 #其他字符
i=0
while i<l:
    if Str_[i]<='z'and Str_[i]>='a':
        count_cha+=1
    elif Str_[i] <='9' and Str_[i] >= '0':
        count_dig+=1
    elif Str_[i]=='_':
        count_underline+=1
    else:
        count_others+=1
    i+=1
print("这串字符串中字母的个数是",count_cha)
print("这串字符串中数字的个数是",count_dig)
print("这串字符串中下划线的个数是",count_underline)
print("这串字符串中其他字符的个数是",count_others)

#for---in
Str_=input("请输入一串字符:")
count_cha=0 #字母
count_dig=0 #数字
count_underline=0 #下划线
count_others=0 #其他字符
for i in Str_:
    if i <= 'z' and i >= 'a':
        count_cha += 1
    elif i <= '9' and i >= '0':
        count_dig += 1
    elif i == '_':
        count_underline += 1
    else:
        count_others += 1
print("这串字符串中字母的个数是",count_cha)
print("这串字符串中数字的个数是",count_dig)
print("这串字符串中下划线的个数是",count_underline)
print("这串字符串中其他字符的个数是",count_others)

6.打印菱形

  打印菱形一直是我们学习一门语言必须要经历的一步,熟练掌握这种菱形的打印可以让我们对这门语言的语法和基础用法更加熟悉

  打印菱形最重要的一点就是找到规律:

  • 先打印上半部分、在打印下半部分
  • 每一部分先打印空格,再打印*号
  • 上半部分的打印和下半部分的打印思维是相反的

稍微难一点,不过可以更好的锻炼我们的思维

#打印菱形
#纯while
n=int(input("请输入想打印的菱形的行数(奇数)"))
z=n//2+1
#打印上半部分
i=0
while i<z:  #打印上半部分
    j=0
    while j<z-i-1:    #打印上面空格
        print(' ' ,end='')
        j+=1
    x=0
    while x<2*i+1:    #打印上面的*
        print('*',end='')
        x+=1
    print()
    i+=1
#打印下半部分
i=0
while i<z-1:
    h=0
    while h<i+1:
        print(' ',end='')
        h+=1
    t=0
    while t<(z-i-1)*2-1:
        print('*',end='')
        t+=1
    print()
    i+=1


#for---in+while
n=int(input("请输入想打印的菱形的行数(奇数)"))
z=n//2+1
#打印上半部分
for i in range(0,z,1):
    j = 0
    while j<z-i-1:    #打印上面空格
        print(' ' ,end='')
        j+=1
    x=0
    while x<2*i+1:    #打印上面的*
        print('*',end='')
        x+=1
    print()
for i in range(0,z,1):
    h = 0
    while h<i+1:
        print(' ',end='')
        h+=1
    t=0
    while t<(z-i-1)*2-1:
        print('*',end='')
        t+=1
    print()

7.打印水仙花数

  “水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1^3+5^3+3^3=153,则153是一个“水仙花数”

  打印水仙花数最重要的是找到它的每一位,并每次循环都进行一次判断,如果符合水仙花数的规律,就进行打印

  乘方符号  **

#打印水仙花数
#while+for---in
i=0
wa_fl=0
z=0
for i in range(100,1000,1):
    z=i
    wa_fl=0
    while z>0:
        wa_fl+=((z%10)**3)
        z//=10
    if wa_fl==i:
        print(i)
#纯while
i=100
while i<=999:
    ge_=i%10  #找到个位
    shi_=i//10%10  #找到十位
    bai_=i//100
    if ge_**3+shi_**3+bai_**3==i:
        print(i)
    i+=1

在这里插入图片描述

  博主写了好长时间,如果你能给博主一个免费三连鼓励一下博主的话,那么你真是 泰裤辣

  • 28
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 27
    评论
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值