概述
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
}
最后
以上就是兴奋红牛为你收集整理的编程之旅-Day1Day1-学习内容:的全部内容,希望文章能够帮你解决编程之旅-Day1Day1-学习内容:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复