首页 > 编程语言 >【Python】水仙花数、百钱买百鸡、CRAPS游戏、斐波那契数列、完美数、素数

【Python】水仙花数、百钱买百鸡、CRAPS游戏、斐波那契数列、完美数、素数

时间:2022-11-30 14:24:47浏览次数:35  
标签:10 Python 百钱 斐波 range num factor print 100

1.寻找水仙花数

水仙花数:是一个3位数,每一位上数字的立方和正好等于它本身,如:13+53+33 = 153,则153就是一个水仙花数,也称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数。

用除法和取模运算分别取出个位十位百位数字,low、mid、high,再进行if判断。

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

用上述方法将输入的正整数反转,如将12345变成54321。
先取出个位数5,然后乘以10加上取出的4,循环如此。

num = int(input('num = '))
reversed_num = 0
while num > 0:
    reversed_num = reversed_num * 10 + num % 10
    num //= 10
print(reversed_num)

2.百钱买百鸡

公鸡5元一只,母鸡3元一只,小鸡1元一只,用100块钱买一百只鸡,问公鸡、母鸡、小鸡各有多少只?

把公鸡、母鸡、小鸡的数量用x、y、z来表示。
如果都用来买公鸡,x最大可取20,range(0,20)从0开始。
同理y最大可取33,z用总数和减x、y。

for x in range(0,20):
    for y in range(0,33):
        z = 100-x-y
        if 5*x+3*y+z/3==100:
            print('公鸡:%d只,母鸡:%d只,小鸡:%d只' % (x,y,z))

两层for循环一项一项穷举,也称为暴力搜索法,很慢,但是一定可以找出答案。

3.CRAPS赌博游戏

第一次掷骰子,点数和为7或11,则玩家胜;点数和为2、3或12,玩家输。
点数和为其他则继续掷。
第二次掷骰子,点数和与第一次掷相同,则玩家胜;点数和为7,则玩家输。
点数和为其他则继续掷。往后的输赢条件与第二次相同。

image

from random import randint

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

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

    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:
        loopFlag = True

    while loopFlag:
        loopFlag = False
        current = randint(1, 6) + randint(1, 6)
        print('玩家摇出了%d点' % current)

        if current == 7:
            print('庄家胜')
            money -= debt
        elif current == first:
            print('玩家胜')
            money += debt
        else:
            loopFlag = True

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

image

4.生成斐波那契数列的前20个数

斐波那契数列:前两个数都是1,从第三个数开始,每个数都是它前面两个数的和,如:1,1,2,3,5,8,13,21……;又称为黄金分割数列、兔子数列。

a = 0
b = 1
for _ in range(20):
    a, b = b, a + b
    print(a, end=',')

下划线_表示一个循环变量,类似于其他语言for循环中的i,j。
a,b = b,a+b可以写为(a,b) = (b,a+b),先计算右边括号的,再赋值给左边的a和b。end = ','表示用逗号代替换行结尾。

image

5.找出10000以内的完美数

完美数:所有的真因子的和恰好等于它本身,如6 = 1+2+3;28 = 1+2+4+7。
又称为完全数或完备数,真因子(除了自身以外的因子)。

math.sqrt()函数表示开平方根,如math.sqrt(9) = 3。
为什么因子只取到开平方?
比如6开平方根之后得到2.4,因子有如下,每对因子,必定一个大于2.4,一个小于2.4,如果12.4中没有因子,那么2.46中也没有因子,因此只需判断1~根号(x)中是否有因子。
1×6
2×3
3×2
6×1

import math

for num in range(1, 10000):
    result = 0
    for factor in range(1, int(math.sqrt(num)) + 1):
        if num % factor == 0:  #是否是因子
            result += factor
            if factor > 1 and num // factor != factor: #因子是否大于1且不等于它本身
                result += num // factor
    if result == num:
        print(num)

6.输出100以内所有的素数

素数:只能被1和它自身整除的正整数,不包括1(因此从2开始)。
如:2,3,5,7,11,13,17,19

import math

for num in range(2, 100):
    is_prime = True
    for factor in range(2, int(math.sqrt(num)) + 1):
        if num % factor == 0:
            is_prime = False
            break
    if is_prime:
        print(num, end=',')

标签:10,Python,百钱,斐波,range,num,factor,print,100
From: https://www.cnblogs.com/zhishu/p/16913841.html

相关文章

  • 【推荐】最常见的三种Python字符串格式化的方法!
    在嵌入式编程中,我们可以使用Python辅助编程,尤其在验证一些算法上特别好使。今天给大家介绍几种Python字符串格式化的方法,希望能够帮助到大家,以下是详细的内容:第一种......
  • python基础-面向对象
    1.面向对象  面向对象编程是在面向过程编程的基础上发展来的,它比面向过程编程具有更强的灵活性和扩展性,所以可以先了解下什么是面向过程编程:  面向过程编程的核心是......
  • Python日学壹技:性能分析
    导读相信日常使用Python作为生产力的读者,一定会存在想要分析代码中每一行的运行时间与变量占用内存大小的需求,本文主要分析两个模块,用于分析每行代码的内存使用情况和运行......
  • 1python解释器的下载和安装
    1.1python解释器:一款用于执行python代码的应用程序。下载网址:https://www.python.org/downloads选择自定义安装,添加环境变量1.2pycharm下载和配置安装完成后进行许可证激......
  • python multiprocessing使用容易遇到的坑记录随笔
    python因为有GIL(GlobalInterpreterLock)锁的问题,所以在计算密集型程序中,推荐使用multiprocessing多进程编程。在使用multiprocessing创建子进程时,很容易遇到一个不易发现......
  • day02 Python基础
    1.Python语法1.1编码使用工具写汉字、字母、数字,写完之后,你是需要保存到硬盘上卢慧yyds66601010101010101101010101001010101000111101一套编......
  • day01 环境搭建及python介绍
    1.Typora安装为什么要使用Typora的软件呢?是因为程序员不只是写代码这一件事,还需要给编写的代码写README文档,这个文档是说明程序如何使用的,README编写使用的就是Markd......
  • Python 中 -m 的典型用法、原理解析与发展演变
    在命令行中使用Python时,它可以接收大约20个选项(option),语法格式如下:python[-bBdEhiIOqsSuvVWx?][-ccommand|-mmodule-name|script|-][args]本文想要聊聊比较......
  • Python 依赖库管理哪家强?pipreqs、pigar、pip-tools、pipdeptree 任君挑选
    在Python的项目中,如何管理所用的全部依赖库呢?最主流的做法是维护一份“requirements.txt”,记录下依赖库的名字及其版本号。那么,如何来生成这份文件呢?在上篇文章《​​由浅......
  • 开发者请注意:Python2 的最后版本将于 4 月发布,但它确实是在 1 月 1 日就寿命终止了!
    2020年1月1日是Python2的寿命终止日,这个日期在两年前经"Python之父"GuidovanRossum宣布,此后一直成为开发者社区翘首以盼的一天。昨天就是这个大快人心的日子,各种......