XX牛牛 发表于 2020-10-23 16:53:24

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

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("不玩了,游戏结束")
————————————————————
求大大们帮忙

qq1484730945 发表于 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("不玩了,游戏结束")

XX牛牛 发表于 2020-10-23 17:08:37

qq1484730945 发表于 2020-10-23 17:01
???啥,你那个判断不就是判断了他是不是输入的整数了吗,是不能跳出循环吗,能加个break就行了啊

测试
请输入一个1-100的整数:s
数据类型错误,请输入一个正确的整数:s
数据类型错误,请输入一个正确的整数:2
小了小了
请重新输入:f
不玩了,游戏结束
>>>
不行啊,重新输入一个非数字,就直接显示“不完了”,没有任何校验了

qq1484730945 发表于 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("不玩了,游戏结束")

额,这样就好了

coolliqing 发表于 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("不玩了,游戏结束")

XX牛牛 发表于 2020-10-23 20:31:36

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

太感谢了,因为2楼先答得,最佳答案给他了,依然谢谢你

XX牛牛 发表于 2020-10-23 20:35:39

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

又看了一遍,你这个函数用的少,真是赞

XX牛牛 发表于 2020-10-23 20:46:02

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

if temp == 'exit'
麻烦再问一下,这个语句是什么意思?
正常理解,判断temp是否和字符串"exit"相等
然而这里看起来毫不相干,而偏偏你的语句还是正确的,百度了查不到,还得麻烦你

qq1484730945 发表于 2020-10-23 23:41:25

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


翻译过来的话就是出口,退出的意思,如果用户输入exit就退出该程序,因为编程都是英语来整的,啊,发现好多大佬都是甩一堆代码不讲所以然的{:10_277:}{:10_277:}

io37 发表于 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("不玩了,游戏结束")

========================================
{:10_266:} 我也是没学多久 拿你的改一下温习

coolliqing 发表于 2020-10-24 09:16:42

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


晚上回去没上论坛回复晚了,你的代码随机数是1-100的,范围比较大,没有设置猜测次数限制,如果猜不到就会一直循环,设置这句判断用户是否输入的是字符串exit,如果是的话就跳出循环,结束游戏。
页: [1]
查看完整版本: 就是想实现每次输入数字都校验是否为数字,一直不好用,求助