python循环练习题

注:复制代码时注意缩进, 以免bug。

1.四位玫瑰数是4位数的自幂数。自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身,求10000以内的玫瑰数

for i in range(1000,10000):
    a=i//1000 #千位
    b=i//100%10 #百位
    c=i//10%10 #十位
    d=i%10 #个位
    if a**4+b**4+c**4+d**4==i:
        print(i,end=" ")

2.100以内素数之和(素数也叫质数。一个大于1的正整数,如果除了1和它本身以外,不能被其他正整数整除)

con=sum=0
for i in range(2,101):
    for j in range(2,i):
        if i%j==0:
            break
    else:
        print(i,end=" ")
        con+=1
        sum+=i
print("素数之和为:",sum)
print("共有",con,"个素数!")

3.使用*打印一个正方形

print("* "*6)
for i in range(3):
    print("*","*".rjust(9))
print("* "*6)

4.输入一行字符,分别统计出其中的数字、大小写字母和其他字符,总个数

inp=input("请任意输入:\n")
a=b=c=w=m=con=0
for i in inp:
    if i.isalpha():
        b+=1 #字母
        if i.isupper():
            w+=1 #大写字母
        if i.islower():
            m+=1 #小写字母
    elif i.isnumeric():
        a+=1 #数字
    elif i.isalnum()==0:
        c+=1 #非 数字或字母
    con+=1
print("数字:",a,",字母:",b,",其他字符:",c)
print("输入总字符为:%d其中大写字母有%d个,小写字母有%d个。"%(con,w,m))

5.打印99乘法表

for i in range(1,10):
    for j in range(1,i+1):
        print(str(j)+"*"+str(i)+"=",i*j,end=" ")
    print()
  1. 一个一万以内整数, 加上100和加上268 以后都是一个完全平方数, 请问该数是多少
import math
for i in range(10000):
    m = int(math.sqrt(i + 100))
    n = int(math.sqrt(i + 268))
    if m * m == i + 100 and n * n == i + 268:
        print(i)

7.求1000以内水仙花数: 如果一个3位数等于其各位数字的立方和,这个数就是水仙花数

for i in range(100,1000):
    a=int(i/100)
    b=int(i/10)%10
    c=i%10
    if a**3+b**3+c**3==i:
        print(i)

8.斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。
实现输入需要显示多少项数,然后在程序输出相应的斐波那契数列: 比如 输入5 输出 : 0,1,1,2,3。(使用一般方式,递归,迭代或生成器三种方式)

n=int(input("请输入打印的斐波那契数列个数:"))
a, b = 0, 1
for i in range(n):
    a, b = b, a + b
    print(a, end=' ')
#-----------------------------------------------
inp=int(input("请输入数字:\n"))
def dgc(n,a=0,b=1):
    if n==0:
        return b
    print(a,end=" ")
    return dgc(n-1,b,a+b)
dgc(inp)
#-----------------------------------------------
def fib(n):
    a,b,counter=0,1,0
    while True:
        if (counter>n):
            return
        yield a
        a,b=b,a+b
        conter=counter+1
n=int(input("请输入你想要的数列长度:"))
f=fib(n)  #f 相当于一个迭代器,由生成器返回生成
for i in range(n):
    print(next(f),end=" ")

  1. 抓球问题,5个红球,8个黑球,7个白球, 随机取出10个, 且白球不少于2个黑球不大于3个, 计数可能的颜色组合
sun=0
for i in range(6): #红球
    for j in range(9): #黑球
        for k in range(2,8): #白球
            if j<=3 and i+j+k==10:
                sun+=1
print("颜色组合为:%d"%sun)               

10.打印 等腰三角型(循环内用一句代码输出)

for i in range(6):
    for k in range(5-i):
        print(" ",end=" ")
    for j in range(2*i+1):
        print("*", end=" ")
    print()

11.冒泡排序以下列表:li=[1,9,4,7,7,8,2,3,5,8,13,10,11]

li=[1,9,4,7,7,8,2,3,5,8,13,10,11]
for i in range(len(li)-1):
    for j in range(len(li)-1-i):
        if li[j]>li[j+1]:
            li[j+1],li[j]=li[j],li[j+1]
print(li)

12.做一个1-10 的列表,并分别取出偶数成为新的列表。

li=[]
li01=[]
for i in range(1,11):
    li.append(i)
print(li)
j=-1
while j

13.输入年, 月 , 日 判断此日期是当年的第几天

date=input("请输入你要输入的日期(格式为20200202的八位数):\n")
if date.isnumeric() and len(date)==8:
    years=int(date[0:4])
    month=int(date[4:6])
    day=int(date[6:])
    #这是平年一年的月份天数
    cale=[31,28,31,30,31,30,31,31,30,31,30,31]
    con=i=0 #con为总天数
    if 0

14.猜数字游戏, 系统随机生成一个1000以内的数字,用户输入一个数字, 如果输入数字大于系统数字则提示大了,并统计猜的总次数。

import random #导入模块
computer=random.randint(0, 1000) #生成随机数
num=0 #统计猜的次数
while True:
    user=input("请输入数字(退出:输入e):\n")
    if user[0]=="e":
        break
    elif user.isnumeric():
        user=int(user)
        if computer>user:
            num+=1
            print("猜小了,重新猜。")
        elif computer

15.已知有:user = ["aa","bb","cc"] ,passwd = ["111","222","333"]
模拟登陆:1、从控制台接受 用户名和密码:2、判断 用户名和密码是否正确:如果正确提示登录成功,如果错误提示错误的原因。3、用户名和密码错误总共不能超过3次。

user=["aa","bb","cc"]
passwd=["111","222","333"]
k=None
count=0 #统计次数
while True:
    if count>=3: #开关
        print("输入次数超过三次!锁定。")
        break
    use=input('请输入用户名:')
    if use in user:
        k=user.index(use) #取下标值
        while count<3:
            pwd = input('请输入密码:')
            if passwd[k]==pwd:
                print('登录成功')
                exit(0)
            else:
                count+=1
                print('密码错误')
    else:
        print('用户名不存在')
        count+=1

#----------------------------------------------------------------------------
com=0 #统计次数
falg=1 #开关
while True:
    if com==3 and falg==0: #错误三次,退出
        print("用户名或者密码错误三次,已锁定。")
        break
    if falg==3: #登录成功,退出
        break
    use=input("输入用户名:")
    for i in range(len(user)):
        if use==user[i]: #判断用户名
            for j in range(len(passwd)):
                pwd=input("输入密码:")
                if passwd[i]==pwd: #判断密码
                    print("登录成功!")
                    falg=3
                    break 
                else:
                    com+=1
                    print("密码错误")
                if com==3:
                    falg=0
                    break 
        else:
            if falg==1 and i>=len(user): #判断遍历结束后,确认没此用户
                com+=1
                print("用户名错误!")
            if com==3:
                falg=0


16.做一个nextdate程序实现输入一个日期,程序自动输出这个日期后一天的日期.

date=input("请输入你要输入的日期(格式为20200202的八位数):\n")
if date.isnumeric() and len(date)==8:
    years=int(date[0:4])
    month=int(date[4:6])
    day=int(date[6:])
    #这是平年一年的月份天数
    cale=[31,28,31,30,31,30,31,31,30,31,30,31]
    if 0

你可能感兴趣的:(python循环练习题)