python_1

本文深入探讨了ROT13加密解密算法的工作原理,包括其在Python中的实现细节,如使用in操作符在字典和列表中的区别、join函数的运用以及append函数的功能。通过具体代码示例,读者可以详细了解如何应用这些技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2018/10/29 18:08
# @Author  : 薛豪
# @File    : rot13.py
import string
result=[]
upperCase=string.ascii_uppercase
lowerCase=string.ascii_lowercase
upperDict={}
lowerDict={}
print("欢迎来到rot13加密解密界面")
inputStr=input("请输入你要加密或解密的字符串")
while True:
    print("请确认%s是否为你想要输入的字符串,如果正确请输入y,否则输入n"%(inputStr))
    flag=input("请输入你的确认结果")
    if (flag=='y') or (flag=='Y'):
	    break
    if (flag=='n') or (flag=='N'):
	    inputStr=input("请重新输入你要加密或解密的字符串")
    else:
	    print("确认方式不合理")
	    break
for i in range(0,len(upperCase)):
    if i<13:
        upperDict[upperCase[i]]=upperCase[i+13]
    else:
        upperDict[upperCase[i]]=upperCase[i-13]
for i in range(0,len(lowerCase)):
    if i<13:
        lowerDict[lowerCase[i]]=lowerCase[i+13]
    else:
        lowerDict[lowerCase[i]]=lowerCase[i-13]
for ch in inputStr:
    if ch in lowerDict:
        result.append(lowerDict[ch])
    elif ch in upperDict:
        result.append(upperDict[ch])
    else:
        result.append(ch)
result=''.join(result)
print("最终加密结果为%s"%(result))

问题1  操作符in在字典与数组中的区别

答:

1.1字典中

描述:  Python 字典 in 操作符用于判断键(key)是否存在于字典(D)中,如果键在字典中返回True,否则返回False。

语法:

key in D

 参数:key -- 要在字典中查找的键。

 返回值:如果键在字典里返回True,否则返回False。

 实例:

#以下实例展示了 in 操作符 在字典中的使用方法:
#!/usr/bin/python3

D = {'Name': 'Runoob', 'Age': 7}

# 检测键 Age 是否存在
if  'Age' in D:
    print("键 Age 存在")  #键值Age存在
else :
    print("键 Age 不存在")

# 检测键 Sex 是否存在
if  'Sex' in D:
    print("键 Sex 存在")
else :
    print("键 Sex 不存在")  #键Sex不存在

 1.2列表中

在列表中in检查的是列表值,与字典不一样

问题2  join函数

答:

Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。

join()方法语法:

str.join(sequence)

参数

  • sequence -- 要连接的元素序列。

返回值

返回通过指定字符连接序列中元素后生成的新字符串。

实例

以下实例展示了join()的使用方法:
 

#!/usr/bin/python

# -*- coding: UTF-8 -*-

str = "-";

seq = ("a", "b", "c"); # 字符串序列

print str.join( seq );#a-b-c

记忆小方法:

str.join(元组、列表、字典、字符串) 之后生成的只能是字符串。

所以很多地方很多时候生成了元组、列表、字典后,可以用 join() 来转化为字符串。

list=['1','2','3','4','5'] 
print(''.join(list))

结果:12345

seq = {'hello':'nihao','good':2,'boy':3,'doiido':4} 
print('-'.join(seq)) #字典只对键进行连接

结果:hello-good-boy-doiido

问题3 append函数

答:

append() 方法用于在列表末尾添加新的对象。

语法

append()方法语法:

list.append(obj)

参数

  • obj -- 添加到列表末尾的对象。

返回值

该方法无返回值,但是会修改原来的列表。

实例

以下实例展示了 append()函数的使用方法:

#!/usr/bin/python 
aList = [123, 'xyz', 'zara', 'abc']
aList.append( 2009 )
print "Updated List : ", aList;、

以上实例输出结果如下:

Updated List : [123, 'xyz', 'zara', 'abc', 2009]

 

  1. 定义了两个函数一个用了extend()方法,一个用了append()方法

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    def changeextend(str):
        "print string with extend"
        mylist.extend([40,50,60]);
        print "print string mylist:",mylist
        return
    def changeappend(str):
        "print string with append"
        mylist.append( [7,8,9] )
        print "print string mylist:",mylist
        return
    mylist = [10,20,30]
    changeextend( mylist );
    print "print extend mylist:", mylist
    changeappend( mylist );
    print "print append mylist:", mylist
    

    输出结果:

    • print string mylist: [10, 20, 30, 40, 50, 60]
    • print extend mylist: [10, 20, 30, 40, 50, 60]
    • print string mylist: [10, 20, 30, 40, 50, 60, [7, 8, 9]]
    • print append mylist: [10, 20, 30, 40, 50, 60, [7, 8, 9]]

    通过比较可知:

    1.  列表可包含任何数据类型的元素,单个列表中的元素无须全为同一类型。
    2.  append() 方法向列表的尾部添加一个新的元素,可以是任意类型。
    3.  列表是以类的形式实现的。“创建”列表实际上是将一个类实例化。因此,列表有多种方法可以操作。extend()方法只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列表中。
# the CMake variable PYTHON_INSTALL_DIR has the same value as the Python function catkin.builder.get_python_install_dir() set(PYTHON_VERSION "$ENV{ROS_PYTHON_VERSION}" CACHE STRING "Specify specific Python version to use ('major.minor' or 'major')") find_package(PythonInterp ${PYTHON_VERSION} REQUIRED) message(STATUS "Using PYTHON_EXECUTABLE: ${PYTHON_EXECUTABLE}") set(_PYTHON_PATH_VERSION_SUFFIX "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}") set(enable_setuptools_deb_layout OFF) if(EXISTS "/etc/debian_version") set(enable_setuptools_deb_layout ON) endif() option(SETUPTOOLS_DEB_LAYOUT "Enable debian style python package layout" ${enable_setuptools_deb_layout}) if(SETUPTOOLS_DEB_LAYOUT) message(STATUS "Using Debian Python package layout") set(PYTHON_PACKAGES_DIR dist-packages) set(SETUPTOOLS_ARG_EXTRA "--install-layout=deb") # use major version only when installing 3.x with debian layout if("${PYTHON_VERSION_MAJOR}" STREQUAL "3") set(_PYTHON_PATH_VERSION_SUFFIX "${PYTHON_VERSION_MAJOR}") endif() else() message(STATUS "Using default Python package layout") set(PYTHON_PACKAGES_DIR site-packages) # setuptools is fussy about windows paths, make sure the install prefix is in native format file(TO_NATIVE_PATH "${CMAKE_INSTALL_PREFIX}" SETUPTOOLS_INSTALL_PREFIX) endif() if(NOT WIN32) set(PYTHON_INSTALL_DIR lib/python${_PYTHON_PATH_VERSION_SUFFIX}/${PYTHON_PACKAGES_DIR} CACHE INTERNAL "This needs to be in PYTHONPATH when 'setup.py install' is called. And it needs to match. But setuptools won't tell us where it will install things.") else() # Windows setuptools installs to lib/site-packages not lib/python2.7/site-packages set(PYTHON_INSTALL_DIR lib/${PYTHON_PACKAGES_DIR} CACHE INTERNAL "This needs to be in PYTHONPATH when 'setup.py install' is called. And it needs to match. But setuptools won't tell us where it will install things.") endif() 改那一句
最新发布
05-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值