python循环练习题(九九乘法表、寻找水仙花数、寻找完美数、猜数字游戏、百钱买百鸡)

猜数字游戏

计算机出一个1~100之间的随机数由人来猜
计算机根据人猜的数字分别给出提示大一点/小一点/猜对了,并继续输入
关于这一题,因为不知道循环的次数和迭代对象,所以选择while循环
1、首先用random.randint定义一个随机数
2、第一次写的时候把输入的答案放在循环外面,后来想了一下,如果要根据提示再继续输入的话就必须把要每次输入的数字放入循环中,否则无法循环输入
3、break在循环里面的作用很重要,注意思考该把他放在哪儿。

import random
a = random.randint(1,100)
count = 0
while True:
    b = int(input("请输入您的答案:"))
    count += 1
    if a <b:
        print("小一点")
    elif a>b:
        print("大一点")
    else:
        print("猜对了,您一共猜了%d次"% count)
        break

九九乘法表

for i in range(1,10):
    for j in range(1,10):
        print('%d × %d = %d'%(i,j,i*j))

寻找水仙花数

如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。

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

寻找完美数

果一个数恰好等于它的因子之和,则称该数为“完全数” [1] 。各个小于它的约数(真约数,列出某数的约数,去掉该数本身,剩下的就是它的真约数)的和等于它本身的自然数叫做完全数(Perfect number)。
例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6

for i in range(1,10000):
    a = []
    b = 0
    for j in range(1,i):
        if i%j == 0:
            a.append(j)
    for m in a:
        b += m
    if b == i:
        print("%d是完美数"%i)
            

此题循环的嵌套还是比较细致的。
1、首先求约数的循环要嵌套在外层循环中,这是求各种数时候常用的套路。
2、因为它的约数非常多,所以我的想法是先把约数全存在一个表中,再利用一个遍历循环加起来,可以得到约数之和,然后在判断约数之和和数是否相等
3、本来把a ,b定义在最外侧,后来发现这样的不出来正确答案。后来在别人的帮助下才发现,a和b在第二次循环的时候把第一次循环的值保存了下来,导致结果错误。

百钱买百鸡

print('公鸡\t母鸡\t鸡仔')
for x in range(0,20):
    for y in range(0,33):
        if 3x+5y+(100-x-y)/3=100:
            print(x,"\t",y,"\t",(100-x-y))

在这题里面了解到了制表符的妙用
1、公鸡5钱1个,母鸡3钱1个,总共100钱,那么公鸡最多买20,母鸡最多买33,实际上买不到,只是给它限制住循环的条件
2、鸡仔1钱3个,且鸡仔可以通过x和y表示,把方程和约束条件写出来,让程序给出排列,此题非常有参考意义。
3、制表符可以保证有着上下打印的东西在一般情况保持对齐,打印的时候,如果是变量就不能像字符串一样用+来拼接。****

你可能感兴趣的:(python,python入门总结)