fc5igm 发表于 2021-6-4 12:08:59

求问错误原因

本帖最后由 fc5igm 于 2021-6-4 12:13 编辑

>>> def huiwen(a):
        print(a)
        x=list(str(a))
        x1=x.copy()
        x1.reverse()
        if x==x1:
                print('是回文联')
        else:
                print('不是回文联')

               
>>> huiwen(123)
123
不是回文联
>>> huiwen(海上)
Traceback (most recent call last):
File "<pyshell#947>", line 1, in <module>
    huiwen(海上)
NameError: name '海上' is not defined
为什么整数就可以被成功定义,而字符串就不行?如果要想让字符串可以成功运行,应该怎么修改?
看起来貌似是字符串被默认当成了变量对待。有没有什么办法可以让他们被默认当做字符串而不是变量?

wp231957 发表于 2021-6-4 12:32:55

huiwen("海上")

wp231957 发表于 2021-6-4 12:33:38

字符串要加引号的,否则认为是一个变量

fc5igm 发表于 2021-6-4 12:38:22

wp231957 发表于 2021-6-4 12:33
字符串要加引号的,否则认为是一个变量

看起来貌似是字符串被默认当成了变量对待。有没有什么办法可以让他们被默认当做字符串而不是变量?

wp231957 发表于 2021-6-4 13:01:21

fc5igm 发表于 2021-6-4 12:38


三楼不是说了吗,要加引号,这句话理解不了吗

Twilight6 发表于 2021-6-4 13:29:17



海上 需要加引号才是字符串,若不加引号中文或字母是指变量对象

变量都需要先定义才能使用 所以导致报错

逃兵 发表于 2021-6-4 14:14:46

没有引号的非数字开头文字,会被python认为是变量名
没有引号的整数会被python认为是整型
没有引号的小数会被python认为是浮点数

加了引号之后,才是字符串

a 与 'a'是不同的
a 是变量名, 'a'是字符串
上海与'上海'是不同的
上海是变量名,'上海'是字符串
1 与'1'是不同的
1是整型,'1'是字符串
...

fc5igm 发表于 2021-6-4 16:17:12

逃兵 发表于 2021-6-4 14:14
没有引号的非数字开头文字,会被python认为是变量名
没有引号的整数会被python认为是整型
没有引号的小数 ...

所以没有办法让python默认函数括号内的值为字符串么?
往函数中添加input函数是否可行呢?

灰晨 发表于 2021-6-4 16:40:48

fc5igm 发表于 2021-6-4 16:17
所以没有办法让python默认函数括号内的值为字符串么?
往函数中添加input函数是否可行呢?

可以的。huiwen(input()),因为input返回的就是字符串

fc5igm 发表于 2021-6-4 16:49:50

灰晨 发表于 2021-6-4 16:40
可以的。huiwen(input()),因为input返回的就是字符串

>>> huiwen(input(aaa))
Traceback (most recent call last):
File "<pyshell#1126>", line 1, in <module>
    huiwen(input(aaa))
NameError: name 'aaa' is not defined
貌似这么使用是不可行的?好像直接把'aaa'这个字符串当作变量了?

Twilight6 发表于 2021-6-4 16:54:25

本帖最后由 Twilight6 于 2021-6-4 16:55 编辑

fc5igm 发表于 2021-6-4 16:49
貌似这么使用是不可行的?好像直接把'aaa'这个字符串当作变量了?


... 你 aaa 也需要引号

在 Python 中,没引号的 字母、汉字,若没有提前定义,那么就属于变量范畴

就需要提前赋值,而字符串带引号,就像列表带 [] ,字典、集合带 {}

这是 Python 的语法要求,你必须遵守

灰晨 发表于 2021-6-4 17:00:55

。。。。input括号里的内容跟print差不多的,用来打印提醒内容的,你运行之后输入的内容才不需要引号

fc5igm 发表于 2021-6-4 17:05:58

灰晨 发表于 2021-6-4 16:40
可以的。huiwen(input()),因为input返回的就是字符串

>>> huiwen('aaa')
aaa
是回文联
>>> huiwen(input(aaa))
Traceback (most recent call last):
File "<pyshell#1126>", line 1, in <module>
    huiwen(input(aaa))
NameError: name 'aaa' is not defined
>>> huiwen(input('aaa'))
aaa

是回文联
>>> huiwen(input('aaa'))
aaa

是回文联
>>> huiwen(input('aaa'))
aaa123
123
不是回文联
>>> huiwen(input('aaa'))
aaaaaa
aaa
是回文联
比较有意思,貌似是先执行了第二行的print指令,然后又跳回开头执行了input,再继续执行下面的。不同于一般函数按照1、2、3、4、5、6...的顺序执行,加了input反而变成了2、1、2、3、4、5、6...的顺序

灰晨 发表于 2021-6-4 17:17:59

顺序:
1.huiwen(input('aaa'))
2.需要先得到input('aaa')
3.打印input括号里的内容,这里是aaa
4.手动输入你想输入的值,比如bbb
5.返回字符串,huiwen(‘bbb’)
6.开始进入函数
7.print(a)
8.判断是否是回文联
页: [1]
查看完整版本: 求问错误原因