鱼C论坛

 找回密码
 立即注册
查看: 1138|回复: 11

求大神解答,为何while程序不工作

[复制链接]
发表于 2019-5-3 15:46:06 | 显示全部楼层 |阅读模式

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

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

x
求大神解答,为何while程序不工作
想要输入1 或者2 才执行下去,但是输入3或者其他也能继续执行下去,按照书上敲的代码  不懂为什么不行,求各位大神解答,谢谢谢谢

def chooseCave():
    cave = ''
    while cave != '1' and cave != '2':
        print('which cave will you go into?( 1 or 2)')
        cave =input()

        return cave

全部源代码
import random
import time

def displayIntro():
    print('''you are in a land full of dragons.in front of you,
you see two caves. In one cave,the dragon is friendly
and will share his treasure with you.The other dragon
is greedy and hungry,and will eat you on sight.''')
    print()

def chooseCave():
    cave = ''
    while cave != '1' and cave != '2':
        print('which cave will you go into?( 1 or 2)')
        cave =input()

        return cave

def checkCave(chosenCave):
    print('you approach the cave...')
    time.sleep(2)
    print('it is dark and spooky...')
    time.sleep(2)
    print('a large dragon jumps out in front of you! He opens his jaws and ...')
    print()
    time.sleep(2)

    friendlyCave = random.randint(1,2)

    if chosenCave == str(friendlyCave):
        print('gives you his traesure!')
    else:
        print('gbbles you down in one bite!')

playAgain = 'yes'
while playAgain == 'yes' or playAgain == 'y':

    displayIntro()
    caveNumber = chooseCave()
    checkCave(caveNumber)

    print('do you want to play again?(yes or no)')
    playAgain = input()
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-5-3 15:48:13 | 显示全部楼层
这是运行结果

which cave will you go into?( 1 or 2)
3
you approach the cave...
it is dark and spooky...
a large dragon jumps out in front of you! He opens his jaws and ...

gbbles you down in one bite!
do you want to play again?(yes or no)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-3 15:54:56 From FishC Mobile | 显示全部楼层
有咩出奇 发表于 2019-5-3 15:48
这是运行结果

which cave will you go into?( 1 or 2)

不等于1 并且不等于2  不就是排除了1 2吗

按你的想法应该是等等于1或者等等于2
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-3 16:59:32 | 显示全部楼层
wp231957 发表于 2019-5-3 15:54
不等于1 并且不等于2  不就是排除了1 2吗

按你的想法应该是等等于1或者等等于2

作者的意思好像是先让cave = ''  字符串
然后就符合  同时不等于1或2   while的结果为真,我也觉得有点问题,但是照敲下来不行,不懂了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-3 17:02:56 | 显示全部楼层
有咩出奇 发表于 2019-5-3 16:59
作者的意思好像是先让cave = ''  字符串
然后就符合  同时不等于1或2   while的结果为真,我也觉得有点 ...

为啥要看作者意思呢
为什么不是要看你自己的意思呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-3 17:03:05 | 显示全部楼层
这个和你输入什么没干系,开始就已经 把一个空字符串赋值给cave了(cave='')而while 判断的意思是cave 既不是1也不是2 就会返回ture 执行下面的 代码块 所以ChooseCave必然会执行
而你输入的是在while为ture 时候执行下面的cave = input()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-3 17:21:34 | 显示全部楼层
wp231957 发表于 2019-5-3 17:02
为啥要看作者意思呢
为什么不是要看你自己的意思呢

按照python游戏编程快速上手 这书敲的   刚刚开始学呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-3 17:23:14 | 显示全部楼层
吃饱了好撑 发表于 2019-5-3 17:03
这个和你输入什么没干系,开始就已经 把一个空字符串赋值给cave了(cave='')而while 判断的意思是cave 既 ...

我看代码也觉得   while的条件已经为真了,  但是怎么做到输入3 或其他 数字 字母  就跳回上一步重新输入呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-3 17:34:32 | 显示全部楼层
有咩出奇 发表于 2019-5-3 17:23
我看代码也觉得   while的条件已经为真了,  但是怎么做到输入3 或其他 数字 字母  就跳回上一步重新输入 ...
  1. def chooseCave():
  2.      cave = ''
  3.      while cave != '1' and cave != '2':
  4.          print('which cave will you go into?( 1 or 2)')
  5.          cave =input()

  6.      return cave
复制代码


单看这一个函数 ,该函数的功能就是返回一个输入值  这个值只能是 1 或 2  如果是其他的  就重新input
当然 它返回的不是一个数值型
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-3 22:32:24 | 显示全部楼层
wp231957 发表于 2019-5-3 17:34
单看这一个函数 ,该函数的功能就是返回一个输入值  这个值只能是 1 或 2  如果是其他的  就重新inpu ...

谢谢大神解惑    !
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-5 18:24:47 | 显示全部楼层
return进4?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-5 22:12:12 From FishC Mobile | 显示全部楼层
你没加括号吧……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-15 15:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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