smandjd 发表于 2022-12-22 01:26:59

while学的有点迷糊

球球哪路大神给解释一下
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 06:46:31

==代表的是判断两边的变量或者值是否相等
=代表的是给左边的变量赋予右边的值

tommyyu 发表于 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("请输入一个整数:")

heidern0612 发表于 2022-12-22 10:52:39

为啥用type,type用的次数很少。

无理想的闲鱼 发表于 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

有需求再提
页: [1]
查看完整版本: while学的有点迷糊