鱼C论坛

 找回密码
 立即注册
查看: 2568|回复: 14

[已解决]Python菜鸡求助

[复制链接]
发表于 2020-3-22 00:50:37 From FishC Mobile | 显示全部楼层 |阅读模式

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

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

x
本来想要练习一下小甲鱼的文字游戏于是乎菜鸡的我写了下面一串:
input('wo shi ni baba ma?:')
AB = input
if AB == 'shi':
    print('ni zhen niu bi!')
else:
    print('bu wo jiu shi!')
运行后得到以下的东西
wo shi ni baba ma?:shi
bu wo jiu shi
经过摸索发现自己想要表达的意思的正确写法应该是:
AB = input('wo shi ni baba ma?:')
if AB == 'shi':
    print('ni zhen niu bi!')
else:
    print('bu wo jiu shi!')
得到的答案页数我想要的。这时候问题就出来了,我明白了我第一次写的AB=Input对于我想要表达的东西是没意义的,但是这第一次的整串代码到底表达的是什么意思以及为什么永远是else的答案让我想不明白。所以麻烦有空的大神能帮忙解答一下菜鸡的困惑
最佳答案
2020-3-22 01:38:45
本帖最后由 jackz007 于 2020-3-22 01:42 编辑
Viper是个菜鸡 发表于 2020-3-22 01:25
你这么一说我突然明白这串错误的代码是怎么运行了,你说AB=input(‘ XXX:’)相当于把XXX打印出来然后等 ...


      AB 代表的是一个字符串对象,这个对象的内容却是可变的,就好比一个酒瓶是 AB,不管里面是矿泉水、酱油、醋、酒、果汁或是其它的任何东西,它都是 AB。
     你的问题是,
input('wo shi ni baba ma?:') 
     这一句实际执行从键盘读取输入,可是,由于没有安排变量保存,所以,键入的东西被函数返回后,却被直接丢弃了,而
AB = input
     这一句使变量 AB 等于函数 input() 的调用地址,与前一句代码从键盘输入的内容 'shi' 毫无关系,所以,无论从键盘输入的是什么,都会执行 else 分支的代码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-22 00:54:01 | 显示全部楼层
if input('wo shi ni baba ma?:') == 'shi' : print('ni zhen niu bi!')
else : print('bu wo jiu shi!')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 01:00:17 | 显示全部楼层
input()是一个python的内置函数,返回值是一个字符串,因此可以将input()赋值给一个变量。

input()可以有一个字符串类型的参数,该参数将会直接打印出来,作用是提示用户输入。

AB = input('wo shi ni baba ma?:')
也可以写成一下形式:
print('wo shi ni baba ma?:',end='')
AB=input()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 01:00:25 From FishC Mobile | 显示全部楼层
jackz007 发表于 2020-3-22 00:54

感谢大神的教学,不愧深得Python妹子的心,如此简单就完成想要表达的意思。不过那个困扰还是围绕着我这菜鸡
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 01:03:27 | 显示全部楼层
本帖最后由 jackz007 于 2020-3-22 01:08 编辑
Viper是个菜鸡 发表于 2020-3-22 01:00
感谢大神的教学,不愧深得Python妹子的心,如此简单就完成想要表达的意思。不过那个困扰还是围绕着我这菜 ...


        因为 AB = input(prompt) 的作用是显示 prompt 字符串,并等待用户输入,在用户有了键盘输入并按下回车后,函数会把键入内容以字符串的形式反馈给变量 AB。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 01:06:26 From FishC Mobile | 显示全部楼层
jackz007 发表于 2020-3-22 01:03
楼主的代码只要把下面 2 句

        合并为

对的,我第二次就是这样写的,正确的代码我理解了,就是这串错误的代码既然能运行哪就错的不离谱,就是不懂错误代码的逻辑,为什么能运行并且为什么一直给我else的答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 01:12:51 From FishC Mobile | 显示全部楼层
sunrise085 发表于 2020-3-22 01:00
input()是一个python的内置函数,返回值是一个字符串,因此可以将input()赋值给一个变量。

input()可以 ...

感谢大神的帮忙解答,让我更深入的了解了input 函数的解析,并且还提供了一种我没见过的全新的代码end的使用谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 01:13:20 | 显示全部楼层
本帖最后由 jackz007 于 2020-3-22 01:18 编辑
Viper是个菜鸡 发表于 2020-3-22 01:06
对的,我第二次就是这样写的,正确的代码我理解了,就是这串错误的代码既然能运行哪就错的不离谱,就是不 ...


      执行
AB = input('wo shi ni baba ma?:')
      语句,如果键盘输入的是 'shi' ,那么,AB 的内容就是 'shi'
if AB == 'shi' :
      的条件就能成立(逻辑表达 AB == 'shi' 为 True),就会接着执行
    print('ni zhen niu bi!')
      否则(键盘输入的内容不是 'shi'),if 条件不成立(逻辑表达 AB == 'shi' 为 False),就会执行:
    print('bu wo jiu shi!')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 01:25:40 From FishC Mobile | 显示全部楼层
