第一更,另辟蹊径的python学习手册(一):https://blog.csdn.net/wingss2000/article/details/104433844
第二更,另辟蹊径的python学习手册(二):https://blog.csdn.net/wingss2000/article/details/104457881
第三更,另辟蹊径的python学习手册(三):https://blog.csdn.net/wingss2000/article/details/104480051
第四更,另辟蹊径的python学习手册(四):https://blog.csdn.net/wingss2000/article/details/104596995
第五更,另辟蹊径的python学习手册(五):
https://blog.csdn.net/wingss2000/article/details/104844563
首先我们先回到上一更最后所留下来的问题。
编程实现:
通过键盘输入十进制数x,以及要转换的进制N(N < 10),将此十进制数x转换为N进制数并输出。
当我们看到这道题目我们首先得知道,我们应该做什么。
进制转换是一种算法,我们在数学中也学习过进制转换的方法,我印象最深刻的一个方法就是除基取整法(该方法用于高进制向低进制进行转换,由题目我们可以发现,适用于该题目,而由低向高进行转换为乘基取整法)
这里我在百度百科中找到了一个关于辗转相除法实现的图片
总结为一句话就是:除基取余,反向写出。
这时我们的思路就变得清晰明朗了,我们首先需要得到两个输入,一个是:需要被转换进制的十进制数:另一个是:目标进制为N进制的N。(这里可以发现N即为我们所需要的:基)
然后将我们的所得到的第一个输入对第二个输入进行多次相除取整,直到除后得数为零。(这里需要注意除后取整,否则无法进行转换进制)
然后,最后一步,也是最关键的一步,我们需要进行将得到的每一次的结果进行反向输出。(这里我想到了列表类型的添加元素,并对其进行反向输出)
根据上述的思路我进行了下列代码的编写:
def reverse(text):
#定义了将列表反向的函数
reversed_text=[]
#定义反向列表为空列表
for i in range(len(text)):
#循环遍历需要被反向列表中的每一个元素
reversed_text.append(text[(len(text)-1-i)])
#将其反向加入上述定义的反向列表
return reversed_text
#函数返回已经反向的列表
if __name__ == '__main__':
x = eval(input("请输入要改变进制的十进制数:"))
#得到需要改变进制的十进制数,并将其转换为整数形式
N = eval(input("请输入要转换的进制(小于10):"))
#得到要转换成的进制,并将其转换为整数形式
list = []
#创建空列表,准备储存元素
while int(x % N) != 0 or int(x // N) != 0:
#进行while循环,当x对N取余,整除都为零时,循环停止
list.append(x % N)
#将每次循环的x对N取余,并将结果加入上述创建的空列表
x = x // N
#对x进行N整除后,进行下次循环判定
print('十进制转换为{},进制的结果为:'.format(N),end='')
#将其结果的提示信息先提前输出,但不进行换行,以便下列的结果输出
for i in reverse(list):
print(i,end = '')
#这两行代码为将反向好的列表进行输出
为了更好的融合代码进行讲解思路,我在每行代码后都进行了注释,希望大家可以习惯。(因为我个人学习的习惯,喜欢对代码进行逐行注释,这样会显得十分啰嗦,大家多多担待)
- eval()
该函数用来执行一个字符串表达式,并返回表达式的值。
其使用语法为:eval(expression[, globals[, locals]])
expression – 表达式。
globals – 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals – 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
这样看起来的eval()
函数似乎十分的难懂,但是其实我们只需要知道一点就行,那就是他被经常用来去掉括号中的元素的最外层的引号。
例子:
print(eval('1'))
>>>1
print(eval(1))
>>>TypeError: eval() arg 1 must be a string, bytes or code object
#类型错误,eval()中必须为字符串,字节或代码对象
#其实eval的功能就是将字符串表达式,返回其表达式的值
x = '1 + 1'
print(x)
>>> 1 + 1
print(eval(x))
>>> 2
- while
该函数的循环模式我们在第三更中进行过专门的讲述,当时我是这样描述的:
while()
函数又被称之为while Ture
函数,这是一种条件循环,只要括号里面的条件是正确的,被其所包含的函数则会循环运行,直到条件是错误的,则跳出循环。
该循环因为容易出现死循环的现象和拓展其功能,编译中有两个保留字是在此使用的:break和continue。
break:终止循环,跳出循环体
continue:中止当前本轮循环,开启下一轮循环
(在此进行温习,具体实例请见,另辟蹊径的python学习手册(三),文章开篇有传送门)
- for i in range()
该函数的循环模式我们也在第三更中进行过专门的讲述,且使用了较长的篇幅和大量的例子,大家可以前往第三更进行查看。
在上述代码中我们接触到了一个我们并没有接触过的内容——列表,在这里我们先对其进行一个简单的了解。列表是属于python中序列的一种。
序列是Python中最基本的数据结构。在序列中的每个元素都分配一个数字 - 它的位置或者称之为索引,第一个索引是0,第二个索引是1,依此类推。
Python有6个序列的内置类型,但最常见的是列表和元组。在这里我们讨论其列表类型。
序列都可以进行的操作包括索引,切片,加,乘,检查成员。(举例说明)
test_list = [1,2,3,4,5]
#我们先建立一个初始列表,在它的基础下进行举例说明
#索引
print(test_list[0])#输出列表中的第一个元素
>>>1
#切片
print(test_list[1:])#输出列表第一个元素后的元素
>>>[2,3,4,5]
print(test_list[:-1])#输出列表最后一个元素前的元素
>>>[1,2,3,4]
print(test_list[::-1])#倒序输出列表中所有元素
>>>[5,4,3,2,1]
#加
list1 = [99]
print(test_list + list1)#输出两列表之和
>>>[1,2,3,4,5,99]
#乘
print(test_list * 3)#输出三遍列表
>>>[1,2,3,4,5,1,2,3,4,5,1,2,3,4,5]
#检查成员
print('99' in test_list)#判断元素是否存在于列表中,返回True或False
>>>False
这里我们给出列表索引的正负方式的编号,以便大家进行记忆。(二级等考喜欢考这个知识点)
此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
len(list)
确定列表元素个数
max(list)
返回列表元素最大值
min(list)
返回列表元素最小值
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
list = [1,2,3,4,5,6]
列表的数据项不需要具有相同的类型
list2 = [1,2,3,4,6,'一','二']
列表的其他性质我将在下一更进行详细的分析。
因为疫情的原因大家都被迫宅家,然后博主因为自身的原因只能做到一周一更(单纯的懒),但是还是希望一直可以更新下去的,然后尽力把每一更写的更好,写的更加的内容充实,充满例子,因为我也只是处于学习阶段,所以大家一起进步吧!