编程之旅-Day1

52 篇文章 0 订阅
48 篇文章 0 订阅

Day1-学习内容:

(1)python 2与python 3区别

(2)python函数

(3)leetcode编程

例1:在数组中找出和为目标值的两个整数,返回数组下标。

(4)剑指offer

面试题16:数值的整数次方

 

1.python 2与python 3区别

(1)print

  (2) unicode编码

Python 2 有 ASCII str() 类型,unicode() 是单独的,不是 byte 类型。

在 Python 3,有了 Unicode (utf-8) 字符串以及一个字节类:byte 和 bytearrays, 默认使用utf-8编码。

(3)除法

python 3:地板除法,输出浮点数

(4)异常

python 3:捕获异常的语法由 except exc, var 改为 except exc as var

(5)xrange

python 3:不存在xrange

(6)八进制自变量表示

八进制数必须写成0o777,原来的形式0777不能用了;二进制必须写成0b111。

新增了一个bin()函数用于将一个整数转换成二进制字串。 Python 2.6已经支持这两种语法。

在Python 3.x中,表示八进制字面量的方式只有一种,就是0o1000。

(7)不等运算

Python 2.x中不等于有两种写法 != 和 <>

Python 3.x中去掉了<>, 只有!=一种写法

(8)去掉了repr表达式``

  (9) 数据类型

1)Py3.X去除了long类型,现在只有一种整型——int,但它的行为就像2.X版本的long 

2)新增了bytes类型,对应于2.X版本的八位串,定义一个bytes字面量的方法如下

3)str对象和bytes对象可以使用.encode() (str -> bytes) or .decode() (bytes -> str)方法相互转化。

4)dict的.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函数都被废弃。同时去掉的还有 dict.has_key(),用 in替代它

(10)多个模块被改名

 

2.python函数

(1)repr() 函数将对象转化为供解释器读取的形式。

  (2)  pass 是空语句,是为了保持程序结构的完整性, pass 不做任何事情,一般用做占位语句。

(3)可迭代:在Python中如果一个对象有__iter__( )方法或__getitem__( )方法,则称这个对象是可迭代的(Iterable);其中__iter__( )方法的作用是让对象可以用for ... in循环遍历,__getitem__( )方法是让对象可以通过“实例名[index]”的方式访问实例中的元素

(4)迭代器:在Python中如果一个对象有__iter__( )方法和__next__( )方法,则称这个对象是迭代器(Iterator);其中__iter__( )方法是让对象可以用for ... in循环遍历,__next__( )方法是让对象可以通过next(实例名)访问下一个元素。注意:这两个方法必须同时具备,才能称之为迭代器。列表List、元组Tuple、字典Dictionary、字符串String等数据类型虽然是可迭代的,但都不是迭代器,因为他们都没有next( )方法。

 

3.leetcode编程

例1:在数组中找出和为目标值的两个整数,返回数组下标

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

错误解法:

class Solution:
    def twoSum(self, nums, target):
        for i in range(len(nums)):
            for j in range(i+1, len(nums)):
                if nums[i] + nums[j] == target:
                    return [i,j]
                    break        

错误原因:超出时间限制

正确解法:

class Solution:
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        hashmap = {}
        for index, num in enumerate(nums):
            another_num = target - num
            if another_num in hashmap:
                return [hashmap[another_num], index]
            hashmap[num] = index
        return None

 

4.剑指offer

面试题16:数值的整数次方

#include <iostream>
#include <cmath>

bool g_InvalidInput = false;
bool equal(double num1,double num2);
double PowerWithUnsignedExponent(double base,unsigned int exponent);

double Power(double base, int exponent){
    if(equal(base,0.0) && exponent<0)
       g_InvalidInput = TRUE;
       return 0.0;
    unsigned int absExponent = unsigned int(exponent);
    if(exponent <0)
        absExponent = (unsigned int)(-exponent);
    double result = PowerWithUnsignedExponent(base, absExponent);
    if (exponent <0)
        result = 1.0/result;
    printf("result");
    return result;
};
bool equal(double num1, double num2){
    if ((num1-num2<0.0000001)&&(num2-num1<0.0000001))
        return TRUE
    else
        return FALSE
}
double PowerWithUnsignedExponent(double base, unsigned int exponent){
    if (exponent==0)
       return 1;
    if (exponent==1)
       return base;
    double result = PowerWithUnsignedExponent(base, exponent>>1)
    result *= result 
    if(exponent&0X1=1)
        result*=base
    return result
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值