1作业python数据类型 条件循环 列表

变量

python中不用像C++一样先定义数据类型再赋值,可以直接赋字符串类型、字典类型、元组类型、列表类型:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
python的变量名只能包含数字 字母 下划线,不能以python的关键字命名,可以以下划线开头,字符串可以以单引号或者双引号括起来,拼接字符串不需要像c++那样用特殊的函数比如strcat函数(c++中用来拼接两个字符串的函数),python中可以**直接用加号连接,**如:
在这里插入图片描述
python中也有一些转义字符,如\t,\n
★python中一个特别的方法:
Python能够找出字符串开头和末尾多余的空白。即方法rstrip() 。
(不知道是不是版本问题,我一直用这个方法以后空格并没有减少)

Python将带小数点的数字都称为浮点数,输出时的小数点位数:
在这里插入图片描述
(不知为什么最后还带了一个4)
两个位数不一样时,按照位数高的输出了:
在这里插入图片描述

★用函数str() 避免类型错误
如在同时输出字符串和数字时:
在这里插入图片描述
由于python无法识别age是什么类型因此报错,添加上str表明显式地指出你希望Python将这个整数用作字符串:
在这里插入图片描述

python的位运算

输出数字的二进制形式:
在这里插入图片描述

不同的数据类型

*列表

*:用[]
python中有一个title方法可以把单词第一个字母转为大写:
在这里插入图片描述
和c++一样索引下标从0开始。

排序:

nums=[1,23,412,-1]
nums.sort()
for i in iter(nums):
    print(i)

在这里插入图片描述

Python中遍历列表有以下几种方法:

一、for循环遍历

for item in lists:
print(item)

运行结果:
在这里插入图片描述

二、while循环遍历:

nums=['liang','guo','jing']
count = 0
nums.sort()
while count < len(nums):
    print(nums[count])
    count = count+1

count = 0

while count < len(lists):

print(lists[count])

count = count + 1
结果:
在这里插入图片描述
发现有英文的列表是按照字母顺序来排的。猜测是asii码

三、索引遍历:

在这里插入图片描述

nums=['liang','guo','jing']
count = 0
nums.sort()
for index in range(len(nums)):
    print(nums[index])

四、使用iter()

for val in iter(lists):
print(val)
五、enumerate遍历方法

for i, val in enumerate(lists):
print(i, val)
运行结果:

当从非0下标开始遍历元素的时候可以用如下方法

for i, el in enumerate(lists, 1):

print(i, el)
for i, el in enumerate(lists, 1):

print(i, el)
运行结果:

习题

3-1 姓名: 将一些朋友的姓名存储在一个列表中,并将其命名为names 。依次访问该列表中的每个元素,从而将每个朋友的姓名都打印出来。

在这里插入图片描述

3-2 问候语: 继续使用练习3-1中的列表,但不打印每个朋友的姓名,而为每人打印一条消息。每条消息都包含相同的问候语,但抬头为相应朋友的姓名。

 xingming=['梁','李','张']
 for i in range(len(xingming)):
     print(xingming[i]+'你在干啥呀')

输出:
梁你在干啥呀
李你在干啥呀
张你在干啥呀

位运算:136. 只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

说明:
一开始自己想的是很直接的遍历。。。:

nums=[1,2,1]
 nums.sort();
 b = len(nums)
 if nums[0] != nums[1]:
     print(nums[0])
 if nums[b - 1] != nums[b - 2]:
     print(nums[b - 1])
 for index in range(1, len(nums) - 1):
     mm = nums[index - 1]
     nn = nums[index + 1]
     if mm != nums[index] and nn != nums[index]:
         print(nums[index])

在pycharm里面测试是可以输出只出现一次的元素
然后官方是这样解的:

 def singleNumber(self, nums: List[int]) -> int:
        return reduce(lambda x, y: x ^ y, nums)

搞不懂为什么官方的代码也跑不成功,说是缩进有问题,我看了半天明明缩进是正常的,服了

一些特殊的用法(c++中没有的

1.python中的if表示与和或用and or
2.reduce函数:
第一个参数为方法,第二个参数为列表:
3.lambda

reduce:

li1=[1,3,412,1]
 suum = reduce(add,li1)
 print(suum)

发现中文也可以直接拼接:
在这里插入图片描述

在这里插入图片描述
lambda:
表达式 = lambda [parameters,即参数] : [func,即执行的运算过程]

lambda结合异或运算:

由于力扣的题目一开始并没有想到用异或运算,位运算在C++也用得不多,看见官方题解是异或运算,于是去了解了一下,还是挺简洁的。

 yy = lambda x,y,z:x^y^z
 m = yy(3,3,7)
 print(m)

在这里插入图片描述

附:python的关键字+内置函数

关键字:
False class finally is return
None continue for lambda try
True def from nonlocal while
and del global not with
as elif if or yield
assert else import pass
break except in raise

函数:
abs() divmod() input() open() staticmethod()
all() enumerate() int() ord() str()
any() eval() isinstance() pow() sum()
basestring() execfile() issubclass() print() super()
bin() file() iter() property() tuple()
bool() filter() len() range() type()
bytearray() float() list() raw_input() unichr()
callable() format() locals() reduce() unicode()
chr() frozenset() long() reload() vars()
classmethod() getattr() map() repr() xrange()
cmp() globals() max() reversed()zip() Zip()
compile() hasattr() memoryview() round() import()
complex() hash() min() set() apply()
delattr() help() next() setattr() buffer()
dict() hex() object() slice() coerce()
dir() id() oct() sorted() intern()

从键盘输入然后相加:

 a=input()
 b=input()
 c=int(a)+int(b)
 print(c)

循环练习题+龟兔赛跑

1、编写一个Python程序来查找那些既可以被7整除又可以被5整除的数字,介于1500和2700之间。
结果:
在这里插入图片描述

 for i in range(1500,2700):
     if i % 5 == 0 and i % 7 == 0:
         print(i,end=" ")
         if i % 100 == 0:
             print('\n')

2、龟兔赛跑游戏

在这里插入图片描述
代码:

if __name__ == '__main__':
 # a, b = map(lambda x: int(x), input("请输入两个数:").split())
 # print(type(a), a)
 v1=int(input())
 v2=int(input())
 t=int(input())
 s=int(input())
 l=int(input())
 print(int(v1)+int(v2))
 i = int(l)/int(v2)
 print(i)
 s1 = int(0)
 s2 = int(0)
 time = int(0)
 tt = int(0)
 length = int(i)
 while time < (length):

     time=time+1
     s1 = s1+v1
     s2 =  s2+ v2
     print(s1)
     if s1-s2 == t:
         s2 = s2+s*v2
         time = time+ s

     if s1== l and s2 != l:
         print('R '+str(time))
     if s1 != l and s2 == l:
         print('T '+str(time))
     if s1 == l and s2 == l:
         print('D '+str(time))



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值