鱼C论坛

 找回密码
 立即注册
查看: 2152|回复: 18

[已解决]关于python中while的条件见问题

[复制链接]
发表于 2018-3-16 07:39:09 | 显示全部楼层 |阅读模式

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

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

x
请教,
        在判断while的条件(number != 8)是否为真时,条件内的变量(number)是否要在while前定义?不在while前定义判断条件内的变量,在while中定义该变量是否可行,为什么?????????
程序如下:

while nummber != 8:
  temp = input("请输入小甲鱼心中想的数值:")
  number = int(temp)
  if number == 8:
    print("你是小甲鱼心里的蛔虫吗")
  else:
    if number > 8:
      print("大了,大了")
    else:
      print("小了,小了")

编译时提示 number没有定义 的错误。

                                                                                谢谢!!
最佳答案
2018-3-16 08:09:32
变量在使用前必须定义(赋值)。
变量(number)是否要在while前定义?是的。
不在while前定义判断条件内的变量,在while中定义该变量是否可行,不行。
为什么?????????当while nummber != 8:这行时,如果没有定义,如何能判断为真为假,是该运行循环还是退出循环。造成逻辑混乱。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-16 08:09:32 | 显示全部楼层    本楼为最佳答案   
变量在使用前必须定义(赋值)。
变量(number)是否要在while前定义?是的。
不在while前定义判断条件内的变量,在while中定义该变量是否可行,不行。
为什么?????????当while nummber != 8:这行时,如果没有定义,如何能判断为真为假,是该运行循环还是退出循环。造成逻辑混乱。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-16 08:40:31 | 显示全部楼层
冬雪雪冬 发表于 2018-3-16 08:09
变量在使用前必须定义(赋值)。
变量(number)是否要在while前定义?是的。
不在while前定义判断条件内的 ...

楼上正解,水了一贴
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-16 08:52:58 | 显示全部楼层
有的语言可以在循环的结束位置再做判断,如
  1. do
  2.     循环内容
  3. while 条件
复制代码

这样就必然至少做一次循环的内容,我想楼主是想要这样的效果吧。
虽然python没有这样的语法,但可以改成:
  1. while True:
  2.     循环内容
  3.     赋值
  4.     if 判断:
  5.         break
  6.     循环内容
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-3-16 08:54:28 | 显示全部楼层
当然要之前定义。
   执行循环的时候先判断条件,如果成立,再进入循环体
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-16 09:15:29 | 显示全部楼层
肯定要先定义啊,否则进入循环的条件是否成立都无法判断,程序肯定要报错的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-16 09:47:06 | 显示全部楼层
BngThea 发表于 2018-3-16 08:54
当然要之前定义。
   执行循环的时候先判断条件,如果成立,再进入循环体

恩恩  知道了  谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-16 09:48:18 | 显示全部楼层
冬雪雪冬 发表于 2018-3-16 08:52
有的语言可以在循环的结束位置再做判断,如

这样就必然至少做一次循环的内容,我想楼主是想要这样的效果 ...

很详细  学习了  谢谢您
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-16 10:11:22 | 显示全部楼层
不先定义的话,程序不知道这个是什么东西,更不知道你想要往里面存储什么东西,就没法使用了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-16 10:27:50 | 显示全部楼层
是不是把“while number!=8”放到“number=int(temp)”后就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-16 10:36:05 | 显示全部楼层
numbeir必须在while前面定义
如果没有在while前面定义,则不能运行
while条件找不到number这个变量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-16 12:32:52 | 显示全部楼层
BngThea 发表于 2018-3-16 08:54
当然要之前定义。
   执行循环的时候先判断条件,如果成立,再进入循环体

您好:
这样写为什么不可以啊
while (int(input("请输入小甲鱼心里想的数值:")))!= 8:
  temp = input("请输入小甲鱼心中想的数值:")
  number = int(temp)
  if number == 8:
    print("你是小甲鱼心里的蛔虫吗")
  else:
    if number > 8:
      print("大了,大了")
    else:
      print("小了,小了")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-16 12:35:59 | 显示全部楼层
因为while循环条件每次循环都会进行一次,这里都是根据每次输入的数据来判断
逻辑上应该用下面的temp来判断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-16 13:10:13 | 显示全部楼层
楼主, 觉得问题解决了, 希望及时确认最佳答案!  留给论坛中各位鱼油更好的交流环境
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-16 16:33:15 | 显示全部楼层
BngThea 发表于 2018-3-16 12:35
因为while循环条件每次循环都会进行一次,这里都是根据每次输入的数据来判断
逻辑上应该用下面的temp来判 ...

请教:
我这样写可以吗?为什么我编译的时候会提示 "标识符中的无效字符"这样的错误,如果我只是想根据输入的值判断,可以吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-16 16:37:42 | 显示全部楼层
平淡最真 发表于 2018-3-16 16:33
请教:
我这样写可以吗?为什么我编译的时候会提示 "标识符中的无效字符"这样的错误,如果我只是想根据 ...

可以的,你的代码中感叹号是中文的,改成英文就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-16 21:28:23 | 显示全部楼层
想你应该明白了,但是发现一个问题,
你问了很多问题但是代码贴的不对啊,贴代码的话编辑框有一个<>  
点进去贴代码会更容易交流:如这样:
  1. def get_digits(n):
  2.     list1=[]
  3.     list2=[n%10]
  4.     if n<10:
  5.         return list2
  6.     else:
  7.         result=get_digits(n//10)
  8.         list1.extend(result)
  9.         list1.append(n%10)
  10.         return list1
  11.     return list1
  12. print(get_digits(456))
复制代码

希望对你有用!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-17 20:02:38 | 显示全部楼层
BngThea 发表于 2018-3-16 16:37
可以的,你的代码中感叹号是中文的,改成英文就行了

哦哦  抱歉   是我大意了  麻烦您了  非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-17 20:03:27 | 显示全部楼层
吴阿汤 发表于 2018-3-16 21:28
想你应该明白了,但是发现一个问题,
你问了很多问题但是代码贴的不对啊,贴代码的话编辑框有一个  
点进去 ...

哦哦  这个还真不知道   学习了  谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 11:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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