python学习中的特殊问题

1. python中无char字符类型

2. python中"//"才是整除,c++整除用"/"

3. 96.54%10的值不会默认保留2位小数

print(98.12 / 10)
print(98.12 % 10)
print("%.2f" % (98.12 % 10))
print(98.12 // 10)

输出:

9.812000000000001
8.120000000000005
8.12
9.0

4. 2个变量赋值和交换可以直接写在同一行

#已知a,b都是变量,写出将a,b两个变量中的值互换的代码
a,b=1,2
a,b = b,a
print("a,b两个值互换",a,b)

输出:a,b两个值互换 2 1

5. 指定输出格式方式不同

#c语言直接 print("%d %s",score,"A")
#而python需要
print("%d %s" % (score,"A"))
print("%d" % score,"%s" % "A")

score=100
print("分数:%d 等级:%s" % (score,"A"))
print("分数:%d" % score,"等级:%s" % "A")

输出:

分数:100 等级:A
分数:100 等级:A

6. 位运算:python中的按位取反

~9 = -10
首先,把十进制数转化成二进制数,即 1001。
第二步,由于二进制数在内存中以补码的形式存储,所以我们需要把第一步得到的二进制数转成补码,要成补码,先把原码转化成反码。即 01001,(正数原反补一样)。第一个0为补充上去的符号位,最后得到补码01001。
第三步,按位进行取反,把第二步得到的补码进行按位取反(即10110)。
第四步,把第三步的操作转为补码(重点:二进制数在内存中以补码的形式存储!!),但是由于按位取反后变为负数,所以我们需要用负数的原反补规则,先每一位取反变成(11001),然后反码末尾+1得到补码(即11010);注意:负数符号位不参与变换,为1。
第五步,把第四步得到的补码转成十进制数就是结果,为 -10。

print(bin(~0b00110101))

输出:-0b110110

7. 选中内容,Tab键,缩进4个空格,Shift+Tab则返回

8. \t 制表符的使用

for m in range(1,10):
    for n in range(1,9):
        print("%2d × %d = %d" % (m,n,m*n),end=' ')
    print()
print()

输出:

加每个print的end中加了制表符之后:

# 使用制表符
for m in range(1,10):
    for n in range(1,9):
        print("%2d × %d = %d" % (m,n,m*n),end='\t')
    print()
print()

输出:

9. str.isdigit() 判断字符串是否只包含数字字符

score = input("请输入你的成绩:")
if score.isdigit():   #判断字符串是否只包含数字字符,判定输入的成绩是否是正整数
    score =int(score)  #把字符串转换成字符型
    if score >= 0 and score<=100:
        if score >= 80:
            print("奖金100元")
            print("假期10天")
        else:
            print("奖金 -100元")
            print("假期 -10天")
    else:
        print("请输入正确的成绩")
else:
    print("你输入的有错误,不是一个正整数类型")
print("结束")

输入:90a, 输出:你输入的有错误,不是一个正整数类型

输入:92.4,输出:你输入的有错误,不是一个正整数类型

输入:90,   输出:奖金100元
                                假期10天

输入:60,   输出:奖金 -100元
                                假期 -10天

10.只要执行return,函数就结束

return语句用于退出函数,并向调用方返回一个表达式,不带参数值的return语句返回None。

def find(lst,obj,start=0):
    if start < 0 or start >= len(lst):
        return -1
    for i in range(start,len(lst)):
        if lst[i] == obj:
            return i # 只要执行retur函数就结束
    return -1

nums = [1,2,3,4,5,6,7,8,5,4,3,2]
print(find(nums,4))

只找出第一个4的位置

输出:3

11. *args 和 **kwargs

*args是用来发送一个非键值对的可变数量的参数列表给一个函数。当传入的参数个数未知,且不需要知道参数名称时使用。

**kwargs 允许将不定长度的键值对作为参数传递给一个函数。如果想要在一个函数里处理带名字的参数时使用。

def func1(*args):
    print(type(args))
    for v in args:
        name = v[0]
        sex = v[1]
        age = v[2]
        print("name is %s , sex id %s , age is %s" % (name,sex,age))
    print()

func1(["张三","男",30],["李四","女",28],["王五","男",24])

def func2(**kwargs):
    print(type(kwargs))
    for k,v in kwargs.items():
        print(k,v)
    print()

func2(name="张无忌",age=36)

输出:

<class 'tuple'>
name is 张三 , sex id 男 , age is 30
name is 李四 , sex id 女 , age is 28
name is 王五 , sex id 男 , age is 24

<class 'dict'>
name 张无忌
age 36

12. lambda表达式

def func(x,y,z):
    return x + y + z
print(func(1,2,3))

f = lambda x,y,z:x+y+z
print(f(1,2,3))

输出:

6

6

13.ASCII码和字符串的转换

33-47          ! " # $ % & ' ( ) * + , - . /
48-57          数字0-9
123-126      { | } ~
97-122        小写字母a-z
91-96          : ; < = > ? @
65-90          大写字母A-Z
58-64          [ \ ] ^ _ `

ASCII码转字符:chr(int)    0-127
字符转ASCII码:ord(str)    单个可见ASCII字符串,不能中文和非ASCII码里的字符

# 编写函数contain_all_letter(words)检查一个字符串words是否包含所有英文字母(不区分大小写)
def contain_all_letter(words):                                                      
    for i in range(97,123):                                                         
        if words.find(chr(i)) == -1 and words.find(chr(i-32)) == -1:                
            return "不包含所有英文字母"                                                      
    else:                                                                           
        return "包含所有英文字母"                                                           
print("abcd",contain_all_letter("abcd"))                                            
print("ABCdefghijklmnopqrstuvwxyz",contain_all_letter("ABCdefghijklmnopqrstuvwxyz"))

输出:

abcd 不包含所有英文字母
ABCdefghijklmnopqrstuvwxyz 包含所有英文字母

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值