设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

集中答疑专用贴

  [复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

261#
发表于 2018-1-10 14:24:22 |只看该作者
pylearner 发表于 2018-1-10 02:58
两位老师好! 按照raw的意思是完全匹配''里面包含的字符串,例如r'\t'是匹配文本中的\t.那么为什么在找单词的 ...


转义是字符串层面
不要和正则表达式的符号搞混了
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

6

主题

0

好友

116

积分

注册会员

Rank: 2

262#
发表于 2018-1-10 15:05:18 |只看该作者
crossin先生 发表于 2018-1-10 14:24
转义是字符串层面
不要和正则表达式的符号搞混了

您说的还是有疑惑,既然正则表达式 \b 就表示空的一个位置,那么加上raw不是多此一举吗
回复

使用道具 举报

0

主题

0

好友

6

积分

新手上路

Rank: 1

263#
发表于 2018-1-10 15:10:40 来自手机 |只看该作者
老师您好,我是看了您的入门课程后自学Python简明教程,在输入与输出这一章遇到了问题,前来请教。

Python2.7   window
此段程序的目的是去除输入字符串中的几种特定标点符号
text=raw_input('Enter text:')
something=list(text)
munber=len(something)
print something
print munber
fo=('.',',','!',':',';',' ')
for i in range(0,int(munber)-1):
    if str(something[i]) in fo:
        del something[i]
print something

以下为两组测试结果:
=============== RESTART: E:/python程序/简明Python教程/tdsf.py ===============
Enter text:sdcdsc !
['s', 'd', 'c', 'd', 's', 'c', ' ', '!']
8
['s', 'd', 'c', 'd', 's', 'c', '!']
>>>
=============== RESTART: E:/python程序/简明Python教程/tdsf.py ===============
Enter text:wsdvcs  !!
['w', 's', 'd', 'v', 'c', 's', ' ', ' ', '!', '!']
10

Traceback (most recent call last):
  File "E:/python程序/简明Python教程/tdsf.py", line 9, in <module>
    if str(something[i]) in fo:
IndexError: list index out of range

我现在完全懵逼,这个报错的意思是list索引超出范围,是指range范围不对?那为什么另一组字符串输入会成功(仅指不报错)?
烦请老师解答QAQ,十分感谢
回复

使用道具 举报

6

主题

2

好友

654

积分

实习版主

Rank: 7Rank: 7Rank: 7

264#
发表于 2018-1-10 16:39:25 |只看该作者
Reine 发表于 2018-1-10 15:10
老师您好,我是看了您的入门课程后自学Python简明教程,在输入与输出这一章遇到了问题,前来请教。

Python ...

首先munber应该是number哈,和英文单词一致些也好用(不影响程序)

代码错误有两处,一是for i inrange(0,number)就好了,不要再-1;二是匹配到特殊符号时,直接删除元素,导致something的长度也-1了,而for循环还是用的原长度,就会导致index超出范围

你第一次测试时,something的长度是8,number=8, for i in range(0,number)是i=0-7可以覆盖所有something的元素,但是你用number-1了,导致最后一个元素是覆盖不到的。 也就是检测到空格那个元素时,删掉了something[6],那么'!'作为删之前的something[7]现在就成了新的something[6]保留了下来,也避开了对something[7]的检测,既没有报错也没有被删掉

解决方法自己试着找下吧

回复

使用道具 举报

0

主题

0

好友

6

积分

新手上路

Rank: 1

265#
发表于 2018-1-10 16:54:18 来自手机 |只看该作者
TED 发表于 2018-1-10 16:39
首先munber应该是number哈,和英文单词一致些也好用(不影响程序)

代码错误有两处,一是for i inrange( ...

一语惊醒梦中人,谢谢老师!
回复

使用道具 举报

6

主题

2

好友

654

积分

实习版主

Rank: 7Rank: 7Rank: 7

266#
发表于 2018-1-10 17:02:17 |只看该作者
Reine 发表于 2018-1-10 16:54
一语惊醒梦中人,谢谢老师!

我不是老师  不敢当哈
回复

使用道具 举报

6

主题

0

好友

116

积分

注册会员

Rank: 2

267#
发表于 2018-1-11 15:50:05 |只看该作者
本帖最后由 pylearner 于 2018-1-11 18:09 编辑
TED 发表于 2018-1-10 17:02
我不是老师  不敢当哈

ted老师好! 有三个小问题请教一下
1. 没有明白: raw完全匹配 '' 里面包含的字符串,例如r'\t'是匹配文本中的\t.那么为什么在找单词的时候前面会加上raw呢?那样不是匹配包含转义符的字符串吗?
python 3.63 os win10
#! python3
import re
text = 'site sea sue sweet see case sse se ssee ssssse loses'
x = re.findall( r"\bs\S*?e\b", text)

2. 按照我的系统win10安装了Python2.7 & 3.64 安装和环境都是正常配置好.(调用 py -3 和 py -2 都可以).但是在scripts前面加 #! /usr/bin/env python2 或者 #!python2 等都是启动python3.64. 怎么样写才能启动python2?
eg:
#! /usr/bin/env python2import sys
sys.stdout.write("hello from Python %s\n" % (sys.version,))

输出:
hello from Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)]
请问怎么办? 我没用其他ide试过.

问题三: 请问如何在def函数内定义key值为数字的字典

def printAll(**kargs):
    for k in kargs:
        print (k, ':', kargs[k])
        print (kargs)
printAll(a=1, b=(1,2), c=3,4 = 5)

各种改法都报错 keyword cant be an expression.

回复

使用道具 举报

6

主题

2

好友

654

积分

实习版主

Rank: 7Rank: 7Rank: 7

268#
发表于 2018-1-12 19:06:21 |只看该作者
pylearner 发表于 2018-1-11 15:50
ted老师好! 有三个小问题请教一下
1. 没有明白: raw完全匹配 '' 里面包含的字符串,例如r'\t'是匹配文本中 ...

第一个问题
字符串“\bs\S*?e\b”如果不处理,转义字符就会发挥作用,导致字符串成了“s\S*?”,按这个来进行正则表达式是不对的吧? 那我加个r“\bs\S*?e\b” 保证正则的时候是按着“\bs\S*?e\b”来,其中 \b \S是正则表达式中的代表,就不是转义字符了
第二个问题
我的个人解决方案是,把python2的python.exe改成python2.exe,运行py2时 我是运行python2就行了
第三个问题
同求答案。。
回复

使用道具 举报

6

主题

0

好友

116

积分

注册会员

Rank: 2

269#
发表于 2018-1-13 04:05:51 |只看该作者
TED 发表于 2018-1-12 19:06
第一个问题
字符串“\bs\S*?e\b”如果不处理,转义字符就会发挥作用,导致字符串成了“s\S*?”,按这个来 ...

谢谢 ted的回答!! 另外关于问题2, 你可能这样改不是用于命令行调用 python2/3 吗, 对scripts里面的 #! python3 有效果吗?  由此衍生一个问题 #之后不是被注释掉吗 为什么 # -*- coding: utf-8 -*- 会改变编码方式呢?
回复

使用道具 举报

0

主题

0

好友

33

积分

新手上路

Rank: 1

270#
发表于 2018-1-19 10:54:22 |只看该作者
请教高人:小可在微信40课(用文件保存游戏2)上碰到一点问题。


我和教程图片上写得一样,为何会出现‘times'没有定义?谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-22 04:55 , Processed in 0.072654 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部