jackz007 发表于 2020-3-22 01:03
因为 AB = input(prompt) 的作用是显示 prompt 字符串,并等待用户输入,在用户有了键盘输入并 ...

你这么一说我突然明白这串错误的代码是怎么运行了,你说AB=input(‘ XXX:’)相当于把XXX打印出来然后等待键盘输入,再把键盘输入的返还给AB这个变量,那我第一句代码input吧啦吧啦,相当于只是等待键盘输入一个东西,但是这个东西不属于任何的变量,所以其实第一句和AB=Input第二句其实语法没错所以能运行只是对于我想要表达的内容都没有意义。所以直接跳到If这一行,前面两行都是废物代码,哪如果直接从If这一行开始理解哪就明白了我写的是IF AB==‘shi’:吧啦吧啦哪直接相当于让Python 判断 AB这两个字母等于SHI这三个字母么?能这样理解么?所以一直给我的else的答案?因为AB和SHI根本就不是同样的字母
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 01:33:45 | 显示全部楼层
Viper是个菜鸡 发表于 2020-3-22 01:12
感谢大神的帮忙解答,让我更深入的了解了input 函数的解析,并且还提供了一种我没见过的全新的代码end的 ...

多看书多敲代码,熟能生巧。
end的这个用法只是print中的冰山一角。
关于print的用法可以看看我写的帖子。
Python细节之5、print输出函数的一些方法总结
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 01:35:00 From FishC Mobile | 显示全部楼层
sunrise085 发表于 2020-3-22 01:33
多看书多敲代码,熟能生巧。
end的这个用法只是print中的冰山一角。
关于print的用法可以看看我写的帖 ...

好的,大神我先收藏了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 01:38:45 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2020-3-22 01:42 编辑
Viper是个菜鸡 发表于 2020-3-22 01:25
你这么一说我突然明白这串错误的代码是怎么运行了,你说AB=input(‘ XXX:’)相当于把XXX打印出来然后等 ...


      AB 代表的是一个字符串对象,这个对象的内容却是可变的,就好比一个酒瓶是 AB,不管里面是矿泉水、酱油、醋、酒、果汁或是其它的任何东西,它都是 AB。
     你的问题是,
input('wo shi ni baba ma?:') 
     这一句实际执行从键盘读取输入,可是,由于没有安排变量保存,所以,键入的东西被函数返回后,却被直接丢弃了,而
AB = input
     这一句使变量 AB 等于函数 input() 的调用地址,与前一句代码从键盘输入的内容 'shi' 毫无关系,所以,无论从键盘输入的是什么,都会执行 else 分支的代码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 01:44:01 From FishC Mobile | 显示全部楼层
jackz007 发表于 2020-3-22 01:13
执行

      语句,如果键盘输入的是 'shi' ,那么,AB 的内容就是 'shi'

感谢大神花时间和我一个菜鸡讨论,我刚才去验证了我的想法确实是这样的,其实是个很简单的东西我却半天没想通,下面是我验证的代码
input('wo shi ni baba ma?:')
AB=input
if AB==AB:
    print('ni zhen niu bi')
else:
    print('bu wo jiu shi')
运行后得到的答案
wo shi ni baba ma?:SB
ni zhen niu bi
因为我前面写的都是废物代码,所以我输入什么内容也不重要,Python只会判断IF后面的两个等于符号两边的内容是不是想等,想等就是第一个答案,不想等就是第二个,其实在这代码的时候这个答案就固定了,前面两排代码不会影响结果。还让我了解到了只要输入了input这类的需要运行后需要返还的函数哪怕没有意义只要没返还也不会跳到下一个逻辑,那我这样是不是可以做一个虚假猜正确数字赢奖品的东西了,毕竟永远都不可能中奖永远是else的答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 01:46:11 From FishC Mobile | 显示全部楼层
jackz007 发表于 2020-3-22 01:38
AB 代表的是一个字符串对象,这个对象的内容却是可变的,就好比一个酒瓶是 AB,不管里面是矿泉水 ...

嗯嗯,对的就是这个意思,你说的明白多了,用的手机没办法边回复边看回复,操作有点慢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 01:55:48 | 显示全部楼层
本帖最后由 Judie 于 2020-3-21 12:59 编辑

input() 才是接受用户输入 一定要带括号呀!!
不带括号 的 input 就只是个内置函数 BIF (Built-In Function)


你把input赋值给AB
你AB的值就是个<built-in function input>
当然不等于‘shi’
当然一直else
当然 一直是else的答案 bu wo jiu shi

演示给你看呀
>>> input() 
hello
'hello'
>>> input
<built-in function input>
>>> ab1 = input
>>> ab1
<built-in function input>
>>> ab2 = input()
shi
>>> ab2
'shi'
>>> ab1 == "shi"
False
>>> ab2 == "shi"
True
>>> 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-3-15 00:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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