吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 794|回复: 24

[Python] 手把手教你用Python制作一个随机数生成程序

[复制链接]
Alex27933 发表于 2020-8-2 15:32
本帖最后由 Alex27933 于 2020-8-2 15:40 编辑

前言

如果对Python完全不懂,请阅读我之前的贴文:Python笔记(从不懂到入门)补充版
(链接:https://www.52pojie.cn/thread-1225969-1-1.html )这篇文章跟我那篇文章相配合。此文不适合熟悉Python的人士,只适合刚刚学习Python的人。

1. 订立制作目标

做任何程序(生活也是如此)之前,必须做一个规划,就是说你想做什么、你想做到什么。

目标:

  1. 输入两个数字,一个是最低值,一个是最高值
  2. 随机生成一个数字
    重复:
  3. 问他需不需要再生成或者关闭程序
  4. 重复运行第1-3的代码

    2. 制作所需函数或模块

    根据‘目标’,估算所需函数或者模块

    1. 输入两个数字,一个是最低值,一个是最高值 (变量、input函数、int数据类型)
    2. 随机生成一个数字 (random模块、print函数)
      重复:
    3. 问他需不需要再生成或者关闭程序 (exit函数、if函数、input函数、变量、int数据类型)
    4. 重复运行第1-3的代码 (while函数)

3. 开始制作

1. 第一步(import模块)

由于Python经常把模块放在最前,所以首先要import(载入、输入)函数。

  1. 随机生成一个数字 (random模块、print函数)
  2. 问他需不需要再生成或者关闭程序 (exit函数、if函数、input函数、变量、int数据类型)
    import random #由于random模块系统自带,不需要pip安装模块
    from sys import exit #同上,意思为:从系统载入模块

2. 第二步

  1. 输入两个数字,一个是最低值,一个是最高值 (变量、input函数、int数据类型)

我用‘low’代表最低值;‘high’代表最高值
备注:由于复杂程序需要用到很多变量,所以最好变量命名是跟该代码有关,以免混淆

import random #由于random模块系统自带,不需要pip安装模块
from sys import exit #同上,意思为:从系统载入模块
low=int(input('输入最低值:'))
high=int(input('输入最高值:'))

3. 第三步

  1. 随机生成一个数字 (random模块、print函数)

    random 函数格式

    random.randint(最低值,最高值)

import random #由于random模块系统自带,不需要pip安装模块
from sys import exit #同上,意思为:从系统载入模块
low=int(input('输入最低值:'))
high=int(input('输入最高值:'))
print(random.randint(low,high))

4. 第四步

  1. 问他需不需要再生成或者关闭程序 (exit函数、if函数、input函数、变量、int数据类型)

用‘ask’代表回答

import random #由于random模块系统自带,不需要pip安装模块
from sys import exit #同上,意思为:从系统载入模块
low=int(input('输入最低值:'))
high=int(input('输入最高值:'))
print(random.randint(low,high))
ask=int(input('输入1代表继续,0代表结束程序,请输入:'))
if ask==1:
    print('继续')
elif ask==0:
    exit()
else:
    print(输入有误,请重新输入。)

对了,如何弄最后那句重新输入?
这就要用到while函数了。

import random #由于random模块系统自带,不需要pip安装模块
from sys import exit #同上,意思为:从系统载入模块
low=int(input('输入最低值:'))
high=int(input('输入最高值:'))
print(random.randint(low,high))
ask=int(input('输入1代表继续,0代表结束程序,请输入:'))
while ask==0 or 1:
    if ask==1:
        print('继续')
    elif ask==0:
        exit()
    else:
        print('输入有误,请重新输入。')

5. 第五步

  1. 重复运行第1-3的代码 (while函数)
    import random #由于random模块系统自带,不需要pip安装模块
    from sys import exit #同上,意思为:从系统载入模块
    while ask==1:
    low=int(input('输入最低值:'))
    high=int(input('输入最高值:'))
    print(random.randint(low,high))
    ask=int(input('输入1代表继续,0代表结束程序,请输入:'))
    while ask==0 or 1:
    if ask==1:
    print('继续')
    elif ask==0:
    exit()
    else:
    print('输入有误,请重新输入。')

3. 运行并debug(解决错误)

第一次运行

运行截图:
aYMfxg.png

Bug 错误

Traceback (most recent call last):
File "C:/Users/abc/Documents/Python/随机数生成.py", line 3, in <module>
while ask==1:
NameError: name 'ask' is not defined

最重要的还是最后一句:未定义名称‘Ask’

debug

要在前面新增一句ask=1
完整代码:

import random #由于random模块系统自带,不需要pip安装模块
from sys import exit #同上,意思为:从系统载入模块
ask=1
while ask==1:
    low=int(input('输入最低值:'))
    high=int(input('输入最高值:'))
    print(random.randint(low,high))
    ask=int(input('输入1代表继续,0代表结束程序,请输入:'))
    while ask==0 or 1:
        if ask==1:
            print('继续')
        elif ask==0:
            exit()
        else:
            print('输入有误,请重新输入。')

第二次运行

aYQ4fK.png

bug

看上图,可以见到再不停运行,如何解决?

debug

我们可以用break放在print('继续')后面。

import random #由于random模块系统自带,不需要pip安装模块
from sys import exit #同上,意思为:从系统载入模块
ask=1
while ask==1:
    low=int(input('输入最低值:'))
    high=int(input('输入最高值:'))
    print(random.randint(low,high))
    ask=int(input('输入1代表继续,0代表结束程序,请输入:'))
    while ask==0 or 1:
        if ask==1:
            print('继续')
            break
        elif ask==0:
            exit()
        else:
            print('输入有误,请重新输入。')

第三次运行

aYMxsJ.png

bug

问题如上,不多说,都是加break

debug

import random #由于random模块系统自带,不需要pip安装模块
from sys import exit #同上,意思为:从系统载入模块
ask=1
while ask==1:
    low=int(input('输入最低值:'))
    high=int(input('输入最高值:'))
    print(random.randint(low,high))
    ask=int(input('输入1代表继续,0代表结束程序,请输入:'))
    while ask==0 or 1:
        if ask==1:
            print('继续')
            break
        elif ask==0:
            exit()
        else:
            print('输入有误,请重新输入。')
            break

第四次运行

aYQYLj.png

Bug

输入错误后,不能重新输入

  • 原因:加了break

    debug

    import random #由于random模块系统自带,不需要pip安装模块
    from sys import exit #同上,意思为:从系统载入模块
    ask=1
    while ask==1:
    low=int(input('输入最低值:'))
    high=int(input('输入最高值:'))
    print(random.randint(low,high))
    ask=int(input('输入1代表继续,0代表结束程序,请输入:'))
    while ask==0 or 1:
        if ask==1:
            print('继续')
            break
        elif ask==0:
            exit()
        else:
            print('输入有误,请重新输入。')
        ask=1

    P.S. 这个方法不算最好,但是实在想不出更好的方法,欢迎大佬在评论区指导。


    第五次运行

    aYlF7n.png
    程序尚算成功。


    后话

    希望这个教程可以让新手慢慢学会制作一个程序。如有疑问,欢迎在评论区留言。如果觉得这篇文章对你有用,欢迎评分

免费评分

参与人数 5吾爱币 +11 热心值 +5 收起 理由
aa吴所谓 + 1 + 1 用心讨论,共获提升!
Harrisonwells + 1 + 1 用心讨论,共获提升!
花火酱 + 1 + 1 用心讨论,共获提升!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
alittlebear + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| Alex27933 发表于 2020-8-2 15:44
源代码我放在了Gitee(链接:https://gitee.com/alex27933/mypython/tree/master/%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%94%9F%E6%88%90%E7%A8%8B%E5%BA%8F)
alittlebear 发表于 2020-8-2 15:55
import random

ask=1

while ask==1:

    low=int(input('输入最低值:'))
    high=int(input('输入最高值:'))

    print(random.randint(low,high))

    while True:

        ask=int(input('输入1继续,输入0结束:'))

        if ask==1:
            print('继续')
            break
        elif ask==0:
            exit()
        else:
            print('输入有误,请重新输入。')


这样呢?

免费评分

参与人数 2吾爱币 +1 热心值 +2 收起 理由
EVANLEE + 1 + 1 我很赞同!
Alex27933 + 1 我很赞同!

查看全部评分

alittlebear 发表于 2020-8-2 16:55
windy_ll 发表于 2020-8-2 16:45
low = input()
high = input()
while 条件:
import random

ask=1

while True:

    if ask == 1:
        low=int(input('输入最低值:'))
        high=int(input('输入最高值:'))

        print(random.randint(low,high))

    elif ask == 0:
        exit()

    else:
        print('输入有误,请重新输入。')

    ask=int(input('输入1继续,输入0结束:'))

确实一个while就做到了!

dessert233 发表于 2020-8-4 13:34
说的很详细!谢谢大佬,刚刚跟着操作了一遍,nice
windy_ll 发表于 2020-8-2 15:38
一个while循环就能搞定的事情不明白为啥子要用两个

点评

第二个while感觉应该就是判断是否继续的 不加第二个while也可以,但是就没有 输入有误,请重新输入。 这个“功能”了 小白勿喷膜拜大佬  详情 回复 发表于 2020-8-2 15:46
alittlebear 发表于 2020-8-2 15:44
说的很详细!

我认为把:ask=int( 这个放到第二个while里面要不要?

输入有误,请重新输入。

不然这个输入有误==继续 了
alittlebear 发表于 2020-8-2 15:46
windy_ll 发表于 2020-8-2 15:38
一个while循环就能搞定的事情不明白为啥子要用两个

第二个while感觉应该就是判断是否继续的

不加第二个while也可以,但是就没有

输入有误,请重新输入。

这个“功能”了

小白勿喷膜拜大佬
Ldfd 发表于 2020-8-2 16:26
好水啊~~~~,(反正比辣鸡csdn强)
追逐太阳 发表于 2020-8-2 16:37
你这个是新手嘛??这是做的笔记??
追逐太阳 发表于 2020-8-2 16:38
不过,这句话说的不错。

做任何程序(生活也是如此)之前,必须做一个规划,就是说你想做什么、你想做到什么。
windy_ll 发表于 2020-8-2 16:45
alittlebear 发表于 2020-8-2 15:46
第二个while感觉应该就是判断是否继续的

不加第二个while也可以,但是就没有

low = input()
high = input()
while 条件:
    if 条件:
        输入有误
    if 条件:
        正常输出
    low = input()
    high = input()

点评

[md]```python import random ask=1 while True: if ask == 1: low=int(input('输入最低值:')) high=int(input('输入最高值:')) print(random.randint(low,high))  详情 回复 发表于 2020-8-2 16:55
大佬666  详情 回复 发表于 2020-8-2 16:52

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
alittlebear + 1 + 1 膜拜大佬!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2020-8-14 16:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表