02-巩固练习(for-in+while)

本文通过实例解析JavaScript中for-in循环与while条件判断的结合应用,帮助读者深入理解并巩固这两种控制流语句的综合运用。
摘要由CSDN通过智能技术生成

例题巩固:for-in+while

"""
Author: xahoo
“//” 表示整数除法,返回整数 比如 7/3 结果为2
"/"  表示浮点数除法,返回浮点数 (即小数) 比如 8/2 结果为4.0
"%"  表示取余数 比如7/4 结果为3
"""
"""
01 找出所有水仙花数
说明:
水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数,它是一个3位数,
该数字每个位上数字的立方之和正好等于它本身,例如:1^3 + 5^3+ 3^3=153。

"""
for i in range(100, 1000):
    low = i % 10  # % 求模运算,相当于mod,也就是计算除法的余数,比如5%2就得到1  153%10 = 3
    mid = i // 10 % 10  # 先整除,再求模、153//10 = 15  15%10 = 5
    high = i // 100  # 153//100 = 1
    if i == low ** 3 + mid ** 3 + high ** 3:
        print(i)

"""
02 将一个正整数反转,例如:将12345变成54321,代码如下所示。
"""
num = int(input('num = '))
reversed_num = 0
while num > 0:
    print(reversed_num * 10)
    print(num % 10)
    reversed_num = reversed_num * 10 + num % 10
    num //= 10
print(reversed_num)

"""
个人分析见解
reversed_num = 0
num = 123
reversed_num = reversed_num * 10 + num % 10 = 0+3=3
num = num // = 123//10 = 12


reversed_num =3
num = 12
reversed_num = reversed_num * 10 + num % 10 = 30+2=32
num = num // = 12//10 = 1


reversed_num = 32
num = 1
reversed_num = reversed_num * 10 + num % 10 = 320+1=321
num = num // = 1//10 = 0
"""
"""
03 公鸡5元一只,母鸡3元一只,小鸡1元三只,用100块钱买一百只鸡,问公鸡、母鸡、小鸡各有多少只?

公鸡num1,最多可买100/5=20只
母鸡num2,最多可买100/3=33.33只
小鸡num3,=100-num1-num2
5*num1+3*num2+num2/3 = 100元
"""

for num1 in range(0, 20):
    for num2 in range(0, 33):
        num3 = 100-num1-num2
        if num1*5+num2*3+num3/3 == 100:
            print('公鸡: %d只, 母鸡: %d只, 小鸡: %d只' % (num1, num2, num3))
"""
04 Craps赌博游戏
我们设定玩家开始游戏时有1000元的赌注
游戏结束的条件是玩家输光所有的赌注

简单的规则是:
玩家第一次摇骰子如果摇出了7点或11点,玩家胜;
玩家第一次如果摇出2点、3点或12点,庄家胜;
其他点数玩家继续摇骰子,如果玩家摇出了7点,庄家胜;
如果玩家摇出了第一次摇的点数,玩家胜;其他点数,玩家继续要骰子,直到分出胜负。
"""

money = 1000
while money > 0:
    print('你的总资产为:', money)
    needs_go_on = False

    while True:
        debt = int(input('请下注:'))
        if 0 < debt <= money:
            break
        else:
            print('请重新下注')

    first = randint(1, 6) + randint(1, 6)
    print('玩家摇出了%d点' % first)
    if first ==7 or first == 11:
        print('玩家胜')
        money += debt
    elif first == 2 or first == 3 or first == 12:
        print('庄家胜')
        money -= debt
    else:
        needs_go_on = True

    while needs_go_on:
        needs_go_on = False
        current = randint(1, 6) + randint(1, 6)
        print('玩家接着摇出了%d点' % current)
        if current == 7:
            print('庄家胜')
            money -= debt
        elif current == first:
            print('玩家胜')
            money += debt
        else:
            needs_go_on = True


print('你破产了, 游戏结束!', money)

"""
05 斐波那契数列的特点是数列的前两个数都是1,从第三个数开始,每个数都是它前面两个数的和,
形如:0,1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...。
斐波那契数列在现代物理、准晶体结构、化学等领域都有直接的应用。
"""

n = int(input('请输入要求的第几位数'))
first, second = 0, 1
index = 0  # 计步,对比n
while index < n:
    first, second = second, first + second
    index += 1
print(first)



# 要求: 输出斐波那契数列的 前20个数
first = 0
second = 1
for num in range(0, 20):
    first, second = second, first + second
    print(first, end=' ')

"""
06 找出1-9999之间的所有完美数
完美数是除了自身外 其他因子的和正好等于这个数
例如:
6 = 1+2+3
28 = 1+2+4+7+14
"""

for num in range(1, 10000):
    sum = 0
    for i in range(1, num):
        if num % i == 0 and num != i:
            sum += i
    if sum == num:
        print(num)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值