鱼C论坛

 找回密码
 立即注册
查看: 2932|回复: 4

[已解决]while学的有点迷糊

[复制链接]
发表于 2022-12-22 01:26:59 | 显示全部楼层 |阅读模式

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

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

x
球球哪路大神给解释一下
import random
secret = random.randint(1,10)
times = 2
temp = input("不妨猜一下小甲鱼现在心里想的那个数字:")
while type(temp) == type(1):                                                     #感觉这个不应该是while type(temp) != type(1):    但是这个运行起来是相反的,==这个是正确的,很奇怪
        print("抱歉,输入不合法,",end='')
        temp = input("请输入一个整数:")
guss = int(temp)
if guss == secret:
        print("哇草,你是小甲鱼心里的蛔虫吗?")
        print("哼,猜中了也没有奖励!")
else:
    while guss != secret and times >0:
        guss = int(temp)
        if guss == secret:
            print("bingo!终于答对了")
            print("哈哈,答对了也没有奖励!")
        else:
            if guss > secret:
                print("猜错了,大了大了~")
            else:
                print("猜错了,小了,小了!")
               
            temp = input("重新输入一个吧:")
            while type(temp) == type(1):                                         #感觉这个不应该是while type(temp) != type(1):    但是这个运行起来是相反的,==这个是正确的,很奇怪
                print("抱歉,输入不合法,",end='')
                temp = input("请输入一个整数:")
            times = times - 1
    print("机会用光了哦!")
                    
print("游戏结束,不玩啦!")
最佳答案
2022-12-22 16:29:55
本帖最后由 无理想的闲鱼 于 2022-12-22 16:31 编辑
import random
secret = random.randint(1, 10) #秘密是1到9中任意一个整数
times = 2
temp = input("不妨猜一下小甲鱼现在心里想的那个数字:") # input()输入的内容属于str 类型的数据
while type(temp) == type(1):#str和int永远不能相等
    print("抱歉,输入不合法,",end="")
首先,你要明白input()输入的内容属于str 类型的数据,str和int永远不能相等
其次,我帮你整理了一下,
import random
secret = random.randint(1,10)
times = 2
guess = int(input("不妨猜一下小甲鱼现在心里想的那个数字(范围1-9):"))#将temp的类型转化成int
while guess < 1 or guess > 9:#如果输入的数字不合法,会让你一直输入正确位置才进行下一步
    print("抱歉,输入不合法,请再输入一次")
    guess = int(input("不妨猜一下小甲鱼现在心里想的那个数字(范围1-9):"))
while times > 0: #我设置的是2次机会
    if times == 2:
        if guess == secret:
            print("你是小甲鱼心里的蛔虫吗?","哼,猜中了也没有奖励",sep="\n")
            break #猜中了就跳出while循环
        elif guess > secret:
        #elif 在Python语言中可用于代替如下斜体加粗的部分(else-if)
        #在guess != secret的条件下,再多一个条件
            print("猜错了,大了大了~")
        elif guess < secret:
            print("猜错了,小了,小了!")
    if times == 1:
        guess == int(input("重新输入一个吧:"))
        if guess == secret:
            print("bingo!终于答对了","哈哈,答对了也没有奖励!",sep="\n")
        else:
            print("没猜中哦,机会用光了哦!")
    times -= 1 #简写版,就相当于times = times - 1

有需求再提
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-22 06:46:31 | 显示全部楼层
==代表的是判断两边的变量或者值是否相等
=代表的是给左边的变量赋予右边的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-22 07:21:31 | 显示全部楼层
本帖最后由 tommyyu 于 2022-12-22 09:41 编辑

不论是 == 还是 != ,都是错误的。temp 是一个字符串类型的变量,在没有被 int 函数变成 整数前,type(temp) == type(1)永远不成立,type(temp) != type(1) 永远成立。
可以使用 isdecimal() 方法,如果字符串内全是数字则返回 True,否则返回 False。这样改:
while not temp.isdecimal():                                                     
        print("抱歉,输入不合法,",end='')
        temp = input("请输入一个整数:")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-22 10:52:39 | 显示全部楼层
为啥用type,type用的次数很少。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-22 16:29:55 | 显示全部楼层    本楼为最佳答案   
本帖最后由 无理想的闲鱼 于 2022-12-22 16:31 编辑
import random
secret = random.randint(1, 10) #秘密是1到9中任意一个整数
times = 2
temp = input("不妨猜一下小甲鱼现在心里想的那个数字:") # input()输入的内容属于str 类型的数据
while type(temp) == type(1):#str和int永远不能相等
    print("抱歉,输入不合法,",end="")
首先,你要明白input()输入的内容属于str 类型的数据,str和int永远不能相等
其次,我帮你整理了一下,
import random
secret = random.randint(1,10)
times = 2
guess = int(input("不妨猜一下小甲鱼现在心里想的那个数字(范围1-9):"))#将temp的类型转化成int
while guess < 1 or guess > 9:#如果输入的数字不合法,会让你一直输入正确位置才进行下一步
    print("抱歉,输入不合法,请再输入一次")
    guess = int(input("不妨猜一下小甲鱼现在心里想的那个数字(范围1-9):"))
while times > 0: #我设置的是2次机会
    if times == 2:
        if guess == secret:
            print("你是小甲鱼心里的蛔虫吗?","哼,猜中了也没有奖励",sep="\n")
            break #猜中了就跳出while循环
        elif guess > secret:
        #elif 在Python语言中可用于代替如下斜体加粗的部分(else-if)
        #在guess != secret的条件下,再多一个条件
            print("猜错了,大了大了~")
        elif guess < secret:
            print("猜错了,小了,小了!")
    if times == 1:
        guess == int(input("重新输入一个吧:"))
        if guess == secret:
            print("bingo!终于答对了","哈哈,答对了也没有奖励!",sep="\n")
        else:
            print("没猜中哦,机会用光了哦!")
    times -= 1 #简写版,就相当于times = times - 1

有需求再提
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 05:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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