20课动动手第1题
我写的代码是:def a():
text = input('请输入文本:')
if '\n' in text:
text_new = text.replace('\n','1')
symbols = r'~!@#$%^&*()_+{}|:"<>?`-=[]\;,./'
length = len(symbols)
for i in range(length):
b = text_new.count(symbols)
print(symbols,'有',b,'个')
运行以后出错了,错误是
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
a()
File "C:/Users/ciic/Desktop/111.py", line 8, in a
b = text_new.count(symbols)
UnboundLocalError: local variable 'text_new' referenced before assignment
这里没看明白错误提示,两个疑问:1.我只有一个函数,为什么会提示local variable?2.我已经定义过text_new了,为什么说没有定义? def a():
text = input('请输入文本:')
text_new = text.replace('\n','1')
symbols = r'~!@#$%^&*()_+{}|:"<>?`-=[]\;,./'
length = len(symbols)
for i in range(length):
b = text_new.count(symbols)
print(symbols,'有',b,'个')
a()
因为input默认返回的是换行符之前的字符,if判断之后才定义text_new,不用判断换行符的存在 1q23w31 发表于 2020-8-31 15:49
因为input默认返回的是换行符之前的字符,if判断之后才定义text_new,不用判断换行符的存在
能再解释一下吗?还是不太清楚 pejayang 发表于 2020-8-31 15:51
能再解释一下吗?还是不太清楚
https://fishc.com.cn/forum.php?mod=viewthread&tid=142732&highlight=input
看一下input的用法,末尾的换行符会被丢弃,所以text里面没有换行符,也就不需要判断是否存在且替换
所以会说你的text_new没定义 def a():
text_new = input('请输入文本:')
symbols = r'~!@#$%^&*()_+{}|:"<>?`-=[]\;,./'
length = len(symbols)
for i in range(length):
b = text_new.count(symbols)
print(symbols,'有',b,'个') input获得的字符串是不可能含有'\n'的,因此第三行的if语句判断为假,所以没有定义变量 text_new,所以在第8行的时候使用 text_new 就出错了
直接把第3 、4行删掉,然后把第8行的的text_new改为text就可以了
def a():
text = input('请输入文本:')
symbols = r'~!@#$%^&*()_+{}|:"<>?`-=[]\;,./'
length = len(symbols)
for i in range(length):
b = text.count(symbols)
print(symbols,'有',b,'个') 没有考虑没替换字符的情况,这时候就没定义text_new
def a():
text = input('请输入文本:')
if 'someString' in text:
text = text.replace('someString','1')
symbols = r'~!@#$%^&*()_+{}|:"<>?`-=[]\;,./'
length = len(symbols)
for i in range(length):
b = text.count(symbols)
print(symbols,'有',b,'个') sunrise085 发表于 2020-8-31 18:45
input获得的字符串是不可能含有'\n'的,因此第三行的if语句判断为假,所以没有定义变量 text_new,所以在第 ...
我一开始是这样写的代码,运行以后发现代码只会统计第一段字符串里,结果是这样的:
~ 有 0 个
! 有 5 个
@ 有 8 个
# 有 3 个
$ 有 6 个
% 有 7 个
^ 有 6 个
& 有 4 个
* 有 4 个
( 有 2 个
) 有 4 个
_ 有 10 个
+ 有 4 个
{ 有 3 个
} 有 6 个
| 有 0 个
: 有 0 个
" 有 0 个
< 有 0 个
> 有 0 个
? 有 0 个
` 有 0 个
- 有 0 个
= 有 0 个
[ 有 4 个
] 有 4 个
\ 有 0 个
; 有 0 个
, 有 0 个
. 有 0 个
/ 有 0 个
所以我才加入了判断折行的代码 pejayang 发表于 2020-9-1 08:55
我一开始是这样写的代码,运行以后发现代码只会统计第一段字符串里,结果是这样的:
什么叫只会统计第一段字符串?
你程序中用的是input进行字符串输入,那么你输入一串字符之后敲回车就结束输入了。什么叫第一段字符串? 那我该怎么用这段代码统计所有文本中出现的符号数量呢?
页:
[1]