python 编程 求答案!2、3两题
#!/usr/bin/env python
#coding=utf-8
import re
from datetime import datetime as dt, timedelta
import platform
if platform.python_version()[:1] == '2': #判断python版本是2还是3
import sys
reload(sys)
sys.setdefaultencoding('utf8')
class Idcard(object):
'''
m = Idcard('225122198611134730')
print(m.sex)
男
m.birth
'1986-11-13'
m.age
30
'''
def __init__(self,idcard):
self.idcard = idcard
if len(idcard) == 15:
sex, birth = idcard[-1:], '19' + idcard[6:12]
elif len(idcard) == 18:
sex, birth = idcard[-2:-1], idcard[6:14]
else:
raise Exception('len(idcard) is {} (15/18)'.format(len(idcard)))
self._sex = int(sex) % 2
self._birth = birth
@property
def sex(self):
return u'男' if self._sex % 2 else u'女'
@property
def age(self):
now, bir = dt.now(), dt.strptime(self._birth, '%Y%m%d')
beforebirth = (now - dt(now.year, bir.month, bir.day)).days 0
return dt.now().year - int(self._birth[:4]) - beforebirth
@property
def birth(self):
return dt.strptime(self._birth, '%Y%m%d').strftime('%Y-%m-%d')
def alignment(str1, space, align = 'left'):
length = len(str1.encode('gb2312'))
space = space - length if space =length else 0
if align == 'left':
str1 = str1 + ' ' * space
elif align == 'right':
str1 = ' '* space +str1
elif align == 'center':
str1 = ' ' * (space //2) +str1 + ' '* (space - space // 2)
return str1
def main():
fname = 'customer.txt'
'''
with open(fname, 'w') as f:
f.write("""
郑文杰 225122198611134730
文萍 225122198912094740
郑妈妈 225122590303476
郑爸爸 225122560506471
""")
'''
newf = 'ourcustomers.txt'
with open(fname) as f:
s = f.readlines()
L, newL = [re.split(r'\s+', i.strip()) for i in s], []
for i in L:
if len(i) == 2:
g = Idcard(i[1])
newL.append('{}{}{}'.format(
alignment(i[0], 10), alignment(g.sex, 8), g.age))
with open(newf, 'w') as f:
f.write('\n'.join(newL))
print('\n'.join(newL[:100]))
print('Customer data has been write into {}'.format(newf))
if __name__ == '__main__':
import doctest
doctest.testmod()
main()
Python入门编程(1)变量
在开始本次的学习之前,我们先运行一下Test1.py。程序输出了 helloworld ,下面我们再进行一些更深入的思考,当这个文件被运行时,Python都做了些什么。
Test1.py
在运行这个文件时,它的 .py 后缀说明这是一个Python程序,因此 编译器 会使用 Python解释器 来运行它。接着解释器会读取整个程序,并且确认其中每个单词的含义。比如在这个程序中解释器遇到了 print() 这个单词,它便会把括号内的内容打印出来,而不管括号里面是什么。
在你编写程序时,编译器在会把程序中每个不同的不同用不同的颜色显示。比如 :
print (" helloworld ")
这种非常实用的方法叫做 语法突出 。
以上这些内容只是需要进行理解即可,接下来的内容我们便需要认真学习了。
让我们对 Test1.py 稍加修改,在这个程序中加入一个变量 sentence , 并且对print函数内的内容稍加修改,以便于让我们更好的认识变量。
通过这个程序的运行结果我们可见,修改之后的程序与先前的程序输出相同。在这里我们添加了一个名为 sentence 的变量,可知:
每个变量都储存了一个对应的值,这个值就是与变量相关联的信息。
现在我们对这个程序再加一点点的修改:
此时可以看出,同一个变量进行了两次不同的输出,这便是:
你可以随时在程序中修改变量的值,并且Python将变量的最新值记录下来。
程序员几乎每天都会犯错,下面这是一种我们初学阶段很有可能反的错误,下面我们来了解并学习如何解决它。
我们来看看这个新的程序。
Test2.py
在程序出现错误时,编译器无法对其进行下一步编译,此时编译器便会返回给我们一个 Traceback 。其是一条记录,它会解释器在运行代码时在哪里陷入困境,以上我提供的便是变量名拼写错误所被提供的 Traceback 。
编译器已经指出,在我运行Test2.py这个程序时,我们想输出的变量 sentece 并未被定义,程序无法找到识别我所提供的变量名。
名称错误的两种情况:1.在使用变量前未给变量赋值。2.变量名拼写错误。
在我这个提供的例子中,我们只需要将 sentece 修改为 sentence 便可以使程序正确运行了。
在创建程序中的变量名和编写代码时不必遵循英语的语法与拼写规则。
其实绝大多数的报错无非是在程序的某一行多写或少写一个字符,或是一些逻辑性的错误。在阅读Traceback以及寻找解决这些Bug的方法时我们应当 耐心 和 冷静 。这样会提升你解决问题的速度。
本次的文章对变量进行了初步的认识与学习,在接下来的文章中,我们将对更多Python中的相关知识进行阐述与学习。
本次的文章就先写到这里,下次我们将会进行对 数据类型 的学习。
python求答案
以下是一段Python程序,用于统计字符串“ab2b3n5n2n67mm4n2”中字符n出现的次数:
```python
string = "ab2b3n5n2n67mm4n2"
count = 0
for char in string:
if char == 'n':
count += 1
print(f"The character 'n' appears {count} times in the string.")
```
在这个程序中,首先定义了一个字符串 `string`,它包含了要进行统计的文本内容。然后,使用一个名为 `count` 的计数器变量来记录字符 `'n'` 出现的次数,初始化为零。
接下来,使用一个 for 循环遍历字符串中的每个字符,如果当前字符是 `'n'`,则将计数器加一。
最后,使用字符串插值(f-string)的方式输出结果到控制台上。
当你运行这个程序时,它将输出以下结果:
```
The character 'n' appears 6 times in the string.
```
这表明,在给定的字符串中,字符 `'n'` 出现了 6 次。