Python基础练习 待更~

'''#Leecode答案全解https://www.cnblogs.com/grandyang/p/4606334.htmldef moveZeroes(nums): """ :type nums: List[int] :rtype: None Do not return anything, modify nums in-place instead. """ a = 0 k = 0 while k < len(nums):
摘要由CSDN通过智能技术生成
'''
#Leecode答案全解https://www.cnblogs.com/grandyang/p/4606334.html
def moveZeroes(nums):
    """
    :type nums: List[int]
    :rtype: None Do not return anything, modify nums in-place instead.
    """
    a = 0
    k = 0
    while k < len(nums):
        if nums[a] == 0:
            nums.append(0)
            nums.pop(a)
        else:
            a += 1
        k += 1
    return nums


if __name__ == '__main__':
    nums = [1,0,0,3,12]
    print(moveZeroes(nums))

    def plusOne(digits):

        for i in range(len(digits) - 1,-1,-1):
            digits[i]=digits[i]+1
            digits[i] = digits[i] % 10
            if digits[i] != 0:
                return digits

        digits.insert(0, 1)
        return digits
if __name__ == '__main__':
    digits = [1, 9, 5, 2]
    print(plusOne(digits))

#最大子序和
def maxSubArray( nums):
    sum=0
    ret=nums[0]
    for i in range (0,len(nums)):

        sum=sum+nums[i]
        ret=max(ret,sum)
        if sum < 0:
            sum = 0
    return ret

if __name__ == '__main__':
    nums = [-2,1,-3,4,-1,2,1,-5,4]
    print(maxSubArray(nums))
#数字组合
# !/usr/bin/python
# -*- coding: UTF-8 -*-
count=0
for i in range(1, 5):
    for j in range(1, 5):
        for k in range(1, 5):
            if (i != k) and (i != j) and (j != k):
                print(i, j, k)
                count = count + 1
print(count)

#个人税
i=int(input ('profit is: '))
thresholds=[1000000,600000,400000,200000,100000,0]
rates= [0.01,0.015,0.03,0.05,0.075,0.1]
sum=0
for j in range(0,6):
    if(i>thresholds[j]):
        sum=sum+(i-thresholds[j])*rates[j]
        i=thresholds[j]
print(sum)
#3 完全平方
import math
for i in range(-100,10000):
    m1=math.sqrt(i+100)
    m2=math.sqrt(i+100+168)
    if(m1==int(m1)):
        if(m2==int(m2)):
            print(i)
#n = int(math.sqrt((i + 100)))
for i in range(-100,10000):
    m=(i+100)**0.5
    n=(i+268)**0.5
    if(m==int(m)):
        if(n==int(n)):
            print(int(i))


#4 这一年的第几天
# -*- coding: UTF-8 -*-
def isLeapYear(y):
    return (y % 400 == 0 or (y % 4 == 0 and y % 100 != 0))


DofM = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30]
res = 0
year = int(input('Year:'))
month = int(input('Month:'))
day = int(input('day:'))
if isLeapYear(year):
    DofM[2] += 1
for i in range(month):
    res += DofM[i]
print(res + day)

#排序 sort()函数https://blog.csdn.net/guoyang768/article/details/84428171
lst=[]
for i in range(3):
    m=input("请输入第%i个整数"%(i+1))
    if m.isdigit():#isdigit检测字符串是否只由数字组成,如果字符串只包含数字则返回 True 否则返回 False
        lst.append(m)
    else:
        print('输入数据不是数字')
lst.sort()
print(lst)
#以下是对数列lst的输出
for i in range(len(lst)):
    print(lst[i])

    #定义一个空数组
numbers = []
#循环遍历,下面的4是控制循环次数
for i in range(4):
    if i > 0:
        x = int(input(f"请输入第{i}个整数:"))
        #把用户输入的数传递到定义的numbers数组中
        numbers.append(x)
#输出未排序之前的数字
print(f"未排序之前是:{numbers}")
#让数字从小到大排序
print("由小到大排序完后是:",sorted(numbers))
#让数字从大到小排序
numbers.sort(reverse=True)
print(f"由大到小排序完后是:{numbers}")
#输出最大值
print(f"最大数是:{max(numbers)}")
#输出最小值
print(f"最小数是:{min(numbers)}")



def maxSubArray(nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    sum = 0
    ret=nums[0]
    for i in range(len(nums)):
        sum = sum + nums[i]
        ret=max(ret,sum)
        if sum < 0:
            sum = 0
    return ret
if __name__ == '__main__':
    nums = [-2,1,-3,4,-1,2,1,-5,4]
    print(maxSubArray(nums))
#判断是否存在重复元素
class Solution(object):
    def containsDuplicate(self, nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        d = {}
        for num in nums:
            if num not in d:
                d[num] = 0
            else:
                return True
        return False

        #return False if len(nums) == len(set(nums))  else True
        #set(nums),集合会直接删除重复元素然后判断集合是否和列表等长,等长返回False 不等长说明有重复数,返回True

#零钱兑换
def coinChange( coins, amount):
    """
    :type coins: List[int]
    :type amount: int
    :rtype: int
    """
    dp = [float("inf")] * (amount + 1)#创建一个列表
    dp[0] = 0
    for i in range(1, amount + 1):
        for coin in coins:
            if (i >= coin):
                dp[i] = min(dp[i], dp[i - coin] + 1)
    return dp[-1] if (dp[-1] != float("inf")) else -1
if __name__ == '__main__':
    coins = [1,2,5]
    print(coinChange(coins,11))

#斐波那契 生兔子 0 1 1 2 3 5 8
#!/usr/bin/env Python
#coding=utf-8
a,b = 0,1
lst = [0,1]
for i in range(2,10):
        a,b = b,a+b #关键在这句先计bai算等值 右边 那么 b=1 a+b=1 再赋值给a和b,那么 a=1, b=1
        lst.append(b)
print(a)
print(lst)

#数据列表复制
a = [1, 2, 3]
b = []
for i in range(3):
    b.append(a[i])
print(b)
# 将b的值赋予a;
#a[0:3]表示使用切片从0位置开始到第3位置结束;
# a[:3]表示使用切片从开始位置开始到第3位置结束;
# a[0:]表示使用切片从0位置开始到结束;
# a[:]表示从开始到结束,这是最简化写法;
a = [1, 2, 3]
b = a[0:3]
c = a[:3]
d = a[0:]
e = a[:]
print(b)
print(c)
print(d)
print(e)


#str(I) 是把bai整型数i按照字符du串对待。+就是把字符串连接起来。"*" 就是一个星号了。str(j)就是把整型数j按照字符串对待。"="就是一个等号了。i% * j% 就是整数i乘以整数j的积了5*6= 30
#99乘法表
for i in range(1,10):
    for j in range(1,i+1):
        #print('%d*%d=%2ld '%(j,i,i*j),end='')
        print  (str(i)+"*"+str(j)+"="+str(i*j),end=" ")

    print()

#暂停一秒输出
#-*- coding:utf-8 -*-

import time

L = [1,2,3]
for i in range(len(L)):
    print (L[i])
    time.sleep(1)
    print (time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())) ) #格式化输出当前时间

import time
for i in range(4):
    print(str(int(time.time()))[-2:])
    time.sleep(1)

#素数

from math import sqrt

p=range(101,201)
aList=list(p)
for i in range(101,201):
    for j in range(2,int(sqrt(i)+1)):
        if i % j==0:
            aList.remove(i)
            break
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值