鱼C论坛

 找回密码
 立即注册
查看: 2032|回复: 10

[已解决]就是想实现每次输入数字都校验是否为数字,一直不好用,求助

[复制链接]
发表于 2020-10-23 16:53:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import random
print ("测试")
secret=random.randint(1,100)
temp=input("请输入一个1-100的整数:")
while not temp.isdigit():
    temp = input("数据类型错误,请输入一个正确的整数:")
while temp.isdigit():
    guess=int(temp)
    if guess==secret:
        print("你猜对了")
    else:
        if guess>secret:
                print("大了,大了")
                temp=input("请重新输入:")
        else:
                print("小了小了")
                temp=input("请重新输入:")
print("不玩了,游戏结束")
————————————————————
求大大们帮忙
最佳答案
2020-10-23 17:35:34
XX牛牛 发表于 2020-10-23 17:08
测试
请输入一个1-100的整数:s
数据类型错误,请输入一个正确的整数:s
import random

print ("测试")
secret=random.randint(1,100)
temp=input("请输入一个1-100的整数:")

while True:
    if not temp.isdigit():
        temp = input("数据类型错误,请输入一个正确的整数:")
        
    elif int(temp)==secret:
        print("你猜对了")
        break
    else:
        if int(temp)>secret:
                print("大了,大了")
                temp=input("请重新输入:")
        else:
                print("小了小了")
                temp=input("请重新输入:")
print("不玩了,游戏结束")
额,这样就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-23 17:01:36 | 显示全部楼层
???啥,你那个判断不就是判断了他是不是输入的整数了吗,是不能跳出循环吗,能加个break就行了啊
import random
print ("测试")
secret=random.randint(1,100)
temp=input("请输入一个1-100的整数:")
while not temp.isdigit():
    temp = input("数据类型错误,请输入一个正确的整数:")
while temp.isdigit():
    guess=int(temp)
    if guess==secret:
        print("你猜对了")
        break
    else:
        if guess>secret:
                print("大了,大了")
                temp=input("请重新输入:")
        else:
                print("小了小了")
                temp=input("请重新输入:")
print("不玩了,游戏结束")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-23 17:08:37 | 显示全部楼层
qq1484730945 发表于 2020-10-23 17:01
???啥,你那个判断不就是判断了他是不是输入的整数了吗,是不能跳出循环吗,能加个break就行了啊

测试
请输入一个1-100的整数:s
数据类型错误,请输入一个正确的整数:s
数据类型错误,请输入一个正确的整数:2
小了小了
请重新输入:f
不玩了,游戏结束
>>>
不行啊,重新输入一个非数字,就直接显示“不完了”,没有任何校验了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-23 17:35:34 | 显示全部楼层    本楼为最佳答案   
XX牛牛 发表于 2020-10-23 17:08
测试
请输入一个1-100的整数:s
数据类型错误,请输入一个正确的整数:s
import random

print ("测试")
secret=random.randint(1,100)
temp=input("请输入一个1-100的整数:")

while True:
    if not temp.isdigit():
        temp = input("数据类型错误,请输入一个正确的整数:")
        
    elif int(temp)==secret:
        print("你猜对了")
        break
    else:
        if int(temp)>secret:
                print("大了,大了")
                temp=input("请重新输入:")
        else:
                print("小了小了")
                temp=input("请重新输入:")
print("不玩了,游戏结束")
额,这样就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-23 17:38:03 | 显示全部楼层
本帖最后由 coolliqing 于 2020-10-23 17:55 编辑

不需要用那么多while循环和input()函数,在合适的位置使用break和continue跳出循环就行,在你代码基础上改了一下,这样就可以了。

import random

print("测试")
secret = random.randint(1, 100)
while True:
    temp = input("请输入一个1-100的整数:")
    if temp == 'exit':
        break
    elif not temp.isdigit():
        print('数据类型错误,请输入一个正确的整数')
        continue
    else:
        guess = int(temp)
        if guess == secret:
            print("你猜对了")
            break
        else:
            if guess > secret:
                print("大了,大了")
                continue
            else:
                print("小了小了")
                continue
print("不玩了,游戏结束")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-23 20:31:36 | 显示全部楼层
coolliqing 发表于 2020-10-23 17:38
不需要用那么多while循环和input()函数,在合适的位置使用break和continue跳出循环就行,在你代码基础上 ...

太感谢了,因为2楼先答得,最佳答案给他了,依然谢谢你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-23 20:35:39 | 显示全部楼层
coolliqing 发表于 2020-10-23 17:38
不需要用那么多while循环和input()函数,在合适的位置使用break和continue跳出循环就行,在你代码基础上 ...

又看了一遍,你这个函数用的少,真是赞
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-23 20:46:02 | 显示全部楼层
coolliqing 发表于 2020-10-23 17:38
不需要用那么多while循环和input()函数,在合适的位置使用break和continue跳出循环就行,在你代码基础上 ...

if temp == 'exit'
麻烦再问一下,这个语句是什么意思?
正常理解,判断temp是否和字符串"exit"相等
然而这里看起来毫不相干,而偏偏你的语句还是正确的,百度了查不到,还得麻烦你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-23 23:41:25 | 显示全部楼层
XX牛牛 发表于 2020-10-23 20:46
if temp == 'exit'
麻烦再问一下,这个语句是什么意思?
正常理解,判断temp是否和字符串"exit"相等

翻译过来的话就是出口,退出的意思,如果用户输入exit就退出该程序,因为编程都是英语来整的,啊,发现好多大佬都是甩一堆代码不讲所以然的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-23 23:59:36 | 显示全部楼层
本帖最后由 io37 于 2020-10-24 00:02 编辑

import random
secret = random.randint(1,100)
while True:
    temp = input("请输入一个1-100的整数:")
    if temp.isdigit():
        guess = int(temp)
        if guess == secret:
            print("你猜对了")
            break
        else:
            if guess > secret:
                print("大了大了,请重新输入")
            else:
                print("小了小了,请重新输入")
    else:
        print("数据类型错误,请输入一个正确的整数")
print("不玩了,游戏结束")



========================================
我也是没学多久 拿你的改一下温习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-24 09:16:42 | 显示全部楼层
XX牛牛 发表于 2020-10-23 20:46
if temp == 'exit'
麻烦再问一下,这个语句是什么意思?
正常理解,判断temp是否和字符串"exit"相等

晚上回去没上论坛回复晚了,你的代码随机数是1-100的,范围比较大,没有设置猜测次数限制,如果猜不到就会一直循环,设置这句判断用户是否输入的是字符串exit,如果是的话就跳出循环,结束游戏。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 07:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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