关于python的问题

Python021

关于python的问题,第1张

这里有两个知识点:

1、切片,比如有一个字符串:name = 'abcdef',那么在内存中存储如图

取e 是 name[4]或者name[-2]

取ef 是 name[:-2]或者name[:4]

取bc 是name[1:3]或者name[-5:-3] ,需要注意的是,“:”后面取的闭包,也就是不包括本身,这个例子里name[3]的 d是不包括的。

那么path[:-4]就好理解了,就是取字符串开头到 -4位置的字符串'c:\test.',不包括'h'。

2、转移字符

python系统中,如果在字符串中使用了一些特殊字符,比如换行、换行、tab制表符等等,还有一些特殊意义的字符,像“ 号,‘号,需要在字符前面加上“\”。即转义符,通俗的说,就是“\”后面的那个字符,不是字符原本的意思了,它代表了另一个字符。

比如常用到的\n是代表换行,\t是制表符。

但是有时候我们的字符串中,\号就是它本身的意思,不作为转义符,比如题目路径中的中的\号。这个时候就要在字符串前面加上一个'r',告诉系统,字符串里面的 \ 号,不是转义符。

所以,你的题目答案就是 c:\test.htm

当然,如果题目没有“r”,也就是 path='c:\test.html' 那么答案就变成了 c: est.htm  ,\t 做为了一个制表符处理。

你的程序大部分都没错,只是对列表my_list中的字符串元素"5"转数值元素时,要把转换结果赋值给原元素,

否则列表my_list没改变,导致处理字符串元素"5"时,出现不支持字符串和整数相除操作的错误.

完整的Python程序如下(改动的地方见注释,仅一处有问题)

my_list = [1, 2, 3, 4, "5"]

my_list[4]=int(my_list[4]) #这里把int(my_list[4])改成my_list[4]=int(my_list[4])

number = int(input("请输入一个number:"))

for i in my_list:

print(f"{i}/{number}={i/number}")

源代码(注意源代码的缩进)

主要问题和解决方法如下:

中文路径的问题:在D盘下保存一个名字为‘中文.txt‘的文件。运行如下测试代码:# -*- coding: utf-8 -*-f=open('D:\\中文.txt', 'r')print f.read(),运行后可以正确打印中文。

print打印中文的问题:在D盘下保存一个名字为‘中文.txt‘的文件。运行如下测试代码:# -*- coding: utf-8 -*-f=open('D:\\中文.txt', 'r')print f.read()字符串有很多的编码,不同的系统和平台有各自的编码 ,为了实现系统或平台之间的信息交互可能需要编码转换。这里只需要先使用UNICODE编码一下,这样再读取中文路径就不会有问题了。

所有的中文显示问题都可以归结为编码问题,遇到其他类似的问题,那只能仔细看文档,靠你的经验,靠你多做测试。而且根据python所报出来的错误一般也可以判断出来。那么当发现需要编码转换时,剩下的就是如何正确进行码制转换。

为了正确处理多语言文本,Python在2.0版后引入了Unicode字符串。从那时起,Python语言中的字符串就分为两种:一种是2.0版之前就已经使用很久的传统Python字符串,一种则是新的Unicode字符串。在Python语言中,一般的解决办法是使用unicode()内建函数对一个传统Python字符串进行“解码”,得到一个Unicode字符串,然后又通过Unicode字符串的encode()方法对这个Unicode字符串进行“编码”,将其“编码”成为传统Python字符串。