屁哥 发表于 2017-12-29 01:06:41

第四课 课后题 求助 guess = int(temp)

import random
secret = random.randint(1,10)
print('============我爱鱼C工作室==============')
temp = input('不妨猜一下小甲鱼心里想的数字是多少:')
guess = int(temp)
while guess != secret:
    temp = input('haha,猜错喽!!!:')
    if guess == secret:
      print('握草这你都猜的到?')
      print('哼哼,猜中了也没有奖励哦!')
    else:
      if guess > secret:
            print('错了,大了大了')
      else:
            print('呵呵,小了小了啊')
print('游戏结束,不完喽!!!')


看着这里i guess = int(temp)是重复 定义了一遍把temp转换成整型 为什么循环上面有一次定义了循环里面还要没循环一次 都定义一遍呢?
然后我把循环里面的 定义整型 去掉了 就填什么数字 都提示小.......................

theonen 发表于 2017-12-29 03:40:47

因为你把while循环里的guess变量去掉之后,就只有while前面那个guess被赋值了,while只能用这个值
而且你每次输入的数字都被赋值到循环内的temp上,相当于循环前面的guess的值永远是第一次你输入的那个数
所以要小一直小,要大一直大。
import random
secret = random.randint(1,10)
print('============我爱鱼C工作室==============')
temp = input('不妨猜一下小甲鱼心里想的数字是多少:')
guess = int(temp)
#这个guess是你第一次赋的值
while guess != secret:
    temp = input('haha,猜错喽!!!:')
    guess = int(temp)#你之后赋的值都在这,去掉它,就只有上面的能用了
    if guess == secret:
      print('握草这你都猜的到?')
      print('哼哼,猜中了也没有奖励哦!')
    else:
      if guess > secret:
            print('错了,大了大了')
      else:
            print('呵呵,小了小了啊')
print('游戏结束,不完喽!!!')

BngThea 发表于 2017-12-29 07:48:40

python中的变量不用定义,直接赋值使用即可
int()的作用不是定义,而是将temp强制转化为整形,因为input返回的类型为字符串,如果不强制转换,后面的比较是用数字和字符串比较,结果永远为假,所以肯定走最后的else分支

紫夜之恋 发表于 2017-12-29 08:48:32

循环外面用int是为了把字符串转成整型,因为input接收的是字符串。

而循环里面是错了之后temp又接收了用户一个输入。guess = int(temp)这句其实有两个作用,一是:字符串转整型;二是给guess赋值,因为后面if判断条件有guess。

紫夜之恋 发表于 2017-12-29 09:16:34

哦 稍作补充,如果没有在循环里面给guess赋值,那么guess在第一次赋值之后就固定了,后面用户的输入并没有起到任何作用

胖嘟嘟的女屌丝 发表于 2017-12-29 09:45:23

print('----------我爱鱼C工作室----------')
import random#调用random函数
secret = random.randint(1,10)#随机生成一个1-10的数字
temp = input("不妨试一下小甲鱼现在心里想的是哪个数字:")
guess = int(temp)#用户输入的数字传给guess
while guess != secret :
    temp = input("哎呀,猜错了,请重新输入吧:")
    guess = int(temp)#循环再次输入并传给guess,若不输入,则进入死循环
    if guess ==secret :
      print("卧槽,你是小甲虫心里的蛔虫嘛?!")
      print("哼,猜中了也没有奖励!")
    else :
      if guess > secret :
            print("哥,大了大了~~~")
      else :
            print("嘿,小了小了~~~")
print("不玩啦,游戏结束")

胖嘟嘟的女屌丝 发表于 2017-12-29 09:48:34

胖嘟嘟的女屌丝 发表于 2017-12-29 09:45
print('----------我爱鱼C工作室----------')
import random#调用random函数
secret = random.randint(1, ...

第二次guess = int(temp)int是把temp 强制转换, 如果不转换接收的就是字符串,后面没法比较,而且你的不对,你上面 直接把 guess 和 secret 进行比较 ,你少了 把 temp 赋值给 guess,这里的得到的guess 还是上面第一次 的 所以会一直进行循环,进入死循环

屁哥 发表于 2017-12-29 17:31:35

theonen 发表于 2017-12-29 03:40
因为你把while循环里的guess变量去掉之后,就只有while前面那个guess被赋值了,while只能用这个值
而且你 ...

a明白了   循环的时候是执行while里面的 temp这个变量的赋值和 上面的temp没什么关系了
谢谢懂了

屁哥 发表于 2017-12-29 17:35:07

紫夜之恋 发表于 2017-12-29 08:48
循环外面用int是为了把字符串转成整型,因为input接收的是字符串。

而循环里面是错了之后temp又接收了用 ...

谢谢指导感激不尽 谢谢懂了

屁哥 发表于 2017-12-29 17:35:35

紫夜之恋 发表于 2017-12-29 09:16
哦 稍作补充,如果没有在循环里面给guess赋值,那么guess在第一次赋值之后就固定了,后面用户的输入并没有 ...

嗯呢 嗯

屁哥 发表于 2017-12-29 17:38:20

胖嘟嘟的女屌丝 发表于 2017-12-29 09:45
print('----------我爱鱼C工作室----------')
import random#调用random函数
secret = random.randint(1, ...

嗯呢 谢谢谢谢指导

屁哥 发表于 2017-12-29 17:40:05

胖嘟嘟的女屌丝 发表于 2017-12-29 09:48
第二次guess = int(temp)int是把temp 强制转换, 如果不转换接收的就是字符串,后面没法比较,而且你 ...

嗯呢知道了{:5_92:}

屁哥 发表于 2017-12-29 17:40:38

BngThea 发表于 2017-12-29 07:48
python中的变量不用定义,直接赋值使用即可
int()的作用不是定义,而是将temp强制转化为整形,因为input返 ...

谢谢指导

luoxy 发表于 2020-5-24 16:11:51

print("""用python设计第一个游戏---改进1""")
import random
num1 = random.randint(1,2)
times = 3
temp = input ("随意猜一个数字(最多三次机会):")
guess = int (temp)
while (guess!= num1) and (times>0) :
    if guess == num1:
      print("right")
      print("为啥出不来")
    else:
      if guess > num1 :
            print("大了")
      else:
            print("小了")
      times = times - 1
      if times>0:
            print("最后第" + str(times) + "次机会!")
            temp = input("请重新输入:")
            guess = int(temp)
      else:
            print("机会用光了··")
print("游戏结束")
                                 为啥right出不来呀
页: [1]
查看完整版本: 第四课 课后题 求助 guess = int(temp)