【python3】while和for的进阶案例

# Demo 1
# 求 1+2!+3!+...+20! 的和。

j = 1
sum_all = 0
while j <= 20:
    i = 1
    sum = 1
    while i <= j:
        sum *= i
        i += 1
    # print(sum)
    sum_all += sum
    j += 1

print("1+2!+3!+...+20!的和是{}".format(sum_all))

sum = 1
ret_sum = 0
for i in range(1, 21):
    sum *= i
    ret_sum += sum
print(ret_sum)


"""
# Demo 2
本金10000元存入银行,年利率是千分之三。
每过1年,将本金和利息相加作为新的本金。
计算5年后,获得的本金是多少?
"""
i = 0
money = 10000
while i < 5:
    money *= (1 + 0.003)
    i += 1

print("五年以后的本金是{:.2f}".format(money))


money = 10000
for i in range(1, 6):
    money *= (1 + 0.003)


"""
# Demo 3
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,
其各个位上数字的立方和等于该数本身。例如:153是一个”水仙花数",
因为153=1的三次方+5的三次方+3的三次方。
"""
num = 100
while num <= 999:

    if ((num // 100) ** 3 + (num % 100 // 10) ** 3 + (num % 10) ** 3) == num:
        print(num)

    num += 1


for i in range(100, 1000):
    if ((num // 100) ** 3 + (num % 100 // 10) ** 3 + (num % 10) ** 3) == i:
        print(num)


# Demo 4
# 设计“过7游戏”的程序, 打印出1-100之间除了含7和7的倍数之外的所有数字

# i = 0
# while i <= 99:
#     i += 1
#     if i % 7 == 0 or i % 10 == 7 or i // 10 == 7:
#         continue
#     else:
#         print(i)

for i in range(1, 101):
    if i % 7 == 0 or i % 10 == 7 or i // 10 == 7:
        continue
    print(i)


"""
# Demo 5
使用while,完成以下图形的输出。(每一行的星星不能用*乘以星星的数量来完成,须使用while嵌套)(较难)
    *
   ***        行 列  变量保存应该有多少个*
  *****
 *******
*********
 *******
  *****
   ***
    *
"""

row = 1
count = 1  # 表示当前行数应该有多少个*

while row <= 9:

    col = 1
    if row != 1:
        if row < 6:
            count += 2
        else:
            count -= 2

    while col <= count:
        if col == 1:  # 处理*前面的空格
            print(" " * ((9 - count) // 2), end="")
        print("*", end="")
        col += 1

    print("")
    row += 1


"""
# Demo 6
使用while、if来完成剪刀石头布程序,要求,
当玩家第3次获胜时才退出游戏,否则继续玩。
"""
import random

# 获胜次数
win_times = 0
while True:
    player = int(input("请输入:剪刀(0) 石头(1) 布(2)"))
    computer = random.randint(0, 2)

    if (player == 0 and computer == 2) or (player == 1 and computer == 0) or (player == 2 and computer == 1):
        win_times += 1
        if win_times == 3:
            print("你赢了三次了")
            break
        else:
            print("你赢了这局游戏")
    elif player == computer:
        print("平局,再来一次")
    else:
        print("你输了,不要走,决战到天亮")


"""
# Demo 7
幸运猜猜猜:游戏随机给出一个0~99(包括0和99)的数字,然后让你猜是什么数字。
你可以随便猜一个数字,游戏会提示太大还是太小,从而缩小结果范围。
经过几次猜测与提示后,最终推出答案。在游戏过程中,记录你最终猜对时所需要的次数,
游戏结束后公布结果。
说明:
1~2次猜中,打印你太TM有才了!
3~6次猜中,打印这么快就猜出来了,很聪明嘛!
大于7次猜中,打印猜了半天才猜出来,小同志,尚需努力啊!
猜测次数最多20次。
"""

import random

num = random.randint(0, 99)
print(num)
times = 0

while times <= 20:
    ges = int(input("请输入你猜的数字: "))
    if ges > num:
        print("你猜的数太大了")
        times += 1
        if times == 20:
            print("你都猜了20次了,还没猜中")
            break
        continue
    elif ges < num:
        print("你猜的数字太小了")
        times += 1
        if times == 20:
            print("你都猜了20次了,还没猜中")
            break
        continue
    else:
        if 1 <= times <= 2:
            print("有才")
        elif 3 <= times <= 6:
            print("还可以")
        else:
            print("需要努力")

print(num)

猜你喜欢

转载自www.cnblogs.com/liduo0413/p/10890895.html